因為DUT是一個靜態(tài)的內(nèi)容,所以testbench理應(yīng)也是靜態(tài)的,其作為uvm驗證環(huán)境和DUT的全局根結(jié)點。
module tb_top;
import uvm_pkg::*;
bit clk;
always #10 clk <= ~clk;
dut_if dut_if1 (clk);
dut_wrapper dut_wr0 (._if (dut_if1));
initial begin
uvm_config_db #(virtual dut_if)::set (null,"uvm_test_top","dut_if",dut_if1);
run_test ("base_test");
end
endmodule
上面是一個簡單的驗證平臺的tb_top示例.其中:
- tb_top 是一個靜態(tài)的module,驗證環(huán)境中所有的信息都可以從這里索引到。此時需要 import uvm_pkg:: * 才能識別一些uvm庫的內(nèi)容。
- 在tb_top需要生成驗證環(huán)境、DUT和接口都需要的時鐘和復(fù)位。因為驗證環(huán)境是動態(tài)的,無法在其中例化物理接口,所以需要采用uvm_config_db將物理interface的指針set給驗證環(huán)境中的virtual interface。
- 通過ru
n_test(“
base_test
”) 啟動
一個test_case。
Clock generation
一般的數(shù)字設(shè)計都會包含一個或者多個時鐘,同時設(shè)計可能會因為工藝等問題工作在不同的頻率下,所以時鐘生成最好是參數(shù)化的。
Reset Generation
和時鐘類似,復(fù)位也需要在testbench頂層實現(xiàn)。在許多數(shù)字設(shè)計中,復(fù)位分為 硬件復(fù)位和軟件復(fù)位 ,它們的復(fù)位方式不一樣,前者通過寄存器接口實現(xiàn),后者直接通過硬件復(fù)位接口實現(xiàn)。
和DUT interface一樣,時鐘和復(fù)位在驗證環(huán)境和DUT中都會用到,對應(yīng)的賦值可以在tb_top中實現(xiàn),也可以在驗證環(huán)境中實現(xiàn)。
另外很多驗證環(huán)境都需要抽取DUT中的信號,可能是force,也可能是采樣DUT內(nèi)部信號。此時需要在testbench tb_top中將DUT信號賦值過去。
interface gen_if;
logic signals;
endinterface
module tb_top;
gen_if u_if0 ();
des u_des ( ... );
// Assign an internal net to a generic in
assign u_if0.signals = u_des.u_xyz.status;
endmodule
-
時鐘
+關(guān)注
關(guān)注
11文章
1898瀏覽量
133199 -
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19537 -
DUT
+關(guān)注
關(guān)注
0文章
191瀏覽量
12951
發(fā)布評論請先 登錄
IC驗證"UVM驗證平臺"組成(三)
IC驗證"一個簡單的UVM驗證平臺"是如何搭建的(六)
IC驗證"UVM驗證平臺加入factory機制"(六)
IC驗證“UVM驗證平臺加入objection機制和virtual interface機制“(七)
基于C的測試和驗證套件集成到常規(guī)UVM測試平臺的方法
基于C的測試和驗證套件集成到常規(guī)UVM測試平臺的方法
數(shù)字IC驗證之“什么是UVM”“UVM的特點”“UVM提供哪些資源”(2)連載中...
數(shù)字IC驗證之“典型的UVM平臺結(jié)構(gòu)”(3)連載中...
數(shù)字IC驗證之“構(gòu)成uvm測試平臺的主要組件”(4)連載中...
數(shù)字IC驗證之“搭建一個可以運行的uvm測試平臺”(5)連載中...
什么是uvm?uvm的特點有哪些呢
UVM驗證平臺執(zhí)行硬件加速

評論