인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

장재혁님의 프로필 이미지

작성한 질문수

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

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

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

해결된 질문

작성

·

36

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)가 맞는 것이 아닌지 해서 질문드립니다. 감사합니다.

답변 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 설계과제 관련 정리

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

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