一般情況下,Verilog HDL源程序中所有的行都參加編譯。但是有時候希望對其中的一部份內容只有在條件滿足的時候才進行編譯,也就是對一部分內容指定編譯的條件,這就是“條件編譯”。有時,希望當滿足條件時對一組語句進行編譯,當條件不滿足時則對另外一組語句進行編譯。
條件編譯命令的幾種形式:
(1)`ifdef宏名(標識符)
程序段1
`else
程序段2
`endif
它的作用是當宏名已經被定義過(此處需要采用`define命令定義),則對程序段1進行編譯,程序段2將被忽略;否則編譯程序段2,程序段1將被忽落。其中`else部分可以沒有,即:
它的作用是當宏名已經被定義過(此處需要采用`define命令定義),則對程序段1進行編譯,程序段2將被忽略;否則編譯程序段2,程序段1將被忽落。其中`else部分可以沒有,即:
(2)`ifdef宏名(標識符)
程序段1
`endif
這里的“宏名”是一個Verilog HDL 的標識符,“程序段”可以是Verilog HDL語句組,也可以是命令行。這些命令可以出現在源程序的任何地方。
注意:被忽略掉不進行編譯的程序段部分也要符合Verilog HDL程序的語言規則。
通常在Verilog HDL程序中用到`ifdef、`else、`endif編譯命令的情況有以下幾種:
(1)選擇一個模板的不同代表部分。
(2)選擇不同的時許或結構信息。
(3)對不同的EDA工具,選擇不同的激勵
