三防平板设计-边沿控制标识符
时间:2024-08-10 作者:乐凡信息 浏览:140

三防平板设计-边沿控制标识符

三防平板设计在时序检查中,基于在0、1和x之间的特定沿跳变,边沿控制标识符可用于控制事件。

边沿控制标识符包含关键字edge,后面跟着包含1对到6对边沿跳变(0、1和x)的一个方括号列表,即

(1)01,表示从0跳变到1;

(2)0x,表示从0跳变到x;

(3)10,表示从1跳变到0;

(4)1x,表示从1跳变到x;

(5)x0,表示到从x跳变到0;

(6)x1,表示从x跳变到1。

在边沿跳变中涉及z时,与在边沿跳变中涉及x时相同对待。

posedge和negedge关键字可以用于某个边沿控制的描述符,如posedge clr等效于edge[01, 0x, x1] clr。

类似地,negedge clr等效于edge[10, x0, 1x] clr

提示符:用户定义对时序冲突的响应

时序检查提示符检可以用于打印描述冲突或者在器件输出端出现x的错误信息。

三防平板设计提示符是一个reg,在需要调用时序检查任务的模块中声明,它作为系统时序检查的最后一个参数。只要发生时序冲突,时序检查就更新提示符的值。

对所有的系统时序检查来说,提示符是一个可选的参数,可以从时序检查中去掉该参数而不会对时序检查产生不利的影响。



表1给出了提示符值对时序冲突的响应。

表1提示符值对时序冲突的响应

1.三防平板设计精确仿真的要求

为了对负值时序检查准确建模,应满足下面的要求。

(1)如果信号在冲突窗口中(不包括结束点)发生改变,将触发时序冲突。小于两个单位仿真精度的冲突窗口,将不产生时序冲突。

(2)在冲突窗口内(除去结束点),锁存数据应该是一个稳定的值。

为了便于这些建模要求,在时序检查中,产生数据和参考信号的延迟复制版本。在运行时,用于内部时序检查评估。调整内部所使用的建立和保持时间,以移动冲突窗口,使它和参考信号重叠。

在时序检查中,声明延迟数据和参考信号。这样,可以在模型的功能实现中使用它们,以保证精确的仿真。如果在时序检查中,没有延迟信号,并且出现负的建立时间和保持时间,则创建隐含的延迟信号。由于在定义的模块行为中不能使用隐含的延迟信号,这样的一个模型可能有不正确的行为。隐含延迟信号Verilog HDL描述的例子1。

为CLK和DATA创建隐含延迟信号,但是不可能访问它们。$setuphold检查将正确地评估。但是,功能行为不总是正确的。如果在CLK的上升沿和10个时间单位后,DATA跳变,则时钟不正确地获取前面的DATA数据。隐含延迟信号Verilog HDL描述的例子2。

为CLK、DATA1和DATA2创建隐含延迟信号,即使在两个不同的时序检查中都引用CLK,仍然只创建一个隐含的延迟信号,并且用于所有的时序检查。隐含延迟信号Verilog HDL描述的例子3。

为CLK和DATA1创建明确的延迟信号del_CLK和del_DATA1,而为DATA2创建了隐含的延迟信号。换句话说,CLK只创建了一个延迟信号del_CLK,而不是为每个时序检查都创建一个延迟信号。

信号的延迟版本,不管是隐含的还是明确的,可以用在$setup、$hold、$setuphold,、$recovery、$removal、$recrem、$、$period和$nochange时序检查中。这些检查将相应地调整其限制。这将保证在正确的时刻切换提示符。如果调整后的限制小于或等于0,则将限制设置为0,仿真器将产生一个警告。

三防平板设计信号的延迟版本不可以用于$skew、$fullskew和$timeskew时序检查。因为它可能导致信号跳变顺序的逆转,导致模型剩余部分在错误时间切换用于时序检查的提示符,导致在取消一个时序检查冲突时跳变到x。这个问题可以通过为每个检查使用单独的提示符来解决。

对负的时序检查值,可以会出现相互之间的不一致,并且对于延迟信号的延迟值没有解决的方法。在这些情况下,仿真器将产生警告信息。可以将最小的负限制值改为0,并且重新计算延迟信号的延迟,并且通过反复计算直到找到一个解决方案为止。这样,可以解决不一致的问题。因为在最坏情况下,所有负的限制值都变为0,不需要延迟信号。所以,这个过程总是可以找到一个解决方案。

三防平板设计当出现负限制值的时候,延迟时序检查信号才真正地被延迟。如果一个时序检查信号被多个该信号到输出的传播延迟所延迟,将花费比它传播延迟更长的时间来改变输出。三防平板设计中它将在相同的时间(被延迟的时序检查信号发生变化的时间)取代跳变。这样,输出的行为就好像它的指定路径延迟等于应用到时序检查信号的延迟。只有为数据信号的每个边沿给出唯一的建立/保持或去除/恢复时间时,才产生这种情况。隐含延迟信号Verilog HDL描述的例子4。

建立时间是−7(−3和−7中,较大的绝对值),为dCLK创建延迟7。因此,在CLK的上升沿之后的7个时间单位输出Q才发生变化,而不是在指定路径中给出的6个时间单位。


2.三防平板设计负时序检查的条件

通过使用“&&&”操作符,可以使条件与参考信号和数据信号相关。但是,当建立或保持时间为负时,条件需要以更灵活的方式与参考信号和数据信号配对。

下面的$setup和$hold检查将一起工作以提供和单个$setuphold相同的检查:

在$setup检查中,clk是时间检查事件;而在$hold检查中,data是时间检查事件。不能用一个$setuphold表示。因此,提供额外的参数,使得用一个$setuphold表示成为可能。这些参数是timestamp_cond和timecheck_cond。下面的$setuphold等效于分开的$setup和$hold:


在该例子中,timestamp_cond参数为空,而timecheck_cond参数是cond1。

timestamp_cond和timecheck_cond参数与参考信号或数据信号关联,这基于这些信号的延迟版本发生的前后顺序。timestamp_cond与最先跳变的延迟信号关联,而timecheck_cond与第二个跳变的延迟信号关联。

三防平板设计延迟信号只创建用于参考信号和数据信号,不能用于任何和它们相关的条件信号。因此,仿真器不能隐含延迟timestamp_cond和timecheck_cond。通过构造延迟信号的函数,实现用于timestamp_cond和timecheck_cond域延迟的条件信号。条件延迟控制Verilog HDL描述的例子, 条件延迟控制的Verilog HDL描述

分配语句创建条件信号,它是延迟信号的函数。创建延迟的条件与参考信号和数据信号的延迟版本是同步的,用于执行检查。

第一个$setuphold有负的建立时间。因此,时间检查条件TE_cond_D与数据信号D相关;第二个$setuphold有负的保持时间。因此,时间检查条件TE_cond_TI和参考信号CP相关;第三个$setuphold有负的建立时间。因此,时间检查条件DXTI_cond和数据信号TE相关。


一下是用于延迟信号所计算的延迟值:

用延迟的信号为timestamp_cond和timecheck_cond参数创建信号不是必要的,但通常更接近于真实的器件行为。


3.三防平板设计负时序检查的提示符

由于在内部对参考信号和数据信号延迟,因此将时序冲突的检测延迟。在负时序检查中,当时序检查检测到一个时序冲突时,将切换负时序检查中的提示符reg。三防平板设计时序冲突发生在被调整的时序检查值所测量的延迟信号出现冲突时,而不是在未延迟信号在模型输入被冲突内的原始时序检查值所测量时。


4.三防平板设计选项行为

如前所述,应通过调用选项,使能Verilog仿真器处理$setuphold和$recrem时序检查中负值的能力。在不使能此调用选项的情况下,可能会运行为接受具有延迟引用和/或延迟数据信号的负时序检查值而编写的模型。在这种情况下,延迟的参考信号和数据信号成为原始参考信号和数字信号的副本。如果使用了关闭所有定时检查的调用选项,也会发生同样的情况。