UVM面试总结
章节(一)
什么是UVM,优势是什么
UVM(通用验证方法)是一种用于验证数字设计标准化的简单方法。
优势:
第一种自动化方法和第二种自动化类库的集合
贯穿于验证平台的可重用性
即插即用的验证IP
通用的验证平台开发
供应商和模拟器独立
高智能的验证平台(即从预先设计的覆盖计划中产生合法的激励)
支持CDV(覆盖率驱动)验证
支持CRV(受限随机)验证
UVM在Accelerate System Initiative下标准化
支持寄存器模型
uvm_component和uvm_object之间有何区别?
uvm_component:
准静态实体(在构建阶段之后,它在整个模拟过程中可用)
始终连接到给定硬件(DUT接口)或TLM端口
具有用于控制仿真行为的phase机制
配置组件拓扑结构
uvm_object:
动态实体(在需要时创建,从一个组件转移到另一个组件然后取消引用)
不连接到给定的硬件或任何TLM端口
没有phase机制
模块和基于class的tb,有什么区别
区别:
模块(module/program)是在仿真期间始终存在的静态对象。
class是一个动态对象,因为它们可以在仿真的生命周期中来去。
特别指出:interface是静态对象,因此只能用于top、模块等静态对象中,driver为动态的对像类,因此driver等类中使用的为virtual interface,通过虚的指针指向实际的interface。
什么是uvm_config_db?uvm_config_db和uvm_resource_db之间有什么区别?
uvm_config_db是一个参数化类,用于将不同类型的参数配置到uvm数据库中,如此它可以被任何较低级别层次结构中的组件使用。
uvm_config_db是一个构建在uvm_resource_db之上的便利层,但这种便利非常重要。特别是,uvm_resource_db使用“最后写入获胜”方法。另一方面,uvm_config_db通过end_of_elaboration查看层次结构中的内容,因此“父获胜”。一旦启动start_of_simulation,config_db就会变成“最后写入获胜”。
uvm_config_db#(T)中的所有函数都是静态的,因此必须使用::运算符调用它们。uvm_config_db#(T)是从uvm_resource_db#(T)扩展而来的,所以它是uvm_resource_db#(T)的子类。
uvm_do和
uvm_rand_send之间的区别是什么?
uvm_do执行以下步骤:
Create
Start item
Randomize
Finish item
Get response (optional)
`uvm_rand_send执行除create之外的所有上述步骤。用户需要创建sequence或sequence item。
用户是否可以自定义UVM中的phase?
除了UVM中可用的预定义uvm_phase之外,用户还可以选择将自己的phase添加到组件中。这通常通过扩展uvm_phase类和使用构造函数调用super.new来完成,new有三个参数:
(1)阶段任务或功能的名称
(2)自上而下或自下而上的阶段
(3)任务或功能
需要实现call task或call_func和get_type_name以完成新phase的添加。以下为添加示例:
什么是UVM寄存器模型?为什么需要它?
在验证上下文中,寄存器模型(或寄存器抽象层)是一组类,用于模拟DUST中寄存器和存储器的存储器映射行为,以便于激励生成和功能检查(以及可选的功能覆盖的某些方面)。 UVM提供了一组基类,可以扩展它们以实现全面的寄存器建模功能。
什么是analysis_port?
(华为面试题)
analysis_port (uvm_tlm_analysis_port) — 特定类型的事务级端口,可以连接到零个,一个或多个analysis export,组件可以通过该端口调用在另一个组件中实现的方法。
uvm_analysis_port
向所有uvm_analysis_imp中实现的方法广播一个值。
uvm_analysis_imp
接收uvm_analysis_port广播的所有transaction。
uvm_analysis_export
将较低级别的uvm_analysis_imp导出到其父级。
什么是TLM fifo?
简而言之,TLM FIFO是两个UVM组件之间的FIFO,最好是在Monitor和Scoreboard之间。Monitor继续发送DATA,它将存储在TLM FIFO中,Scoreboard可以在需要时从TLM FIFO获取数据。
什么是objection机制?
(比特大陆面试题)
UVM中的objection机制是允许组件之间的分层状态通信,这有助于决定验证结束的时间。
每个内置phase都有一个内置的objection机制,它为组件和对象提供了一种同步其测试活动的方法,并指示何时可以安全地结束phase,最终确定验证进程的结束。
组件或sequence将在活动开始时rAIse objection(提起异议),该活动必须在phase结束之前完成,因此将在该活动结束时drop objection(撤销异议)。一旦所有被raise的 objection都被drop,phase就会终止。
章节(二)
(未完待续。。。)