我已经开始为我的RTL DUT开发一个测试平台.使用测试平台的所有组件,我想实现自检机制来验证DUT的功能.
因此,我需要开发记分板组件.但在这里,我甚至得到了检查器组件的概念.
Scoreboard和Checker组件有什么区别?
还有它的应用?
什么时候需要使用记分牌或检查牌或两者兼而有之?
谢谢.
verification verilog register-transfer-level system-verilog uvm
我是UVM的初学者.到目前为止,我能够为我的DUT创建以下环境.
具有来自我的DUT的所有输入 - 输出接口的监视器,驱动程序和序列的代理.顶级UVM环境 用于将有效数据发送到DUT的序列.我尚未实施记分牌.
我在理解如何处理如下方案时遇到了一些麻烦:
对于tb-dut接口,TB需要等待来自DUT的事件(或事务).收到交易后,TB需要发回响应.实现这个的最佳方法是什么?如何从序列中监控DUT事务?我的代理商有监视器,它将监视来自DUT的任何新输出信号.那么,我是否需要以某种方式将代理监视器中的数据带到我的测试/序列类?我知道监视器有一个分析端口,它可以用来将收到的数据发送到记分板进行检查.那么,我是否需要使用相同的端口来读取DUT输出数据,创建有效的响应并将其发送到DUT?
谢谢!
我想将记分板与代理的定序器+监视器连接起来。通过使用分析 imp ( uvm_analysis_imp )连接显示器非常简单,因为显示器拥有一个分析端口。
但是,我不确定如何连接定序器和记分板,因为定序器拥有 uvm_seq_item_pull_imp并且不可能简单地将其连接到分析 imp。我的想法是检查uvm_driver使用的端口,即uvm_seq_item_pull_port。
不幸的是,连接定序器和记分板似乎并不常见,但出于我的目的,这是必要的。是否只能使用uvm_seq_item_pull_port进行序列器-记分板连接,还是有更简单的方法?
我有一个系统verilog接口
interface add_sub_if(
input bit clk,
input [7:0] a,
input [7:0] b,
input doAdd,
input [8:0] result
);
clocking dut_cb @(posedge clk);
output a;
output b;
output doAdd;
input result;
endclocking // cb
modport dut(clocking dut_cb);
endinterface: add_sub_if
Run Code Online (Sandbox Code Playgroud)
我有一个使用这个接口的 SV 模块
module dummy(add_sub_if.dut _if);
....
endmodule: dummy
Run Code Online (Sandbox Code Playgroud)
将其连接到我的 TB 中的理想方式是什么?
如果我实例化接口,我需要创建电线。
如果我使用绑定,那么我还需要对各个信号进行端口映射,这比使用接口的便利性要好。
另一个附加问题是,如何将一个这样的接口分配给另一个接口?
提前致谢,
拉吉迪普