0****1
仿真驗(yàn)證平臺結(jié)構(gòu)
仿真驗(yàn)證主要作用是搭建一個(gè)測試平臺,測試和驗(yàn)證程序設(shè)計(jì)的正確性,驗(yàn)證設(shè)計(jì)是否實(shí)現(xiàn)了我們所預(yù)期的功能。其結(jié)構(gòu)如下圖所示。
圖中可以看到,這個(gè)測試平臺本身對外沒有輸入輸出端口的,我們需要通過實(shí)例化的方式將待測試模塊放置于仿真中,然后設(shè)計(jì)相應(yīng)的激勵(lì)信號加載在待測試模塊的輸入端,運(yùn)行仿真后觀測輸出信號是否正確。
下圖是2選1多路選擇器的仿真測試代碼,我們依次解讀各部分內(nèi)容。
`timescale 1ns/1ps
`timescale是預(yù)編譯指令,用于定義時(shí)間單位和時(shí)間精度。此處,時(shí)間單位為1ns,時(shí)間精度為1ps。
因此,語句 always #10 a=~a 中“#10”表示延時(shí)10ns。
reg a,b,sel;
wire out;
信號聲明部分包含兩部分。
待測試模塊的輸入信號,在仿真文件中是需要設(shè)計(jì)的激勵(lì)信號,一般在always和initial語句中描述,因此,聲明為reg型。
待測試模塊的輸出信號是待觀察的信號,聲明為wire型。
initial begin
a=0;b=0;sel=0;
end
always #10 a=~a;
always #20 b=~b;
always #40 sel=~sel;
以上是激勵(lì)信號的描述。
mux2_1 uut(
.a(a),
.b(b),
.sel(sel),
.out(out)
);
以上是待測試模塊的實(shí)例化。uut是實(shí)例名,由用戶自定義,不能缺少。
0****2
仿真驗(yàn)證一般步驟
? 新建仿真文件(.v),與源程序文件名不能相同。
? 模塊聲明:對外沒有輸入、輸出端口。
? 信號聲明:待測模塊的輸入信號聲明為reg型,輸出信號聲明為wire型。
? 設(shè)計(jì)激勵(lì)信號:對待驗(yàn)證模塊的輸入端口信號進(jìn)行模擬,覆蓋所有情況。
? 實(shí)例化待測模塊:對待測模塊進(jìn)行實(shí)例化。
? 運(yùn)行仿真:Run Behavioral Simulation(行為仿真)
? 觀察仿真結(jié)果:判斷被測試模塊的輸出響應(yīng)是否符合預(yù)期要求
03
如何觀察內(nèi)部信號
①scope窗口選則待測試模塊(uut是待測模塊實(shí)例名)。
②將想要觀察的信號拖到仿真波形窗口。
③重新加載仿真(relaunch simulation)。
-
仿真驗(yàn)證
+關(guān)注
關(guān)注
0文章
25瀏覽量
8139 -
HDL語言
+關(guān)注
關(guān)注
0文章
47瀏覽量
8917 -
Verilog設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
20瀏覽量
6533 -
多路選擇器
+關(guān)注
關(guān)注
1文章
22瀏覽量
6530
發(fā)布評論請先 登錄
相關(guān)推薦
評論