目录
我们知道,在实际后仿真过程中,通过指定路径延迟,目的是让仿真的时序更加接近实际数字电路的时序。利用时序约束对数字设计进行时序仿真,检查设计是否存在违反(violation)时序约束的地方,并加以修改,也是数字设计中不可或缺的过程。
Verilog 提供了一些系统任务,用于时序检查。这些系统任务只能在 specify 块中调用。下面就介绍 6 种常用的用于时序检查的系统任务,
其中两个:$setup, $hold。
一 背景概念
系统任务 $setup 用来检查设计中元件的建立时间约束条件,$hold 用来检查保持时间约束条件。其用法格式如下:
1.1 setup 检查
$setup(data_event, ref_event, setup_limit);
- data_event: 被检查的信号,判断它是否违反约束
- ref_event: 用于检查的参考信号,一般为时钟信号的跳变沿
- setup_limit: 设置的最小建立时间
如果 T( ref_event - data_event) < setup_limit, 则会打印存在 violation 的报告。
例子: