uvm之寄存器模型

寄存器模型的意义

寄存器模型,字面理解,跟参考模型类似。就是为工程里的寄存器提供一个参考模型。
这个模型里,包括各个寄存器字段描述、寄存器、寄存器组、寄存器地址映射等信息。

有如下好处:

  • 寄存器模型建立的目的,初始目的,是为了验证寄存器配置过程的。
  • uvm里提供内置sequence,可以实现后门访问的路径检查、寄存器初始值的检查、寄存器读写属性的检查等。
  • 寄存器模型里,有一套标准的访问接口,暂且叫做reg接口;可以通过uvm_adapter实现apb到reg的接口转换,以及reg到apb的接口转换。ps:其中apb是apb协议的事务接口,而非apb协议的信号接口。
  • 增加了后门访问机制。带来的好处是,不消耗仿真时间;提供直接访问hdl path的方式,而非DUT apb接口信号方式,所以能够做的事情更多,比如强制改变某寄存器的初始值等。
  • 寄存器模型,可以跟寄存器描述文档对应。所以,可以根据寄存器模型,更新寄存器描述文档;又或者根据寄存器描述文档,更新寄存器模型。最终实现,寄存器描述文档与设计代码的准确对应。
  • 有了寄存器模型,任意uvm_component都可以很方便的获取寄存器的状态值。比如reference model组件。

寄存器模型的搭建

  • reg_model的定义
    • uvm_reg的定义
      • uvm_reg_field,寄存器字段的实例化
      • reg_field的configure
    • uvm_reg_block的定义
    • uvm_reg,寄存器的实例化
      • reg的configure
      • build
      • default_map,地址映射
  • uvm_adapter的定义

    • reg2bus
    • bus2reg
  • base_test的定义

    • reg_model的实例化以及初始化【为什么不在env里实例化?个人理解,reg_model的实例化需要紧接初始化步骤,初始化的步骤,更适合放在base_test里。好像uvm实战里,在uvm_env层次里定义了reg_model的指针,全局系统里,都是利用uvm_env里的这个reg_model指针进行的connect;有了这一步骤,使得reg_model看起来是uvm_env层次下的一个组件。】【reg_model为什么不是uvm树形结构的组件?因为它没有在env里实例化。:)】
    • adapter实例化
    • 寄存器模型的default_map在uvm验证环境方面的设置
    • 寄存器模型在base_test和sequencer做connect_phase的连接。
  • virtual sequence
    寄存器的写操作,一般都在virtual sequence里发起。当然,virtual sequence也可以发起寄存器的读操作。
    • uvm_reg_mem_hdl_paths_seq(需要后门访问)
    • uvm_reg_hw_reset_seq
    • uvm_reg_access_seq(需要后门访问)
    • p_sequencer.p_rm.rab_ctrl.write(status,32’hffffffff,UVM_FRONTDOOR);
      p_sequencer.p_rm.rab_ctrl.read(status,value,UVM_FRONTDOOR);
  • 其它组件访问寄存器,主要是发起寄存器的读操作。比如reference model
    • uvm_reg不需要实例化,提供一个指针即可。当然,在uvm_env层次里,要定义该指针与virtual sequencer之间的连接(实际上采取了两步骤,第一步骤,指针与reg_model实例的build_phase挂接;第二步骤,reg_model实例与virtual sequencer之间的connect_phase连接)。
    • p_rm.rab_ctrl.read(status,value,UVM_FRONTDOOR);
  • 上述步骤,实现了reg_model的前门访问。至于后门访问,是通过7.3.5章节实现的。

寄存器模型的FAQ

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值