inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기

[과제1] Wrapper를 활용하여 Simulation vs. FPGA vs. ASIC 각각의 모델 설계하기

[과제2] Wrapper 관련 질문입니다.

해결된 질문

178

장재혁

작성한 질문수 1

0

자료 공유해주신 wrapper verilog 코드와 강의 마지막 RTL 합성 결과에서 din[31:0] 이 din[7:0]으로 instantiation 되어있는데 input 크기가 달라서 문제가 되는 것 아닌지 문의 드립니다.

 

module 이름의 64x8로 미루어 볼 때, 과제는 WIDTH=64, DEPTH=8을 가지는 SRAM을 구현하는 것으로 보이는데 그렇다면 공유해주신 코드

`ifdef SIM

sram_model #(64, 8) u_sram (clk, cs, we, ad, din, dout);

에서 파라미터를 넘겨주는 값이 (64, 8)이 아니고 (8, 64)가 맞는 것이 아닌지 해서 질문드립니다. 감사합니다.

컴퓨터-구조 verilog-hdl fpga 임베디드 amba

답변 2

1

회로설계 멘토 삼코치

안녕하세요, 답변 남겨드립니다.

“합성 결과 din[31:0] → din[7:0]으로 instantiation 된다”라는 것은, 상위 모듈 관점에서 32비트 신호를 넘겼지만 실제 인스턴스 내부는 8비트만 사용하고 있어서, 나머지 24비트(din[31:8])가 무시되었기 때문입니다.

즉,

  1. Wrapper 선언부가 parameter WIDTH=32 → 포트에서 din[31:0]

  2. 내부 인스턴스는 #(64,8) → 폭이 8비트

  3. 따라서 내부에서 din[7:0]만 유효

  4. 합성기 리포트엔 “상위 32비트 중 8비트만 매핑됨”이라고 표시

이렇게 된 것입니다.

의도에 따라 “(Depth=8, Width=64)”를 의도했다면, 즉 “8개의 주소 × 64비트”가 필요하면 sram_model #(8,64)로 사용해야 하고, Wrapper 및 상위 설계도 모두 그에 맞춰 수정해야 합니다. 반대로 “64개의 주소 × 8비트”가 맞다면 sram_model #(64,8)을 사용하면 됩니다.

즉, “64×8”이 ‘64비트 × 8워드’가 아니라, ‘64워드 × 8비트’임에 주의해서 작성하신 코드와 과제 요구사항을 맞추시면 됩니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 장재혁님.

질문 주신 내용은 Verilog 코드에서의 파라미터 명칭과 그에 따른 데이터 버스 크기에 관한 것입니다. 일반적으로 SRAM 등의 메모리 모듈을 만들 때, WIDTH와 DEPTH는 메모리 설계 시 중요한 요소입니다. 각각의 값이 잘못되면 올바른 데이터 처리가 이루어지지 않을 수 있습니다.

  1. 파라미터의 정의 및 의미:

    • WIDTH는 메모리 셀 당 데이터 비트 수를 의미합니다. 예를 들어, WIDTH=64는 하나의 메모리 셀이 64비트 데이터를 저장할 수 있음을 나타냅니다.
    • DEPTH는 메모리 셀의 개수를 나타냅니다. DEPTH=8은 8개의 메모리 셀을 나타내며, 이는 총 저장 가능한 데이터 블록의 수를 의미합니다.
  2. RTL 합성과 코드에서의 파라미터 사용:

    • 질문하신 내용에서 sram_model #(64, 8)의 경우, 제대로 정의되었다면 WIDTH=64, DEPTH=8이 맞습니다. 만약 의도와 달리 사용하셨다면, 실제 sram_model 내부 구현에서의 비트 너비와 인덱스가 엇갈릴 수 있습니다.
    • Verilog에서는 일반적인 방법으로 모듈을 정의할 때 포트 매칭에 신경을 써야 합니다. 특히 instantiation하는 과정에서 정확한 파라미터와 포트 매칭이 중요합니다.

다음은 유사한 주제를 다룬 게시글이니 참고하시면 도움이 될 것입니다:
- Digital IP 설계과제 관련 정리

질문자님이 지적하신 것처럼 코드 내의 파라미터와 포트 정의가 체계적으로 이루어졌는지 여러 번 교차 확인해 보시는 것이 좋습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

강의 만료일 연장 신청

0

33

2

강의자료 pdf파일

0

89

2

수강기간변경

0

75

2

프로그램 종류

0

90

1

안녕하세요 강의 도중 궁금한 점 있어서 질문드립니다!

0

87

1

수강기간 변경관련

0

65

2

수강기간 만료

0

72

2

수강 연장 문의

0

71

2

I2C SCL_Synched, SDA_Synched 질문

0

84

1

no data path질문

0

102

3

SRAM 강의 modelsim 시뮬레이션에서 inner 메모리를 Objects 리스트에서 찾으려고 하는데 안보입니다.

0

89

2

DataMem 스펙 질문

0

54

1

Hamming Code 질문

0

66

1

W_CRC 값 질문하기

0

60

1

Precharge에 대한 질문

0

167

1

tpsram spec 질문

0

64

2

학습 관련 질문 있습니다!

0

88

2

[과제7] AXI 통신 프로토콜 설계하기 문의드립니다

0

94

2

SRAM 강의 TB 작성 후 waveform 확인시에 dout이 모두 don't care 처리 관련 질문드립니다.

0

105

5

SRAM Interface Behavior(Diagram) 질문

0

133

3

vivado와 quartus 프로그램의 systhesis 결과 차이에 대해 궁금한 점 있습니다

0

185

2

tool 질문

0

92

2

CDC 메타스태빌리티 질문

0

66

1

SRAM module RTL viewer 이상

0

97

2