개발 편의성을 위한 소소한 Tips/04 질의 응답 정리

[Verilog HDL Q/A. 003] 시뮬레이션에서 클럭 rising edge 순간 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 논리 상태에 대해 궁금합니다.

반응형

Q1

시뮬레이션 결과를 보시면 클럭 rising edge 순간에 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 시뮬레이션 결과처럼 실제 fpga 구현 되었을 때 문제가 없을까요?

 

A1

안녕하세요 :)

Functional Simulation 에는 Timing 정보가 들어있지 않아서, edge 동기화 되서 waveform 이 보여집니다. 강의에서는 Post Simulation 을 보여드린 적은 없지만, 구글링 하시면 이해가 되실꺼에요. ("Netlist 추출 + Timing 정보"  와 함께하는 Simulation)

시뮬레이션 결과를 보시면 클럭 rising edge 순간에 판단 대상이 되는 신호도 함께 천이 됩니다. 이런 경우 시뮬레이션 결과처럼 실제 fpga 구현 되었을 때 문제가 없을까요?

우선, 제가 공유드린 소스코드 전부 Waveform 의 결과와 동일하게 동작하고 있다.

즉 Simulation 결과 처럼 실제 FPGA 에 구현이 되고 있는 상태입니다.

여기서 Waveform 에서 확인한 모듈을 실제 FPGA 에 구현되었을때, 문제가 없으려면 기본적으로 Tool 에서 Reporting 하는 Util, Timing, Power 등등 의 Violation 이 존재하면 안됩니다.

FPGA 의 장점이, "언제든 올려볼 수 있다." 이기 때문에 Waveform 의 Function 을 확인하시고, 실제로 바로 올려서 결과를 확인하는 Flow 로 개발합니다.  (Post sim 과 같은 중간 단계를 굳이 거치지 않고 개발합니다.)

결론

FPGA Implementation 후에 Violation 이 존재하지 않는다면, Waveform 의 Functional sim 결과와 동일하게 동작합니다.

ps.

Violation 이 존재하지 않는다.. 가 현업가시면 쉬운 조건은 아님을 직접 깨달으시길 바랄께요. (취뽀하셔라. 혹은 현업이시라면 경험해보셔라 라는 긍정의 의미입니다.)

즐공입니다. :)

Q2

상세한 답변으로 제가 모르고 있었던 부분도 알게 되었습니다.

꼼수일지 모르지만 always 문에서

if(조건) a <= 1;  보다 if(조건) a <= #1 1;

이런 식으로 표현하니 시뮬레이션 타이밍 차트를 볼 때 조금 구분이 되더라구요.

좋은 하루 되세요. 감사합니다.

A2

꼼수 아니에요! 현업에서 이렇게 보기도 합니다.

응용하실 생각을 하시다니, 훌륭합니다.

즐공하세요 :)

반응형