2.uvm_reg_map部分源码 1class uvm_reg_map extends uvm_object;23`uvm_object_utils(uvm_reg_map)45//info that is valid only if top-level map6//表示uvm_reg_map所代表的地址空间的基地址;7local uvm_reg_addr_t m_base_addr;8...9//m_adapter和m_sequencer用于FRONTDOOR操作时,向driver发送item...
关于map使用我们可以理解为我们需要比对uvm_monitor发送过来的transaction中address与实际寄存器模型uvm_reg_map中的地址列表作比对,以选择需要做predict的那个uvm_reg,所以我们在创建uvm_reg_predictor实例的时候需要将uvm_reg_map关联到我们寄存器模型中的uvm_reg_map上。 adapter的作用仅仅是通过其内部的bus2reg()函数...
4//UVM_CVR_REG_BITS = 'h0001,5//UVM_CVR_ADDR_MAP = 'h0002,6//UVM_CVR_FIELD_VALS = 'h0004,7//UVM_CVR_ALL = -18//} uvm_coverage_model_e;910class my_reg_type extends uvm_reg;11`uvm_object_utils(my_reg_type)1213rand uvm_reg_field F1;14rand uvm_reg_field F2[3];1516prot...
// Add a new resource to the resource pool. The resource is inserted // into both the name map and type map so it can be located by // either. // // An object creates a resources and ~sets~ it into the resource pool. // Later, other objects that want to access the resource m...
uvm_reg_item与uvm_reg_bus_op 450 18.2. 模型的建立452 18.2.1. 把uvm_reg_field加入到uvm_reg 中452 18.2.2. 把uvm_reg加入到uvm_reg_block 中457 18.2.3. 把uvm_reg加入到uvm_reg_map 中462 18.2.4. 把uvm_mem加入到uvm_reg_block 中465 18.2.5. 把uvm_mem加入到uvm_reg_map 中468 18.2....
的uvm_reg_map449uvm_reg_item与uvm_reg_bus_op45018.2.模型的建立458.2.7.把uvm_reg_field加入到uvm_reg中452把uvm_reg加入到uvm_reg_block中457把uvm_reg加入到uvm_reg_map中462把uvm_mem加入到uvm_reg_block中465把uvm_mem加入到uvm_reg_map中468把uvm_reg_file加入到uvm_reg_block中470把子uvm_reg_...
这种方法确实让人眼前一亮,也就是说,以往UVM reg_block是将reg_map与adapter和bus_agent连接,而且只能选择一组对应的adapter和bus_agent,而在SRM,不但任何一个node(reg/table)可以指定多组adapter/bus_agent,还可以在顶层环境中,考虑到不同的测试层次、场景,指定其访问这些reg/table的adapter是frontdoor,backdoor还...
srm_node这个基类为了能够在层次化模型中生成树状结构,需要有parent、_children[$]、offset_table[string]等,所以UVM原生的uvm_reg_map在SRM中已经融合到srm_node这个基本单元了,这表示无论是srm_reg还是srm_table,都可以与上层的srm_node形成新的树状结构。
uvm_reg_map、uvm_mem、uvm_reg_field、uvm_reg、uvm_reg_file、uvm_reg_block等与寄存器相关的众多的类都是派生自uvm_object,它们都是用于register model。 uvm_phase:它派生自uvm_object,其主要作用为控制uvm_component的行为方式,使得uvm_component平滑地在各个不同的phase之间依次运转。
通过API进行操作,生成uvm_reg_item类型的事务对象,根据操作的类型决定对象中的操作类型,访问的地址根据reg_name自动生成; 寄存器模型将事务对象进一步转换为uvm_reg_bus_op事务对象,传入adapter,再将其转换为sequencer可以接受的事务对象(用户自定义,adapter也需自行编写) sequencer接收到该事务对象后通过driver驱动到dut,...