Verilog HDL編譯指令
出處:seugujun 發(fā)布于:2007-04-29 10:15:44
* `define, `undef
* `ifdef, `else, `endif
* `default_nettype
* `include
* `resetall
* `timescale
* `unconnected_drive, `nounconnected_drive
* `celldefine, `endcelldefine
3.5.1 `define 和`undef
`define指令用于文本替換,它很像C語言中的#define 指令,如:
`define MAX_BUS_SIZE 32
. . .
reg [ `MAX_BUS_SIZE - 1:0 ] AddReg;
一旦`define 指令被編譯,其在整個編譯過程中都有效。例如,通過另一個文件中的`define指令,MAX_BUS_SIZE 能被多個文件使用。
`undef 指令取消前面定義的宏。例如:
`define WORD 16 //建立一個文本宏替代。
. . .
wire [ `WORD : 1] Bus;
. . .
`undef WORD
// 在`undef編譯指令后, WORD的宏定義不再有效.
3.5.2 `ifdef、`else 和`endif
這些編譯指令用于條件編譯,如下所示:
`ifdef WINDOWS
parameter WORD_SIZE = 16
`else
parameter WORD_SIZE = 32
`endif
在編譯過程中,如果已定義了名字為WINDOWS的文本宏,就選擇種參數(shù)聲明,否則選擇第二種參數(shù)說明。
`else 程序指令對于`ifdef 指令是可選的。
3.5.3 `default_nettype
該指令用于為隱式線網(wǎng)指定線網(wǎng)類型。也就是將那些沒有被說明的連線定義線網(wǎng)類型。
`default_nettype wand
該實(shí)例定義的缺省的線網(wǎng)為線與類型。因此,如果在此指令后面的任何模塊中沒有說明的連線,那么該線網(wǎng)被假定為線與類型。
3.5.4 `include
`include 編譯器指令用于嵌入內(nèi)嵌文件的內(nèi)容。文件既可以用相對路徑名定義,也可以用全路徑名定義, 例如:
`include " . . / . . /primitives.v"
編譯時,這一行由文件“../../primitives.v” 的內(nèi)容替代。
3.5.5 `resetall
該編譯器指令將所有的編譯指令重新設(shè)置為缺省值。
`resetall
例如,該指令使得缺省連線類型為線網(wǎng)類型。
3.5.6 `timescale
在Verilog HDL 模型中,所有時延都用單位時間表述。使用`timescale編譯器指令將時間單位與實(shí)際時間相關(guān)聯(lián)。該指令用于定義時延的單位和時延。`timescale編譯器指令格式為:
`timescale time_unit / time_precision
time_unit 和time_precision 由值1、10、和100以及單位s、ms、us、ns、ps和fs組成。例如:
`timescale 1ns/100ps
表示時延單位為1ns, 時延為100ps。`timescale 編譯器指令在模塊說明外部出現(xiàn), 并且影響后面所有的時延值。例如:
`timescale 1ns/ 100ps
module AndFunc (Z, A, B);
output Z;
input A, B;
and # (5.22, 6.17 ) Al (Z, A, B);
//規(guī)定了上升及下降時延值。
endmodule
編譯器指令定義時延以ns為單位,并且時延為1/10 ns(100 ps)。因此,時延值5.22對應(yīng)5.2 ns, 時延6.17對應(yīng)6.2 ns。如果用如下的`timescale程序指令代替上例中的編譯器指令,
`timescale 10ns/1ns
那么5.22對應(yīng)52ns, 6.17對應(yīng)62ns。
在編譯過程中,`timescale指令影響這一編譯器指令后面所有模塊中的時延值,直至遇到另一個`timescale指令或`resetall指令。當(dāng)一個設(shè)計中的多個模塊帶有自身的`timescale編譯指令時將發(fā)生什么?在這種情況下,模擬器總是定位在所有模塊的時延上,并且所有時延都相應(yīng)地?fù)Q算為時延。例如,
`timescale 1ns/ 100ps
module AndFunc (Z, A, B);
output Z;
input A, B;
and # (5.22, 6.17 ) Al (Z, A, B);
endmodule
`timescale 10ns/ 1ns
module TB;
reg PutA, PutB;
wire GetO;
initial
begin
PutA = 0;
PutB = 0;
#5.21 PutB = 1;
#10.4 PutA = 1;
#15 PutB = 0;
end
AndFunc AF1(GetO, PutA, PutB);
endmodule
在這個例子中,每個模塊都有自身的`timescale編譯器指令。`timescale編譯器指令次應(yīng)用于時延。因此,在個模塊中,5.22對應(yīng)5.2 ns, 6.17對應(yīng)6.2 ns; 在第二個模塊中5.21對應(yīng)52 ns, 10.4對應(yīng)104 ns, 15對應(yīng)150 ns。如果仿真模塊TB,設(shè)計中的所有模塊時間為100 ps。因此,所有延遲(特別是模塊TB中的延遲)將換算成為100 ps。延遲52 ns現(xiàn)在對應(yīng)520*100 ps,104對應(yīng)1040*100 ps,150對應(yīng)1500*100 ps。更重要的是,仿真使用100 ps為時間。如果仿真模塊AndFunc,由于模塊TB不是模塊AddFunc的子模塊,模塊TB中的`timescale程序指令將不再有效。
3.5.7 `unconnected_drive和`nounconnected_drive
在模塊實(shí)例化中,出現(xiàn)在這兩個編譯器指令間的任何未連接的輸入端口或者為正偏電路狀態(tài)或者為反偏電路狀態(tài)。
`unconnected_drive pull1
. . .
/*在這兩個程序指令間的所有未連接的輸入端口為正偏電路狀態(tài)(連接到高電平)*/
`nounconnected_drive
`unconnected_drive pull0
. . .
/*在這兩個程序指令間的所有未連接的輸入端口為反偏電路狀態(tài)(連接到低電平)*/
`nounconnected_drive
3.5.8 `celldefine 和 `endcelldefine
這兩個程序指令用于將模塊標(biāo)記為單元模塊。它們表示包含模塊定義,如下例所示。
`celldefine
module FD1S3AX (D, CK, Z) ;
. . .
endmodule
`endcelldefine
某些PLI例程使用單元模塊。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- EDA技術(shù)工具鏈與全流程設(shè)計運(yùn)維指南2026/1/5 10:28:51
- PLC程序現(xiàn)場疑難問題排查與深度優(yōu)化指南2025/12/24 14:36:36
- PLC程序現(xiàn)場調(diào)試與優(yōu)化實(shí)操指南2025/12/24 14:29:57
- 工業(yè)PLC模擬量信號采集:調(diào)理技術(shù)與抗干擾工程方案2025/12/15 14:39:08
- PLC設(shè)備如何選型2025/9/5 17:15:14
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號完整性(SI)設(shè)計核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題









