UVM内建了一种transaction:uvm_reg_item,通过adapter的bus2reg及reg2bus,可以实现uvm_reg_item与目标transaction的转换 读操作的完整流程: 参考模型(RM)调用寄存器模型的读任务 寄存器模型产生sequence,并产生uvm_reg_item:rw 产生driver能够接受的transaction:bus_req=adapter.reg2bus(rw) 把bus_req交给bus_sequencer...
对uvm_reg的定义,以及uvm_reg_block的组织 对uvm_reg_adapter的定义,以及它与uvm_reg_block之间的关系。 对uvm_reg_predictor的使用,以及它与uvm_reg_adapter和uvm_reg_block之间的关系。 寄存器模型的常用方法和预定义的sequence 改造之前的寄存器发送序列(reg_base_sequence),并以uvm_reg的操作方式去取代。 应用...
寄存器模型中的adapter就是一个适配器,提供了reg2bus和bus2reg的接口,充当uvm_reg_map和uvm_sequencer中的转换器。uvm_reg_map操作uvm_reg_bus_op类型的item,而uvm_sequencer操作uvm_sequence_item类型的item。 adapter 继承uvm_reg_adapter,重写reg2bus和bus2reg这两个pure virtual function。 classmy_adapterexte...
寄存器级事务将带有目标寄存器的相关信息放到 uvm_reg_bus_op 实例中,发送给 adapter ; adapter 在接收到 uvm_reg_bus_op 之后,通过内部的 reg2bus( ) 方法从中抽取总线层面所需要的信息,同时生成一个与总线适配的 transaction(也就是 driver 需要拿到的 item 类型),然后 adapter 把这个 transaction 送给 sequenc...
m_reg_ctrl.write(status,addr,wdata);m_reg_ctrl.read(status,addr,rdata); 这些寄存器的读/写函数会创建一个类型为uvm_reg_bus_op的内部通用寄存器项(internal generic register item),其struct定义如下: typedef struct{uvm_access_e kind;uvm_reg_addr_t addr;uvm_reg_data_t data;int n_bits;uvm_...
总结一下UVM中的寄存器访问实现:后门访问通过add_hdl_path命令来添加寄存器路径,并扩展uvm_reg_backdoor基类,定义read与write函数,最后在uvm_reg_block类中 通过set_backdoor()来将相应的寄存器与它对应的后门访问的读写函数对应起来。其中rea
定义reg_adapter类 class reg_adapter extends uvm_reg_adapter; 重载reg2bus,该函数主要是在发送write/read请求时,用于将reg item信息中关键的kind,data,addr信息转化到对应driver可识别的item,这里用了apb interface来配置DUT寄存器。 function uvm_sequence_item reg2bus (const ref uvm_reg_bus_op rw); apb_...
通过API进行操作,生成uvm_reg_item类型的事务对象,根据操作的类型决定对象中的操作类型,访问的地址根据reg_name自动生成; 寄存器模型将事务对象进一步转换为uvm_reg_bus_op事务对象,传入adapter,再将其转换为sequencer可以接受的事务对象(用户自定义,adapter也需自行编写) sequencer接收到该事务对象后通过driver驱动到dut,...
uvm_reg_bus_op 类的成员包含 6 个域。 从下面给出的 MCDF 桥接类 reg2mcdf_adapter 的实现来看,该类在构建函数中使能了provide _responses, 这是因为 mcdf_bus_driver 在发起总线访问之后会将 RSP 并返回至sequencer 。 reg2bus()完成的桥接场景是, 如果用户在寄存器级别做了操作, 那么寄存器级别操作的信息...
30.步骤一:寄存器序列将带有目标寄存器的相关信息存放到uvm_reg_item实例(uvm_reg_bus_op)中,送往adapter; 31.步骤二:adapter在接收到uvm_reg_item(uvm_reg_bus_op)之后,转换成总线可以“认识”的bus_seq_item总线事务类型,再由adapter将bus_seq_item送给sequencer,继而发给driver; ...