uvm_reg:它比uvm_reg_field高一个级别,但是依然是比较小的单位 uvm_reg_block:它是一个比较大的单位,在其中可以加入许多的uvm_reg,也可以加入其他的uvm_reg_block uvm_reg_map:每个寄存器在加入寄存器模型时都有其地址,uvm_reg_map就是存储这些地址,并将其转换成可以访问的物理地址(因为加入寄存器模型中的寄存...
1local semaphore m_atomic;2local process m_process;34functionvoid uvm_reg::reset(stringkind ="HARD");5foreach (m_fields[i])6m_fields[i].reset(kind);7//Put back a key in the semaphore if it is checked out8//in case a thread was killed during an operation9void'(m_atomic.try_get...
对于顶层的寄存器模型来说,get_parent()返回的就是null,也就是说寄存器模型中的寄存器会自下而上层层判断有没有自定义的uvm_reg_backdoor句柄,如果都没有,图2中的代码段1执行的get_backdoor()函数最终返回的就是null。于是乎代码段2中执行的就是backdoor_read()任务,而backdoor_read()中又调用了backdoor_rea...
(1) peek task内部会判断寄存器是否能进行BACKDOOR操作,比如是否设置该寄存器的hdl path; (2) 主要是调用backdoor_rd task与do_predict(UVM_PREDICT_READ); do_predict用于更新register model中寄存器的相关值; 1taskuvm_reg::peek(outputuvm_status_e status,2outputuvm_reg_data_t value,3inputstringkind ="...
在UVM中,Backdoor访问通过UVM的uvm_reg_backdoor类实现。以下是使用UVM寄存器模型的Backdoor的一般步骤:导入相关库和包:systemverilog Copy code import uvm_pkg::*;创建寄存器模型:`include "uvm_macros.svh"class my_reg_model extends uvm_reg_block;// 定义寄存器模型的寄存器字段 uvm_reg_field field1;uv...
下面是一个使用Backdoor的示例代码: ```verilog //获取寄存器模型的指针 reg_model reg_ptr = uvm_reg::get_reg_by_name("my_register"); //执行读取操作 reg_data_t read_data; reg_ptr.read(read_data); //执行写入操作 reg_data_t write_data = 8'hFF; reg_ptr.write(write_data); ``` 在...
BACKDOOR:不通过总线进行读写操作,而是直接通过层次化的引用来改变寄存器的值。 (2)uvm_reg_field:寄存器模型的最小单位。 uvm_reg:比uvm_reg_field高一个级别。一个寄存器至少包含一个uvm_reg_field。 uvm_reg_block:一个比较大的单位,在其中可以加入很多的uvm_reg,也可以加入其他的uvm_reg_block。一个寄存器...
例如在稍后对寄存器SLV0_RW_REG进行后门访问时,UVM DPI函数会通过寄存器HDL路径“reg_backdoor_access.dut.regs[0]”映射到正确的寄存器位置,继而对其进行读值或者修改。另外,寄存器模型build()函数最后一句,以lock_model()结尾,该函数的功能是结束地址映射关系,并且保证模型不会被其它用户修改。
寄存器是可作为单个实体被访问的多个域段的集合,它可以被映射到一个或者多个地址上(memory-mapped)被访问。对寄存器的建模,UVM提供的类型叫uvm_reg。为了提供后门访问(backdoor access),uvm_reg还增加了成员来表示其对应的硬件寄存器在RTL中的层次路径。
因此,在顶层env中在对寄存器模型完成了build以后,我们还可以创建my_vreg_frontdoor_sequence,并且通过指定regmodel.bus.reg0.set_frontdoor(frontdoor)来指定在访问该sequence时,需采取专用的frontdoor sequence完成寄存器访问。 这种用户自定义的前门访问方式,作为传统的register model + adapter + bus sequencer方式的补...