可选UVM_CHECK 和UVM_NO_CHECK。 2)两种应用场景: 2.1)在仿真中不断调用,使寄存器模型的值和DUT 的值一样,此时check 关闭。 2.2)仿真即将结束时,检查两侧值是否一致,check 打开。 2.mirror 会更新期望值与镜像值。同update 类似,mirror可以在uvm_reg 和uvm_reg_block 被调用。当调用uvm_reg_block 的mirror...
1、mirror()任务主要功能是通过所在uvm_reg发起的read()行为获取dut中寄存器对应reg_field的值(UVM_FRO...
读DUT中寄存器的值,与update操作相反。如果第二个参数check为UVM_CHECK,那么会检查读取的值与镜像值是否一样,如果不一样报错。通过mirror读取DUT的寄存器值之后,会调用predict函数,更新镜像值。 mirror有两种应用场景:一是在仿真中不断调用,但此时是UVM_NO_CHECK,保证镜像值与DUT中的值相等;二是在仿真结束的时候调...
可选的值为UVM_CHECK和UVM_NO_CHECK。 mirror操作可以在仿真中不断地被调用,使整个寄存器模型的值与DUT中寄存器的值保持一致。这种用法通常在仿真即将结束时被调用,用于检查DUT中寄存器的值与寄存器模型中寄存器的镜像值是否一致。 值得注意的是,mirror操作会更新期望值和镜像值。它既可以在uvm_reg级别被调用,也可以...
一、 UVM_PREDICT_DIRECT功能与mirror操作 UVM提供mirror操作,用于读取DUT中寄存器的值并将它们更新到寄存器模型中。它的函数原型为: task uvm_reg::mirror(output uvm_status_e status, input uvm_check_e check = UVM_NO_CHECK, input uvm_path_e path = UVM_DEFAULT_PATH, ...
UVM提供mirror操作用于读取DUT中寄存器的值并将它们更新到寄存器模型中。 taskuvm_reg::mirror(outputuvm_status_estatus,inputuvm_check_echeck=UVM_NO_CHECK,inputumv_path_epath=UVM_DEFAULT_PATH,...); mirror的常用参数是如上三个。其中第二个参数指示DUT寄存器值与寄存器模型寄存器的镜像值是否相同,通常mirror...
// get register value and check rgm.chnl0_ctrl_reg.mirror(status, UVM_CHECK, UVM_FRONTDOOR,parent(this)); 下面的方法是运用 set()和 update()对寄存器做批量修改。首先 set()方法的对象是寄存器模型自身,通过set()可以修改期望值, 而在寄存器配置时不妨先对其模型随机化,再配置个别寄存器或域, 当寄存...
mirror操作:用于读取DUT中寄存器的值并将它们更新到寄存器模型中。可以前门访问也可以后门访问。两种的应用场景:1)check选项关闭, 仿真中不断调用。2)check选项打开,用在结束时,检查DUT与寄存器模型的值是否相同。 predict操作:人为的根据DUT来更新寄存器模型中的镜像值。但同时又不对DUT进行任何操作。此时的uvm_path_...
regm.thres.update(st); 先检查needs_update,如果mirror值和desire值不同,则根据不同的access类型,获取一个经过操作的desire值,一般来讲像RW这种access类型,就是直接获取一个desire值,然后将该值write到寄存器。 1.3.5. reg.mirror regm.thres.mirror(st,UVM_CHECK); mirror操作就是从DUT读一个寄存器,然后与当前...
篇5-uvm_regrandomizegetsetupdatemirrorpredictr。。。1.1 randomize 1.1.1 randomize的影响 (1) randomize操作会改变register field的期望值(uvm_reg_field的post_randomize函数内,会将期望值设置为随机的结果),镜像值不会改变;(2) 如果在randomize后,跟着调⽤update,会将期望值写⼊DUT;1.1.2 randomize的...