在connect_phase中,需要将转换器和bus_sequencer通过set_sequencer函数告知reg_model的default_map,并将default_map设置为自动预测状态 在验证平台中使用寄存器模型 寄存器模型被建立好后,可以在sequence和其他component中使用,以在参考模型中使用为例,需要在参考模型中有一个寄存器模型的指针 reg_model p_rm; 需要在env...
要实现register model与adapter和sequencer的关联我们通常在寄存器模型所在组件的build_phase执行下面这段代码 也就是说register model中的default_map里的set_sequencer方法实现了将三者的关联,传递的两个参数分别对应着实际的sequencer和adapter。 我们看看这个default_map的声明和类型定义 于是寄存器模型的default_map就把对...
在connect_phase中,adapter将uvm_reg_map和sequencer连接,实际就是调用set_sequencer给uvm_reg_map中的成员变量m_sequencerm_adapter赋值: functionvoidbase_test::connect_phase(uvm_phase phase); super.connect_phase(phase); ... rm.default_map.set_sequencer(env.bus_agt.sqr, reg_sqr_adapter); rm.defaul...
寄存器模型的前门访问操作最终都将由 uvm_reg_map 完成,因此在 connect_phase 中,需要将转换器和 bus_sequencer 通过 set_sequencer 函数告知 reg_model 的 default_map,并将 default_map 设置为自动预测状态。 3.3 寄存器模型应用 寄存器模型定义好后,可以在 reference model 和 sequence,因为 uvm_...
3在basetest中实例化register model和adapter, 这一步骤要做两件事情,第一,对rm进行configure,build, lock, reset等操作,第二,然后对其中的default_map,进行set_sequencer.
最后一步是将寄存器加入default_map之中,否则无法进行前门访问操作。add_reg函数第一个参数是要加入的寄存器,第二个参数是寄存器的地址,第三个是此寄存器的存取方式。 step3:将寄存器模型集成到验证平台之中 进行前门操作时,寄存器模型都会通过sequence产生一个uvm_reg_bus_op的变量,此变量信息要通过一个转换器(...
Step5: 将Address Map连接到Bus sequencer和Adapter 在test或env的connect phase中,调用default_map或其他用户自定义的address map对象中的set_sequencer方法, 并把前门操作的bus sequencer及adaptor作为参数传入。 virtual function void connect_phase(uvm_phase phase); ...
uvm_sequence创建transaction,uvm_sequencer发送该transaction 平台组件的phase 创建driver 组件注册使用uvm_component_utils宏,其他用uvm_object_utils宏 创建monitor 创建agent 创建environment 创建testcase config_db的set为指定的目标设置资源 调用位置;被配置变量的相对路径;目标变量标识符;配置值(如sequence类型?) 整个...
virtualfunctionvoidconnect_phase(uvm_phase phase);super.connect_phase(phase);m_agent.m_mon.mon_ap.connect(m_reg_env.m_apb2reg_predictor.bus_in);m_reg_env.m_ral_model.default_map.set_sequencer(m_agent.m_seqr,m_reg_env.m_reg2apb);endfunction:connect_phase ...
`uvm_do_on(seq0, p_sequencer.p_sqr0); `uvm_do_on(seq1, p_sequencer.p_sqr1); begin #10000; uvm_config_db#(bit)::set(uvm_root::get(), "uvm_test_top.v_sqr.*", "send_en", 0); #10000; uvm_config_db#(bit)::set(uvm_root::get(), "uvm_test_top.v_sqr.*", "send_...