寄存器模型前后门访问总结
1.使用寄存器模型
1.1 可以进行前门访问:可以参考张强UVM书的7.2.3
1.2 可以进行后门访问:可以参考张强UVM书的7.3.5
2.不使用寄存器模型
2.1 可以进行前门访问:可以参考张强UVM书的7.3.1
2.2 可以进行后门访问:
2.2.1 可以参考张强UVM书的7.3.2,在top_tb中进行操作
//top_tb.sv
initial begin
  @(posedge rst_n);
  my_dut.counter = 32'hfffd;
end
//or 
assign my_dut.counter = 32'hffffd;
2.2.2 可以参考张强UVM书的7.3.3,在interface中进行操作
在top_tb中实例化interface,然后将此interface传递到UVM中组件中。
interface backdoor_if(input clk, input rst_n);
  //后门写
  function void poke_counter(input bit[31:0] value);
    top_tb.my_dut.counter = value;
  endfunction
  //后门读
 function void peek_counter(input bit[31:0] value);
    value = top_tb.my_dut.counter;
 endfunction
endinterface
在base_test中:
task my_case0::configure_phase(uvm_phase phase);
  phase.raise_objection(this);
  @(posedge vif.rst_n);
  vif.poke_counter(32'hfffd);
  phase.drop_dropjection(this);
endtask
2.2.3 可以参考张强UVM书的7.3.4。
通过c/c++或sv操作systemverilog进行操作。
2.2.4
在sequence和test中使用force。
force top_tb.dut.re = 1'b1;
在test和top_tb中使用uvm_hdl_force。
uvm_hdl_force("top_tb.dut.re", 1'b1);
                    
                
                
            
        
浙公网安备 33010602011771号