1//示例12class base_test extends uvm_test;3...4reg_model rm;5my_adapter reg_sqr_adapter;6//adapter for uvm_reg_predictor;7my_adapter mon_reg_adapter;8uvm_reg_predictor #(bus_transaction) reg_predictor;9...10endclass1112functionvoid base_test::build_phase(uvm_phase phase);13...14rm...
两个uvm_component之间的通信我们当然优先选择TLM机制,这里uvm_reg_predictor是被动的接收uvm_monitor发过来的数据包,而uvm_monior中发包我们用的是uvm_analysis_port(uvm_monitor需要给很多组件发送收集的数据包,包括ref_model、coverage_collector、scb等等),所以相应的我们在uvm_reg_predictor中需要用一个uvm_analysis_...
uvm_reg_predictor,当auto_predict关闭的时候,需要例化的component,连接到寄存器的monitor。 在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_...
monitor 将总线收集到的transaction交给寄存器模型,后者更新相应寄存器的值。 3.用这种方法更新数据,需要理会一个reg_predictor,并例化: 1)要将reg_predictor和 bus_agt的 ap 连接,并设置reg_predictor 的adapter 和map。 2)只有设置map 后,才能将predictor 和寄存器模型关联在一起。 4.只有一个主设备时,左右两图...
uvm_reg_predictor,当auto_predict关闭的时候,需要例化的component,连接到寄存器的monitor。 在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。
agent.monitor.ap.connect(mcdf2reg_predictor.bus_in); endfunction endclass uvm_reg的访问方法 在给出寄存器模型的常见应用模式之前,首先从下表中更全面地了解uvm_reg_ block、 uvm_reg 和uvm_reg_ field 三个类提供的用于访问寄存器的方法。 uvm_reg_ sequence 提供的方法(均是针对寄存器对象的, 而不是寄...
为了解决上述问题,我们需要自己写predictor来手动调用do_predict(),当然调用do_predict()这个行为UVM源代码已经帮我们在uvm_reg_predictor中实现了,我们只需要写一个从uvm_reg_predictor继承而来的my_predictor,然后将bus_in这个imp连接到monitor上的analysis_port上,同时将上面截图里的代码替换为ral.default_map.set_...
组件uvm_reg_predictor是uvm_subscriber的子类并且有一个可以用来接收来自目标监视器(target monitor)来的总线sequence解析端口(analysis implementation port)。它使用寄存器适配器(register adapter)来将进来的总线数据包转化为通用寄存器项,并且它在寄存器映射(register map)中查找地址,从而找到对应寄存器并且更新其内容。上述...
引入reg_predictor的原因:配置寄存器的总线存在多个master时,可能存在不通过寄存器模型访问总线来配置DUT中寄存器的情况,这时寄存器模型 就不能检查到 DUT中寄存器的变化,所以需要引入reg_predictor,通过monitor检测总线,将采集到的tr发送给uvm_reg_perdictor。如下图, ...
这两个功能是一样的,只不过uvm_reg_predict是一个组件,用组件的方式去刷新mirror值,可能在每个cycle的时候去检测,类似于monitor功能。 class environment extends uvm_env; typedef uvm_reg_predictor #(master_data) merg_predictor; mreg_predictor mreg_predict; virtual function void build_phase (uvm_phase ...