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


    【摘自夏宇聞《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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM