UVM疑惑解答第二季

  • 寄存器模块验证中常见的测试点有哪些?
  1. 检查寄存器的复位值;
  2. 需要检查寄存器的域常见读写属性;
  3. 检查每个寄存器的地址映射关系是否正确;
  4. 检查寄存器的反馈是否及时准确,这一点需要检查硬件状态信号是否连接到寄存器端,如果是更新方式是主动更新,那么可以通过后门访问进行快速检查(不占用总线),如果更新方式是被动更新,那么只能通过前门访问除法ing吉安状态值更新。
  5. 对于一些特殊寄存器(wc/rc/wo)需要集合其特定属性,进行单独访问,并通过后门访问或者检测内部信号检查其功能。

 

  • 为什么建议配置放在对象创建之前?

这是为了将所需配置的变量事先嵌入uvm_config_db进行存储,而在后续子一级组件例化并且进入build_phase()从uvm_config_db获得配置时,可以确保所配置的变量都已先于子一级组件进行过配置,避免出现配置变量无法获取的现象。

 

  • iff往往伴随着事件event作为事件等待的附件条件,无论是在@(EVENT iff COND)时,还是在covergroup/coverpoint定义时添加iff.

 

  • uvm_component有两大特性是uvm_object所不具备的。一是通过在new的时候必须要指定parent参数来产生一种树形的组织结构,二是具有phase的自动执行特点。所有的UVM树的结点都是由uvm_component构成的,只有基于uvm_component派生出的类才有可能是UVM树的结点.

 

  • UVM树的建立

仿真过程中,首先执行的是 build_phase() ,该 phase 用于构建 uvm-tree 的结构,注意: uvm_component 组件类必须在 build_phase中实例化,也是这个原因,因为 build_phase() 的主要用途就是实例化组件类,构建 tree,典型的UVM树如下图:

 

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页