1. 程式人生 > 實用技巧 >verilog之預編譯

verilog之預編譯

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 parameters
reg 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、總結反思

預編譯的內容不是特別複雜,一般用於提高設計的普適性和靈活性。在複雜設計時,應當注意預編譯的充分利用以提高設計的效率。