해결된 질문
작성
·
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 시킨다는 가정, 그리고 모듈간의 로직이 동일하다" 이면 차이점은 없다. 생각합니다.
즐공하세요 :)
이해가 되었습니다. 감사합니다!