1. 程式人生 > >verilog 條件編譯命令`ifdef、`else、`endif 的應用

verilog 條件編譯命令`ifdef、`else、`endif 的應用

技術 ctu 作用 blank 激勵 部分 滿足 efi ril

【摘自夏宇聞《verilog設計教程》】一般情況下,Verilog HDL源程序中所有的行都將參加編譯。但是有時希望對其中的一部分內容只有在滿足條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是“條件編譯”。有時,希望當滿足條件時對一組語句進行編譯,而當條件不滿足是則編譯另一部分。

條件編譯命令有以下幾種形式:

1) `ifdef 宏名 (標識符)
程序段1
`else
程序段2
`endif
它的作用是當宏名已經被定義過(用`define命令定義),則對程序段1進行編譯,程序段2將被忽略;否則編譯程序段2,程序段1被忽略。其中`else部分可以沒有,即:

2) `ifdef 宏名 (標識符)

程序段1
`endif
這裏的 “宏名” 是一個Verilog HDL的標識符,“程序段”可以是Verilog HDL語句組,也可以是命令行。這些命令可以出現在源程序的任何地方。註意:被忽略掉不進行編譯的程序段部分也要符合Verilog HDL程序的語法規則。
通常在Verilog HDL程序中用到`ifdef、`else、`endif編譯命令的情況有以下幾種:
? 選擇一個模塊的不同代表部分。
? 選擇不同的時序或結構信息。
? 對不同的EDA工具,選擇不同的激勵。

以下是實例:

技術分享圖片

運行結果為:

# wow is defined
# nest_one is defined
# nest_two is defined

verilog 條件編譯命令`ifdef、`else、`endif 的應用