1、 三防平板应用中的时序检查概述
三防平板应用中的时序检查可以放在指定块中,通过确保关键事件在给定的时间限制内发生来验证设计的时序性能。为了方便起见,将时序检查分成两组。第一组时序检查是根据稳定性时间窗口描述的:
第二组中的定时检查检查时钟和控制信号,并根据两个事件之间的时间差进行描述($nochange检查涉及三个事件):
尽管它们以$开头,但是时序检查不是系统任务。由于历史原因,出现前导“$”,定时检查不应该与系统任务混淆。特别是指定块中不能出现任何系统任务,在过程代码中也不能出现任何时序检查。
一些时序检查能接受负限制值。所有时序检查都有一个参考事件和一个数据事件,并且布尔条件可以与每个事件相关联。有些检查有两个信号自变量,其中一个是引用事件,另一个是数据事件。其他检查只有一个信号自变量,参考事件和数据事件都是从中得出的。只有当相关条件为真时,才能通过时序检查检测到参考事件和数据事件。
时序检查评估基于两个事件的时间,这两个事件分别称为时间戳事件和时间检查事件。时间戳事件信号上的跳变使仿真器记录(标记)跳变时间,以供将来在评估时序检查时使用。时间检查事件信号上的跳变导致仿真器实际评估时序检查以确定是否发生了冲突。
对于某些检查,参考事件总是时间戳事件,数据事件总是时间检查事件;而对于其他检查,情况正好相反。对于其他检查,关于哪个是时间戳事件、哪个是时间检查事件的决定是基于下面更详细讨论的因素。
每个时序检查都可以包括一个可选的通知程序,每当时序检查检测到违规时,该通知程序就会切换。该模型可以使用通知程序使行为成为时序检查违规的函数。
与模块路径延迟表达式一样,时序检查限制值是常数表达式,可以包括指定参数。
2、 三防平板应用中的使用稳定窗口的时序检查
三防平板应用中的使用稳定窗口的时序检查接受两个信号,即参考事件和数据事件,并定义一个信号的时间窗口,同时检查另一信号相对于该窗口的跳变时间。通常,它们都执行以下步骤:
(1)使用指定的一个或多个限制来定义关于参考信号的时间窗口;
(2)检查数据信号相对于时间窗口的跳变时间;
(3)如果数据信号在时间窗口内跳变,则报告时序冲突。1.$setup
语法格式为
其中,data_event为时间戳事件;reference_event为时间检查事件;limit为非负常数表达式;notifier(可选)为Reg。
此外,数据(时间戳)事件通常是一个数据信号,而参考事件(时间检查事件)通常是一个时钟信号。时间窗口的终点由下式确定:
在下面情况下,$setup时序检查报告时序冲突,即
图1更清楚地说明以上公式给出的约束条件。从图中可知允许的建立时间窗口宽度由limit决定。对于数据信号(时间戳事件)来说,它应该在窗口的起点以外就应该有效。如果数据信号的有效时间落在了时间窗口内,就表示时间戳事件没有为参考事件(clk信号)提供足够的建立时间,也就是不满足建立时间要求,这就会产生建立时间的冲突。
图1 $setup时序检查的概念2.$hold
语法格式为
其中,reference_event为时间戳事件;data_event为时间检查事件;limit为非负常数表达式;notifier(可选)为reg;
此外,数据事件(时间检查事件)通常是一个数据信号,而参考事件(时间戳事件)通常是一个时钟信号。时间窗口的起点和终点由下式确定:
在下面情况下,$hold时序检查报告时序冲突,即
图2更清楚地说明以上公式给出的约束条件。从图中可知允许的保持时间窗口宽度由limit决定。三防平板应用中的对于数据信号(时间检查事件)来说,它应该在窗口的起点开始一直到窗口终点一直有效。如果数据信号(时间检查事件)的有效时间落在了时间窗口内,就表示时间检查事件没有为时间戳事件(clk信号)提供足够的保持时间,也就是不满足保持时间要求,这就会产生保持时间的冲突。
图2 $hold时序检查的概念3.$setuphold
语法格式为
三防平板应用中的其中,reference_event表示当建立限制条件的值是正数的时候,为时间检查事件或者时间戳事件;当建立限制条件的值是负数的时候,为时间戳事件。data_event表示当保持限制条件的值是正数的时候,为时间检查事件或者时间戳事件;当保持限制条件值是负数时,为时间戳事件。setup_limit为常数表达式;hold_limit为常数表达式;notifier(可选)为Reg;timestamp_cond(可选)为用于负的时序检查的时间戳条件;timecheck_cond(可选)为用于负的时序检查的时间检查条件;delayed_reference(可选)为用于负的时序检查延迟的参考信号;delayed_data(可选)为用于负的时序检查延迟的数据信号。$setuphold时序检查可以接受限制值为负数的条件。此处,数据事件通常是一个数据信号,而参考事件通常是一个时钟信号。当建立限制和保持限制的值均为正数时,参考事件或数据事件可作为时间检查事件,这将取决在仿真时首先发生的事件。
三防平板应用中的如果建立限制或保持限制的值其中有一个为负数时,限制条件变成如下表达式:
$setuphold时序检查将$setup和$hold时序检查功能组合为一个时序检查。
因此,下面的调用:
等效于下面的功能(如果tSU和tHLD都不是负数时):
当建立约束和保持约束为正,数据事件首先发生时,时间窗口的起点和终点由下式确定:
在下面的情况下,$setuphold时序检查报告一个时序冲突,即
当建立约束和保持约束为正,数据事件第二个发生时,时间窗口的起点和终点由下式确定:
在下面的情况下,$setuphold时序检查报告一个时序冲突,即4.$removal
语法格式为
其中,data_event为时间戳事件;reference_event为时间检查事件;limit为非负常数表达式;notifier(可选)为Reg。
此处,参考事件(时间检查事件)通常是一个控制信号,如清除(clear)、复位(reset)或置位(set),而数据事件(时间戳事件)通常是一个时钟信号。时间窗口的起点和终点由下式确定:
在下面的情况下,$removal时序检查报告一个时序冲突,即
三防平板应用中的时间窗口的端点不是冲突区域的一部分。当限制值为零时,$removal检查将不发出冲突。
图1.14更清楚地说明以上公式给出的约束条件。三防平板应用中从图中可知允许的去除时间窗口宽度由limit决定。对于参考事件(时间检查事件)来说,它应该在窗口的起点开始一直到窗口终点为止一直有效。如果参考事件(时间检查事件)的有效时间落在了时间窗口内,就表示时间检查事件没有为时间戳事件(clk信号)提供足够的去除时间,也就是不满足去除时间要求,这就会产生去除时间冲突。