인프런 커뮤니티 질문&답변
SystemVerilog Interface - 1에서 modport 관련 질문
작성
·
14
0
안녕하세요, 좋은 강의 제공해주셔서 감사합니다.
modport의 예시 코드에서 궁금한 점이 있어서 질문 남깁니다.
modport를 program에서 사용하는 예시 코드에서
rtr_io.reset_n = 1'b0; 과
rtr_io.cb.reset_n <= 1'b1;인 코드가 있는데요,
이 말은 interface에서 async한 reset_n과 sync한 reset_n으로 2개의 reset_n 신호가 있다고 봐도 괜찮을까요? 2개의 신호로 존재한다면, async한 reset_n이 assert되면 이후의 posedge에 맞춰 sync된 reset_n이 자동으로 assert되는 것이 맞는지 궁금합니다.
추가적으로, 만약에 clocking block의 sync한 reset_n을 asser하는 경우, async한 reset_n의 값이 변화되는지 궁금합니다.
질문 읽어주셔서 감사합니다.
답변 1
0
오우님, 강의 수강 감사드립니다.
수강생분께서 잘 보셨다시피, rtr_io.reset_n 은 clk 과 async 하게 동작하는 async reset, rtr_io.cb.reset_n 은 clk 의 edge 에서 sync 하게 동작하는 sync reset signal 입니다.
두 신호는 같은 reset signal이나, timing 의 차이가 있습니다.
async reset 은 그 code 의 line 이 실행되는 timing 에 reset 이 실행되고,
sync reset 은 clk 의 edge 까지 기다렸다가 실행되는 차이점이 있습니다.
네, 추가 질문에 대해서는 sync reset_n 이 assert 되면 async reset_n 도 같은 시점에 값이 변한다고 보시면 됩니다.
EDAPlayground 의 Published된 playground example 인 "[MetaEncore] SV Interface Example 1" 를 참조해 보시면 좋을 것 같습니다.
답변이 되셨는지요?
메타앙코르





이해됐습니다. 감사합니다!