1virtual class uvm_reg_adapter extends uvm_object;23functionnew(stringname="");4super.new(name);5endfunction67bit supports_byte_enable;8bit provides_responses;9uvm_sequence_base parent_sequence;1011pure virtual
uvm_reg_adapter中除了以上截图的代码并未有其他代码涉及到provides_responses的使用,我们再次故技重施grep一下,发现uvm_reg_map.sv的2191和2337行有所使用,相关代码如图17所示,这里果然调用了get_base_response()(rw.parent调用的,rw为uvm_reg_item,而parent就是指的是其中定义的uvm_sequence_base类型的变量)将dri...
uvm_reg_adapter中除了以上截图的代码并未有其他代码涉及到provides_responses的使用,我们再次故技重施grep一下,发现uvm_reg_map.sv的2191和2337行有所使用,相关代码如图17所示,这里果然调用了get_base_response()(rw.parent调用的,rw为uvm_reg_item,而parent就是指的是其中定义的uvm_sequence_base类型的变量)将dri...
mcdf_bus_driver在读数时会将读回的数据填入到RSP并返回至sequencer,因此需要在adapter中使能provides_responses。由此使得bus2reg()函数调用时得到的数据是总线返回时的transaction,如果总线UVC不支持返回RSP(没有调用put_response(RSP)或者item_done(RSP)),那么不应该置此位,否则adapter将会使得验证环境挂起。默认情况...
实现reg2bus()和bus2reg()两个函数,这两个函数即实现了不同transaction之间的数据映射。 如果总线支持byte访问,可以使能supports_byte_enable;如果总线UVC要返回response数据,则应当使能provides_responses。在本例中,mcdf_bus_driver在读数时会将读回的数据填入到RSP并返回至sequencer,因此需要在adapter中使能provides_...
适配器模式(Adapter Pattern)是结构性设计模式,其目的是协调不兼容的结构,把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。寄存器模型中的adapter就是一个适配器,提供了reg2bus和bus2reg的接口,充当uvm_reg_map和uvm_sequencer中的转换器。uvm_...
对uvm_reg_predictor的使用,以及它与uvm_reg_adapter和uvm_reg_block之间的关系。 寄存器模型的常用方法和预定义的sequence 改造之前的寄存器发送序列(reg_base_sequence),并以uvm_reg的操作方式去取代。 应用内建的sequence,做全面的寄存器测试。 寄存器测试和功能覆盖率的实际用例 ...
由于我们在本reg_block中只定义了一个map,因此可以直接用get_default_map获取该map,然后对该map设置sequencer和reg_adapter,sequencer其实就是在环境中用于配置寄存器的driver对应的那个sequencer,uvm_reg本质就是通过reg中的write,read等API,将读写请求,数据等通过API启动sequence发送给driver,然后通过driver去驱动interface...
provides_responses) begin uvm_sequence_item bus_rsp; rw.parent.get_base_response(bus_rsp); adapter.bus2reg(bus_rsp,rw_access); end //... endtask 从源码中可以看出,先是根据写的数据啥的构造一个uvm_reg_item rw; 如果是UVM_FRONTDOOR,那么就会调用reg所在的reg_block的default_map.do_write(...
在adapter中我们要实现寄存器到总线以及总线到寄存器的传输转换,定义了两个函数,同时也是uvm_reg_adaper类中必须定义的两个函数:reg2bus(),bus2reg();如果总线支持BYTE传输,我们必须使能support_byte_enable;而且有数据返回时要provides_responses。默认情况下值为0,都是处于inactive状态。书写adapter过程:①定义new函数...