文章目录
建立时间和保持时间违例的解决方法
- 建立时间违例
时钟路径插入缓冲器;
更换延迟小的触发器;
增加时钟周期; - 保持时间违例
优化时钟,让时钟更早到来;
触发器插入缓冲器;
更换延迟大的触发器;
谈谈对UVM验证方法学的理解
- UVM验证方法学是基于system verilog语言形成的一种高效的验证方法,
- 一方面,提高了代码的复用性,使得验证人员能通过代码移植复用修改快速搭建验证平台,从而将主要精力放在具体测试案例的编写上;
- 另一方面,UVM封装了很多好用的方法,使得验证人员不必过多关注底层实现,而且减少了验证平台的调试时间。
UVM有哪些组件
uvm_driver、uvm_monitor、uvm_sequencer、uvm_agent、uvm_scoreboard、uvm_env、uvm_test。
UVM组件的常用方法
typedef,sprint(),topology(),create(),new()
virtual sequencer 和 sequencer的区别,以及为什么用virtual sequencer
- 在有多个驱动端agent,且多个激励之间存在协调关系,有必要使用virtual sequencer;
- virtual sequencer的三个属性:
virtual sequencer 控制其他的sequencer;
virtual sequencer并不和任何driver相连;
virtual sequencer 本身并不处理item。
为什么要有sequence,sequencer以及driver,为什么分开以及这样做的好处
- sequence机制将事务的产生包括事务的定义以及事务产生的步骤从driver中剥离出来,driver只负责将事务信息驱动给DUT。
- 验证的case_list是用sequence机制实现的,保证了UVM树形结构的单一性、统一性,使得可维护的能力大大增加;
assertion分为哪几种,简单描述assertion的用法
- 断言是验证方法的一种,对设计属性进行描述,如果一个设计属性与期望不同,就会断言失败;
- 断言分为立即断言与并发断言;
立即断言是基于事件的变化,与时序无关,必须放在过程块中;
并发断言是基于时钟周期的,在时钟边沿计算表达式,可以放在module、interface、program的定义中,以关键词“property”定义。
fifo的空满判断
写在前,读在后
- 一种是严格的:地址最高位和低位都相等为空;最高位不相等,低位相等为满;
- 另一种不严格:设定一个空满阈值百分比,进行条件判断。
fifo的异步与同步
异步fifo:读写时钟不同;
同步fifo:读写时钟相同。
验证的思想
验证就是在设计规范的要求下,对已知功能目标下的DUT进行检查,然而实际的使用场景是设计规范无法全面覆盖的,验证工程师只能在有限的资源与时间下对设计代码进行最大限度的检查以尽可能多地消除流片之后的bug。
debug 的主要手段
查看波形,查看log
为什么要避免使用绝对路径,如何避免
绝对路径的使用降低了验证平台的可移植性,避免的方法是使用宏和interface
如何在driver中使用interface
使用virtual interface,configure机制的set和get进行传递
与逻辑和同或逻辑的运算
或:有1为1,全0为0;
同或:相同为1,不同为0;
亚稳态是什么,怎么消除
- 产生原因:
数据传输不满足触发器的建立时间和保持时间 - 发生场合:
主要发生在异步信号检测,跨时钟域信号传输以及复位电路中; - 消除办法:
1 对异步信号进行同步处理;
2 采用fifo对跨时钟域通信进行数据缓冲设计;
3 对复位电路采用异步复位,同步释放。
竞争与冒险
不同信号到达汇合点的时间不同,产生竞争,由于竞争使电路发生错误叫做冒险。
解决方法:加滤波电容和选通信号。