해결된 질문
작성
·
72
·
수정됨
1
안녕하세요.
열심히 verilog와 systemverilog를 공부중인 수강생입니다.
학부에서 디지털설계를 배울때나, 뭐 인터넷에서 자료를 찾을 때 코드를 보면
sequential logic : always @ (posedge clk) 사용
combinational logic : always @(*) (혹은 assign) 사용
이 공식처럼 되어있는 것 같고,
맛비님의 Verilog season1의 강의를 들으며 코드를 봐도 마찬가지인데....
현재 Systemverilog를 공부하고 있는데, 이런 저런 강의를 찾고 공부를 하다보니 , 여러 강의에서 아래와 같이 이야기를 하더라구요.
①
Sequential logic에는 always @(posedge clk)이 아니라 always_ff @(posedge clk)을 사용하는 것이 좋고 combinational logic에는 always @(*) 대신 always_comb 를 사용하는 것이 좋다!
(이유는 always_comb시 실수로 래치가 만들어지지 않고, 사람이 직접 @(*)을 관리하지 않고 자동적으로 감지하기 때문..)
②
마찬가지의 맥락으로 여러 편리함의 이유때문에 variable 선언 시 reg 대신 logic을 사용하는 것이 편리하다.
이에 대해 한 가지 질문을 드리려고 합니다.
맛비님의 코드도 보면 always_ff나 always_comb, logic를 사용하진 않은 것 같은데 뭔가 다른 특별한 이유가 있어서 인가요?
(=혹시 맛비님은 현업에서 logic이나 always_comb, always_ff을 사용하는데 Vivado simulation에서는 sv가 지원하지 않아서 강의용으로 코드에 사용하시지 않는 것인지.. 아니면 정말 뭔가 이유가 있어서 사용하지 않는 것인지가 궁금합니다.)
답변 1
0
안녕하세요 🙂
맛비님의 코드도 보면 always_ff나 always_comb, logic를 사용하진 않은 것 같은데 뭔가 다른 특별한 이유가 있어서 인가요?
Verilog HDL 강의라서, 사용을 안했습니다.
현업에서도 SV 로 RTL 설계를 하고있고요. 말씀해주신 내용이 맞습니다.
SV 는 Verilog 의 super set 이라서, Verilog 를 알아야 SV 를 할 수 있다 생각하고 있어요.
SV 강의도 계획중에 있어서, (언제 나온다 말씀은 못드리지만) 그때 알려주신 이야기를 해볼 수 있을 것 같아요.
(=혹시 맛비님은 현업에서 logic이나 always_comb, always_ff을 사용하는데 Vivado simulation에서는 sv가 지원하지 않아서 강의용으로 코드에 사용하시지 않는 것인지.. 아니면 정말 뭔가 이유가 있어서 사용하지 않는 것인지가 궁금합니다.)
SV 지원합니다. 이유는 위에서 말씀드렸어요.
다음은 저희가 갖고있는 vivado xsim 환경의 SV 빌드 예제입니다.
-sv 추가하시면 됩니다.
xvlog -sv ./design/*.sv ./testbench/testbench.sv
즐공하세요 🙂