Thursday, January 29, 2015

[verilog] 논리 합성에 쓰이는 verilog HDL

verilogHDL을 사용하여 코딩하다보면 가장 애매한 부분이 내가 만든 코드가 실제 합성을 통해서 로직으로 변경이 되냐? 안되냐? 일 것이다.

포트 input, output, inout
파라미터 parameter
모듈 정의 module
신호와 변수 wire, reg, tri
인스턴스 module instances, primitive gate instances
함수와 태스크 function, task
순차(procedural) always, if, else, case, casex, casez
순차적 블록 begin, end, named blocks disable
데이터플로우 assign
루프 for, while, forever

위의 명령어들이 논리 합성에 사용되지만 이 중에서도 특히 많이 사용하는 것들만 따로 나열해 보면

input, output, parameter, module, wire, reg, always, if, else, case, begin, end, assign 정도 사용하는 것 같다.

먼가 한정된 자원으로 많은 것을 해야하는 것 같지만 추상적인 모델로 RTL 코딩을 할 수록 합성시간이 오래걸리고 생각했던 것과 다른 결과가 나올 수 있다. 따라서 기존에 코딩하던 C/C++ 같은 방식이 아니라 말 그대로 하드웨어를 설명하는 RTL 코딩을 해야 합성 속도도 빠르고 처음 설계한 대로 원하는 합성이 가장 비슷하게 이루어질 수 있다.



No comments :

Post a Comment