본문 바로가기

IT

[HDL] VHDL conditional compile #ifdef 사용하기


VHDL 이 나의 생각엔 구조나 사용법이 개발에 사용하는데 크게 무리는 없어 보이는데,
꼭 하나 걸리는 것은 C언어등에서 쓰이고, 물론 verilog 에서는 당연히 지원하는 #ifdef 과 같은 conditional compiler을 하기 위한 문법을 지원하지 않는 것이 가장 불편한 듯 하다.
여기저기 조사해 본 바로, 직접 지원하는 것은 없는 것으로 보여..또 삽질로..ㅜㅜ

그래도 완전 삽질은 조금 그렇지 ^^
조금 불편해도 이렇게는 쓸수 있을 듯..
바로 GNU C compiler등에서 제공되는 Pre-compiler를 통해 가능할듯
아래 그림과 같이, 왼쪽의 vhdl src는 오른쪽의 소스에서 pre-compiler를 통해 만들어진 것이다.
보다시피..#define, #ifdef 등을 사용한 소스가 자동으로 왼쪽과 같이 깜쪽같이 바뀌네..

마법의 키는 C pre-compiler 이다. 실행파일의 이름은 cpp.exe
어떻게 구해서 쓰느냐인데, 여기저기 보기도 구찮고, 일단 가장 쉬운 MinGW + GNU toolkit을 설치해 버린다.
일단, 아래 실행파일은 걍 실행한다. (쉽지만, 설치법은 http://www.mingw.org/wiki/HOWTO_Install_the_MinGW_GCC_Compiler_Suite 참고)

걍 무조건 "예" 하고, 설치후에 "/설치디렉토리/bin"을 Path에 추가하기만 하면 끝난다.
그럼 준비 끝..

그럼 이제 위 그림의 오른쪽 처럼 맘대로 #ifdef등을 사용하여 소스를 작성한다. 여기선 test.vpp로 저장했다고 보자.(확장자는 암꺼나 해도 무방)
작성후엔 요렇게만 해주면 끝..
cpp.exe -P test.vpp test.vhd
(주의 option -P는 꼭 Large P로 사용하도록, 꼭 ^^)

무튼,이렇게나마 conditional compile 이 가능한 것처럼 사용할 수는 있게 되었당~~~~ㅎㅎ
Makefile을 이용하면 좀더 많은 파일을 쉽게 자동화 해서 바꿔서 활용할 수 있겠지..ㅋㅋ
그럼 요까이
..^O^..wiznXt..