赞
踩
field_automation 机制:
可以自动实现 copy、compare、print 等三个函数。当使用 uvm_field 系列相关宏注册之后,可以直接调用以上三个函数,而无需自己定义。这极大的简化了验证平台的搭建,尤其是简化了 driver和 monitor,提高了效率。
objection 机制:
UVM 中通过 objection 机制来控制验证平台的关闭,需要在drop_objection 之前先 raise_objection。验证在进入到某一 phase 时,UVM会收集此 phase 提出的所有 objection,并且实时监测所有 objection 是否已经被撤销了,当发现所有都已经撤销后,那么就会关闭此 phase,开始进入下一个 phase。当所有的 phase 都执行完毕后,就会调用$finish 来将整个验证平台关掉。如果 UVM 发现此 phase 没有挂起起任何 objection,那么将会直接跳转到下一个 phase 中。
UVM 的设计哲学就是全部由 sequence 来控制激励生成,因此一般情况下只在 sequence 中控制 objection。另外还需注意,raise_objection语句必须在 main_phase 中第一个消耗仿真时间的语句之前。
Config_db 机制主要作用就是传递参数使得 TB 的可配置性高,更加灵活。 Config_db 机制主要传递的有三种类型:
Config_db 的参数主要由四个参数组成,如下所示,第一个参数为父
的根 parent ,第二个参数为接下来的路径,对应的组件,第三个是传递时
的名字(必须保持一致),第四个是变量名。
uvm_config_db #(virtual interface)::set(uvm_root.get(),"uvm_test_top.c1","vif ",vif);
uvm_config_db#(virtual interface) :: get(this,"”,"vif ",vif);
Component 之间通过在 new 函数创建时指定 parent 参数指定子关系,通过这种方法来将 TB 形成一个树形结构。
UVM 中运行是通过 Phase 机制进行层次化仿真的。从组件来看各个组件并行运行,从 phase 上看是串行运行,有层次化的。
Phase 机制的 9 个 phase 是串行运行的,不同组件中的同一个 phase都运行完毕后才能进入下一个 phase 运行,同一个 phase 在不同组件中的运行也是由一定顺序的, build 和 final 是自顶向下。
启动 sequence 有很多的方法,常用的方法有:
前门访问和后门访问的比较:
在通过前门配置寄存器 A 之后,再通过后门访问来判断 HDL 地址映射的寄存器 A 变量值是否改变,最后通过前门访问来读取寄存器 A 的值。
mirror、desired、actual value()
UVM 提供了两种用来跟踪寄存器值的方式,我们将其分为自动预测 ( auto prediction )和显式预测( explicit )。
默认情况下,系统将采用显式预测的方式,这就要求集成到环境中的总线 UVC monitor 需要具备捕捉事务的功能和对应的 analysis port ,以便于同 predictor 连接。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。