2016-07-30 4 views
0

환경 변수를 사용하여 Verilog에서 런타임 중에 매크로를 정의하고 싶습니다.Verilog에서 환경 변수 또는 명령 줄을 사용하여 매크로 값을 설정하는 방법은 무엇입니까?

예를 들어 DEBUG 매크로가 1으로 정의 된 경우에만 텍스트를 파일에 인쇄하려고합니다.

`define DEBUG 0 
... 
if(DEBUG) $fwrite(file,"Debug message"); 

방법 명령 줄에서 시뮬레이션을 실행하거나 환경 변수를 사용할 때이 1DEBUG의 정의를 오버라이드 (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 

답변

3

당신은 정의 동영상 블로그 명령 행 옵션 +와 매크로 정의를 재정의 할 수 있습니다 + < MACRO_NAME> [= < macro_text>] 더 나은 옵션은 매크로를 떠날 것입니다

정의되지 않은 명령문에 `ifdef 문을 정의했는지 테스트하십시오.

매크로를 사용하려면 매크로 값을 변경하려고 할 때마다 소스 코드를 다시 컴파일해야합니다. Verilog는 런타임에 명령 행 옵션을 테스트하기 위해 $test$plusargs$value$plusargs을 제공하므로 재 컴파일 할 필요가 없습니다.