· 一方面是要传递虚接口,vif是在top_tb层定义的,而通过run_test实例化得到的uvm_test_top是脱离了top_tb层次结构的实例,需要用config_db才能把vif传到验证平台内使用。 · 另一方面,package范围内是可以使用类中的内容,但是类实例化后,对句柄进行赋值,这个句柄是无法通过package能使用的?所以config_db传递句柄到...
基于该模块,可规划出验证平台如下,Driver负责将数据传输至接口,进而发送给DUT;Monitor负责从接口采集数据;Env作为更高层级的组件,可容纳Driver和Monitor,并控制Driver和Monitor相互配合(在这里使用了mailbox作为媒介,具体控制方式见组件中的描述);test_top则是整个UVM树形结构的顶层,对应我们的仿真用例。 验证平台结构图 ...
加入base_test (uvm_test_top),将env添加到base_test,base_test派生于uvm_test,测试用例tc都是基于base_test派生的一个类。 在top_tb里面添加run_test()来启动tc。 构建Makefile。 仿真工具:vcs 编译:make cmp 仿真:make run
tb_top是整个UVM验证平台的最顶层;tb_top中例化dut,提供时钟和复位信号,定义接口以及设置driver和monitor的virual interface,在intial中调用run_test() UVM入口函数。在基于uvm_test扩展出base_test,根据测试用例再基于base_test扩展出各种各样的test.在扩展后的test中call sequence. 在base_test中实例化env, env_c...
top_tb.rx_dv <= 1'b0; while(!top_tb.rst_n) @(posedge top_tb.clk); for(int i=0;i < 256;i++) begin @(posedge top_tb.clk); top_tb.rxd <= $urandom_range(0,255); top_tb.rx_dv <= 1'b1;`uvm_info("my_driver","data is drived",UVM_LOW)end ...
1)但这样是报错的,在class中是不能声明一个interface的实参的,只有top_tb这种module可以。 2)即:在class中不能声明 一个占大面积内存的interface;最多声明一个virtual interface,这种同样类型的virtual变量,类似C语言的一个指针,把它的值赋为module中实参interface的地址。
top_tb (module) ↳ top_th (module instance) ↳ clkndata_if (interface instance) mydut (module instance) top_config (class uvm_object) ↳ top_test (object, class uvm_test) ↳ top_env (uvm_env) ↳ clkndata_config (uvm_object) ...
UVM验证平台通过config_db和TLM进行通讯,其中,config_db用于在UVM验证平台间传递参数,而TLM则用于验证平台内部的通讯。UVM启动时,首先在tb_top中选择运行case_test,然后执行相关阶段,直至所有阶段完成并结束仿真。UVM验证平台中,所有组件都应该派生自UVM库中的类。为提高平台的灵活性和可扩展性,UVM...
my_driver uvm_test_top;uvm_test_top.main_phase(); 这里,任何被run_test()实例化的类的对象的名字都会被UVM平台默认成uvm_test_top,这个被实例化的类也就是整个uvm平台的顶层,而且只允许有一个顶层,即一个验证平台只调用一个run_test()。 top_tb顶层与uvm树形结构的交互: ...
1)uvm_do_with 宏是uvm_do 系列宏的一个,用于在随机时约束某些字段的约束。 2)不同的case就是:1)要有不同的sequence 约束,设置到default_sequence。2)不同的参数配置。 4.top_tb 如下: AI检测代码解析 initial begin run_test(); end 1.