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

김민호님의 프로필 이미지
김민호

작성한 질문수

설계독학맛비's 실전 Verilog HDL Season 1 (Clock부터 Internal Memory까지)

모듈과 always블록의 관계(?)에 대한 질문입니다.

해결된 질문

작성

·

228

1

안녕하세요, 맛비님.

강의 영상을 통해 항상 많은 배움을 얻는 중입니다. 감사합니다.

 

파이프라인 실습편 강의의 Q&A를 읽다가 질문이 하나 생겼습니다.

해당 질문의 답변중에 모듈간의 handshake를 통해 timing을 맞춘다고 답변을 해주신 게 있습니다.

모듈간에 handshake가 필요한 건 이해하였습니다.

제가 궁금한 건, 만약 모듈들을 한 모듈안의 always(clk) 구문으로 구현한다면, always 구문간에 통신할 때도 handshake가 필요한 지 궁금합니다. 제 생각에는 한 모듈안에 여러 always(clk) 구문으로 구현하더라도 각 alway 블록이 하나의 모듈과 같다고 생각이 들긴 합니다. 질문을 정리하면 다음과 같습니다.

1. 모듈들을 한 모듈안의 always 구문으로 보통 구현하지 않는 것 같은데, 가독성을 위한 이유 말고 다른 이유가 있는지

2. 한 모듈 안의 여러 always 구문 v.s. always 블록마다 모듈로 구현 -> 차이점이 무엇인지

 

기존에 질문이 있을 것 같아서 찾아봤는데 없는 것 같아서 질문드립니다 ㅠ

아직 많이 헷갈리네요 ㅠ

읽어주셔서 감사합니다.

 

김민호 드림

 

 

답변 1

1

설계독학맛비님의 프로필 이미지
설계독학맛비
지식공유자

안녕하세요 :)

 

제가 궁금한 건, 만약 모듈들을 한 모듈안의 always(clk) 구문으로 구현한다면, always 구문간에 통신할 때도 handshake가 필요한 지 궁금합니다.

원론적인 이야기를 할꺼에요.

handshake 는 Data 전달에 용이하게 하기 위한 방법 중 하나 입니다.

즉, 동일 모듈내에서 handshake 없이 Data 전달이 가능하다는 전제라면 필요없습니다. (가능함)

제 생각에는 한 모듈안에 여러 always(clk) 구문으로 구현하더라도 각 alway 블록이 하나의 모듈과 같다고 생각이 들긴 합니다. 질문을 정리하면 다음과 같습니다.

1. 모듈들을 한 모듈안의 always 구문으로 보통 구현하지 않는 것 같은데, 가독성을 위한 이유 말고 다른 이유가 있는지

한 모듈 내의 다중 always 문으로 사용하셔도 무방합니다.

제 예제코드를 기준으로는 가독성이 가장 큰 이유입니다. :) 

2. 한 모듈 안의 여러 always 구문 v.s. always 블록마다 모듈로 구현 -> 차이점이 무엇인지

모듈로 나누면 hierarchy 가 발생하는데요. hierarchy 에 따른 합성 Tool 이 다른 결과를 만들게 됩니다. (이는 Tool 마다 다름으로 여기서 답변드릴 내용은 아닐 것 같아요.)

"모듈간 hierarchy 를 flatten 시킨다는 가정, 그리고 모듈간의 로직이 동일하다" 이면 차이점은 없다. 생각합니다.

즐공하세요 :)

김민호님의 프로필 이미지
김민호
질문자

이해가 되었습니다. 감사합니다!

김민호님의 프로필 이미지
김민호

작성한 질문수

질문하기