- 寄存器模块验证中常见的测试点有哪些?
- 检查寄存器的复位值;
- 需要检查寄存器的域常见读写属性;
- 检查每个寄存器的地址映射关系是否正确;
- 检查寄存器的反馈是否及时准确,这一点需要检查硬件状态信号是否连接到寄存器端,如果是更新方式是主动更新,那么可以通过后门访问进行快速检查(不占用总线),如果更新方式是被动更新,那么只能通过前门访问除法ing吉安状态值更新。
- 对于一些特殊寄存器(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树如下图: