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

SOC/IP验证工程师

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

公告

View Post

寄存器模型中函数get_root_blocks的用法

要使用寄存器模型,一般是将寄存器模型的指针传递过来;
除了这种方法,uvm还提供函数,使得可以在不使用指针传递的情况下得到寄存器模型的指针;

   virtual task body();
      uvm_status_e   status;
      uvm_reg_data_t value;
      bit[31:0] counter;
      uvm_reg_block blks[$];////
      reg_model p_rm;////
      uvm_reg_block::get_root_blocks(blks);////
      if(blks.size() == 0)										////				
          `uvm_fatal("case0_cfg_vseq", "can't find root blocks")////
      else begin												////
         if(!$cast(p_rm, blks[0]))								////
             `uvm_fatal("case0_cfg_vseq", "can't cast to reg_model")////
      end       
      p_rm.invert.read(status, value, UVM_FRONTDOOR);
      `uvm_info("case0_cfg_vseq", $sformatf("invert's initial value is %0h", value), UVM_LOW)
   endtask

posted on 2023-06-18 10:26  SOC验证工程师  阅读(145)  评论(0)    收藏  举报

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