4) 顶层的reg_map,初始化agent和sequencer, reg model的coverage设置, 1) include_coverage,是一个全局性的coverage开关的设置, 2) build_coverage,一般是在configure的时候,初始化model中的变量的函数。 3) has_coverage,在new covergroup的时候,进行选择, 4) set_coverage和get_coverage,是在sample的时候,进行选...
4) 顶层的reg_map,初始化agent和sequencer, reg model的coverage设置, 1) include_coverage,是一个全局性的coverage开关的设置, 2) build_coverage,一般是在configure的时候,初始化model中的变量的函数。 3) has_coverage,在new covergroup的时候,进行选择, 4) set_coverage和get_coverage,是在sample的时候,进行选...
set:将值写入到寄存器模型的期望值中 extern virtualfunctionvoid set (uvm_reg_data_t value,stringfname ="",intlineno =0); 使用示例 p_sequencer.p_rm.invert.set(16'h1); update:将期望值和镜像值比对,如果不一致则吧期望值写入到dut的寄存器中,同时更新寄存器模型镜像值。uvm_reg级别被调用, 也可以在...
调用static function uvm_reg::include_coverage控制各种coverage model的支持与否的开关。 build_coverage/has_coverage 在uvm_reg或uvm_reg_block层级可以使用build_coverage控制该层级下创建的coverage model,使用has_coverage接口辅助判断是否支持,作为covergroup new的条件。 但是covergroup还是需要人为显式地定义的: set_...
set_coverage(UVM_CVR_FIELD_VALS); if(has_coverage(UVM_CVR_FIELD_VALS))begin value_cg=new(); end endfunction virtual function build(); reserved=uvm_reg_field::type_id::create("reserved"); pkt_len=uvm_reg_field::type_id::create("pkt_len"); ...
1、我们需要在寄存器模型创建的组件的connect_phase()调用寄存器模型中的uvm_reg_map的set_auto_predict(...
与这些方法类属的方法还包括有set_coverage()和include_coverage(),读者可以参考源代码或者类手册。 借助于寄存器描述文件的良好格式,寄存器模型生成器都可以通过模板的形式来生成可以控制例化和采样的寄存器模型。如果用户自己在开发寄存器模型生成器时,也可以考虑是否通过上述参考的变量形式来控制,或者在生成时导入一些...
super.new(name, 16, UVM_NO_COVERAGE); //16是这个寄存器的宽度, endfunction endclass 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 寄存器模型中常用的函数 read:函数的原型(将根据从dut寄存器中读取的结果同时更新寄存器模型的期望值和镜像值),有多个参数, 常用的是其前三个参数。 其中第...
uvm_factory::set_type_override(base_sequence_item::get_type(), random_sequence_item::get_type()); // 后续使用base_sequence_item类型创建对象时,实际创建的将是random_sequence_item对象。 end. 对象重载(Object Overloading)。 除了类型重载,还能进行对象重载。当需要对特定组件使用预定义的配置对象时,这...
uvm_reg的new函数,带3个参数,除了name和coverage之外,中间的参数表示reg的size。uvm_reg的configure,...