• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

SOC/IP验证工程师

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

寄存器模型前后门访问总结

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);

posted on 2022-10-15 11:19  SOC验证工程师  阅读(681)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3