(1)通过调用uvm_reg的configure函数,在configure函数内调用m_parent.add_reg函数,将uvm_reg加入到uvm_reg_block中; (2) 一般地,假如整个寄存器中只有一个字段的话,会在调用这个寄存器的configure函数时,指定此寄存器的hdl路径,这个路径本质上是其中的uvm_reg_field的路径; 但是当一个寄存器中有多个uvm_reg_field...
endfunctionvirtualfunction uvm_reg_map get_local_map(uvm_reg_map map,stringcaller="");returnm_idx.get_local_map(map,caller); endfunction//Just for good measure, to catch and short-circuit non-sensical usesvirtualfunctionvoidadd_field (uvm_reg_field field); `uvm_error(get_full_name(),"...
1.2.1. status_reg 首先定义一个status_reg类,继承自uvm_reg,该类就表示了status寄存器。class...
uvm_reg_field:包含uvm_reg_data_t类型的三个成员变量value,m_mirrored,m_desire。 uvm_reg:包含成员变量m_fields,加入各个uvm_reg_field。 uvm_reg_block:uvm_reg的集合,uvm_reg需要加入到uvm_reg_map中,且属于同一个uvm_reg_block。每个uvm_reg_block至少包含一个uvm_reg_map。uvm_reg_block中也可以再...
在使用寄存器模型的adapter进行数据转换时,会直接对uvm_reg_bus_op进行操作,其包含变量有操作类型、地址、数据等,除byte_en的描述不太清晰外,其他几个都比较好懂。从字面意思来看,该变量似乎是对数据按字节操作进行使能,但实际并不一定,本文将从源码的角度来解读byte_en。
// XpredictXfunctionuvm_reg_data_tuvm_reg_field::XpredictX(uvm_reg_data_tcur_val,uvm_reg_data_twr_val,uvm_reg_mapmap);uvm_reg_data_tmask=('b1<<m_size)-1;case(get_access(map))"RO":returncur_val;"RW":returnwr_val;"RC":returncur_val;"RS":returncur_val;"WC":return'0;"WS...
2.还可以使用get_reg_by_offset 函数通过寄存器地址得到uvm_reg 指针,在调用此uvm_reg的read 或者write 进行读写操作: 1)如果像7.4.1 使用了寄寄存器模型,从最顶层的reg_block 的 get_reg_by_offset 也可以得到子reg_block 的寄存器。 2)假如buf_blk 的地址偏移是‘h1000,其中有偏移为’h3的寄存器(实际物...
reg uvm_reg_block classmy_regmodelextendsuvm_reg_block;randmy_regversion;functionvoidbuild();default_map=create_map("default_map",0,2,UVM_LITTLE_ENDIAN,0);version=my_reg::type_id::create("version",,get_full_name());version.configure(this,null,"version");version.build();default_map.add...
: +define+MACRO 或者: +define+MACRO=100扩展寄存器模型中的数据位宽:`defineUVM_REG_DATA_WIDTH 128扩展寄存器模型中的地址位宽:`define IC那些事儿2020-12-02 15:24:35 谈谈UVM中的uvm_info打印 uvm_info宏的定义如下: `defineuvm_info(ID,MSG,VERBOSITY) \ begin \ if (uvm_report_enabled(VERBOSITY ...
uvm_reg_model——寄存器模型(⼀) 对于⼀个复杂设计,寄存器模型要能够模拟任意数量的寄存器域操作。UVM提供标准的基类库,UVM的寄存器模型来⾃于继承⾃VMM 的RAL(Register Abstract Layer),现在可以先将寄存器模型进⾏XML建模,再通过脚本⼯具直接⽣产寄存器模型。⾸先来看看 uvm_reg_model的代码...