(2) 在使用get_root_blocks函数得到reg_block的指针后,使用cast将其转化为目标reg_block形式; externstaticfunctionvoidget_root_blocks(refuvm_reg_block blks[$]); functionvoiduvm_reg_block::get_root_blocks(refuvm_reg_block blks[$]);foreach(m_roots[blk]) begin blks.push_back(blk); end endfunc...
1//uvm_reg.svh2functionuvm_reg_data_t uvm_reg::get(stringfname ="",3intlineno =0);4//Concatenate the value of the individual fields5//to form the register value6m_fname =fname;7m_lineno =lineno;89get =0;1011foreach (m_fields[i])12get |= m_fields[i].get() <<m_fields[i]...
对于顶层的寄存器模型来说,get_parent()返回的就是null,也就是说寄存器模型中的寄存器会自下而上层层判断有没有自定义的uvm_reg_backdoor句柄,如果都没有,图2中的代码段1执行的get_backdoor()函数最终返回的就是null。于是乎代码段2中执行的就是backdoor_read()任务,而backdoor_read()中又调用了backdoor_rea...
get register函数是用于从register block中获取指定名称或地址的寄存器描述的函数。它接受一个字符串参数,可以是寄存器的名称或地址,并返回对应的寄存器描述。 以下是一个示例get register函数的代码: python function get_register(input string name) return uvm_reg; static uvm_reg_list reg_list = this.get_regis...
uvm_reg_byte_en_t be= -1); uvm_reg_data_t field_val= rw.value[0] & ((1<< m_size)-1);if(rw.status !=UVM_NOT_OK) rw.status=UVM_IS_OK;//Assume that the entire field is enabledif(!be[0])return; m_fname=rw.fname; ...
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的寄存器(实际物...
uvm_reg的new函数,带3个参数,除了name和coverage之外,中间的参数表示reg的size。uvm_reg的configure,...
set()函数修改的是寄存器模型中调用该函数的uvm_reg_field的m_desired(期望值),并且根据configure()时配置的m_access(访问类型)来限制期望值设置的值的范围(函数中case...endcase中间的内容),同时将value值更新为最新的m_desired值。 注意这里修改的仅仅是寄存器模型中的m_desired和value值,并不涉及任何与dut相关...
函数uvm_reg_map :: set_base_addr()用于完成这项功能。它只有一个参数,即寄存器映射的新偏移量。一旦更改,添加到此映射的所有寄存器将同时更改其地址。 IV. indirect寄存器 在图1中,“(a)indirect”表示可通过位于“top”地址空间的数据/索引寄存器访问的“internal”地址空间。位于“internal”地址空间中的所有寄...
task uvm_reg::mirror(output uvm_status_estatus, input uvm_check_e check=UVM_NO_CHECK, input uvm_path_e path=UVM_DEFAULT_PATH, ...); 这个函数有多个参数,常用的只有前三个。其中,第二个参数是一个枚举类型,如果发现DUT中寄存器的值与寄存器模型中的镜像值不一致,那么在更新寄存器模型之前是否给出错...