verilog之預編譯
阿新 • • 發佈:2020-07-30
verilog之預編譯
1、基本作用
預編譯,就是在verilog進入編譯器前的準備工作。一般是完成一些檔案的呼叫,一些編譯器的設定,一些引數的定義。一般使用include,define,timescale就可以實現。比較靈活的使用是ifdef和endif的插入,可以將預編譯的功能拓展。
2、使用事例
`define WIDTH 8 `include "demo_include.v" `include "demo_h.h" `timescale 10ns/1ns `define cut module demo; reg [`WIDTH-1:0] s1; //different from parametersreg clk; demo_include U1( .clk(clk) ); initial begin #1 $display(`WIDTH); #2 `ifdef cut $stop; `endif #2 $display(`HEIGHT); $stop; end endmodule
上面的事例包括了定義了引數,引用了檔案,設定時序間隔。
主要需要注意的是ifdef-endif的使用:
這裡的使用方法就是將ifdef定義的巨集作為開關使用,控制特定的程式碼段是否工作。類似一個可選擇性註釋的開關。
還有其他的作用,一般是編輯器的設定,這裡不多介紹,這裡記住這個使用方法就可以。
注意預編譯區的程式碼也是按照前後順序依次執行的。使用ifdef需要注意順序,define要在ifdef前面使用。同理,也可以使用ifdef優化引數,對引數進行分類。
3、總結反思
預編譯的內容不是特別複雜,一般用於提高設計的普適性和靈活性。在複雜設計時,應當注意預編譯的充分利用以提高設計的效率。