(1) get_reset方法返回register或者register field预定义的reset值; (2) get_reset通常和read/mirror共同使用,用于检查register是否被正确的reset; 8.get_parent 1functionuvm_reg_block uvm_reg::get_parent();2return get_block();3endfunction45functionuvm_reg_block uvm_reg::get_block();6get_block =m...
在write函数中显示调用do_predict函数,更新model中的mirror value,此时do_check函数,会根据read_on_check进行调用。 uvm自建的针对reg的sequence,针对普通的reg有:reg_access_seq,reg_bit_bash_seq,reg_hw_reset_seq。 uvm_reg model,主要实现了 1) 增加了对dut的reg进行访问的方式,可以直接通过reg model进行访问。
virtual function uvm_reg_data_t get( string fname = "", int lineno = 0 ) 返回模型中寄存器的期望值,而不是DUT中的寄存器值。 1.3 get_mirrored_value 1 virtual function uvm_reg_data_t get_mirrored_value( string fname = "", int lineno = 0 ) 返回模型中寄存器的镜像值。 1.4 get_reset ...
set_reset()和reset()是用来修改reset值,而获取reset值包含如下两个函数 has_reset() 判断对应reset类型(kind参数)是否有reset值 get_reset() 获取某种reset类型(kind参数)的reset值,如果不存在该reset类型,则返回m_desired(期望值) 关于reset值相关的函数就介绍到这里,下面介绍剩余三种值的读写相关的函数。 set(...
virtual function uvm_reg_data_t get_mirrored_value( string fname = "", int lineno = 0 ) 1. 返回模型中寄存器的镜像值。 1.4 get_reset virtual function uvm_reg_data_t get_reset( string kind = "HARD" ) 1. 返回寄存器的复位值。
这里个get_reset()方法指的也是寄存器模型的复位值,而不是硬件。 mirror()方法与read()方法类似,也可以选择前门访问后者后门访问,不同的是,mirror()不会返回读回的数值,但是会将对应的镜像值修改。在修改镜像值之前,用户还可以选择是否将读回的值与模型中的原镜像值进行比较。下面的例码一方面在更新镜像值之前,...
get_reset():返回你设定好的预期的复位值 get_mirror_field_value():得到寄存器的镜像值 get():获得软件这边的期望值。 set():修改软件reg/reg_field的期望值。常常和updata一起用。 内建的测试序列 还可以通过uvm_resource_db#()::set去排除一些寄存器进行测试。在用内建序列的时候,只需要声明并new,然后将...
在复位之后, 用户也可以通过读取寄存器模型的复位值(与寄存器描述文件一致), 与前门访问获取的寄存器复位值进行比较, 以此判断硬件各个寄存器的复位值是否按照寄存器描述去实现。 这里的 get_reset()方法指的也是寄存器模型的复位值, 而不是硬件。 mirror()方法与 r...
virtual task pre_reset_phase(uvm_phase phase);`uvm_info(tID,"pre_reset_phase is executed",UVM_LOW)endtask virtual taskpost_shutdown_phase(uvm_phase phase);`uvm_info(tID, "post_shutdown_phase is executed", UVM_LOW) endtask virtual function void extract_phase(uvm_phase phase); ...
如,假设要对DUT在运行过程中要进行一次reset操作,在没有细分phase之前,这种才做要在scoreboard,reference model等加入一些额外的代码来保证验证平台不会出错。但是有了这些小的phase之后,分别在scoreboard和reference model及其它部分(如driver,monitor等)的reset_phase写好相关代码,之后想做一次复位操作,那么只要通过phase...