환경 변수를 사용하여 Verilog에서 런타임 중에 매크로를 정의하고 싶습니다.Verilog에서 환경 변수 또는 명령 줄을 사용하여 매크로 값을 설정하는 방법은 무엇입니까?
예를 들어 DEBUG
매크로가 1
으로 정의 된 경우에만 텍스트를 파일에 인쇄하려고합니다.
`define DEBUG 0
...
if(DEBUG) $fwrite(file,"Debug message");
방법 명령 줄에서 시뮬레이션을 실행하거나 환경 변수를 사용할 때이 1
에 DEBUG
의 정의를 오버라이드 (override) 할 수 있습니까?
또한, 나는 정의되지 않은 매크로를 유지하고 내가 시뮬레이션을 실행할 때 매크로 DEBUG
을 정의해야합니다이 경우 ifdef
`ifdef(DEBUG) $fwrite(file,"Debug message");
를 사용할 수 있습니다. 이것이 가능한가?
저는 Modelsim을 사용하고 있습니다. 감사.
편집 : 허용 된 대답은 충분하다. 그러나 나는이 정보를 여기에 비틀 거린 사람에게 추가 할 것이다.
-g<parameter>
또는 -G<parameter>
인수를 사용하여 vsim
에 매개 변수의 값을 설정하거나 재정의 할 수 있습니다. -g
은 이미 설정되지 않은 경우에만 매개 변수 값을 설정하고 -G
은 정의 된 경우에도 값을 설정합니다. 나는 매개 변수를 사용하여 시뮬레이션 길이를 제어 할 때이 편리함을 발견했다. 재 컴파일은 필요하지 않습니다.
vsim -c work.top -gSIM_END_TIME // Sets value in all scope
vsim -c work.top -g/top/dut/SIM_END_TIME // Sets value only in the defined scope