首页 理论教育时钟跳变的约束与延迟分析

时钟跳变的约束与延迟分析

【摘要】:接下来我们对这4种路径的时序约束逐一进行介绍。图6.14 寄存器间的时序路径图6.15 理想时钟与实际时钟uncertainty描述的是时钟跳变时间的不确定性,这种不确定性来源于3个方面,分别是jitter、skew和margin。latency指的是时钟沿到来的延迟。latency分为两种,一种是时钟源到被综合模块时钟端口之间的延迟,叫作Source Latency。图6.16 Clock Latency时钟的跳变沿在实际电路中并不是瞬时变化的,而是有一定的坡度,transition描述的就是这个坡度的持续时间,如下例所示。

图6.10中提到了4种时序路径,分别是寄存器间的路径、输入路径、输出路径和组合逻辑路径。接下来我们对这4种路径的时序约束逐一进行介绍。首先寄存器间的路径可以通过约束时钟来实现。

如图6.14所示,寄存器之间存在组合逻辑X,寄存器FF3的建立时间为0.2ns,可通过下面这条命令,将一个周期为2ns所示时钟施加在端口Clk上,并取名为MCLK(命令中的2表示2个时间单位,时间单位在技术库中定义,此例中时间单位为1ns,后文中的命令也类似)。

978-7-111-55094-5-Chapter06-54.jpg

通过这条约束命令,DC可以计算出X逻辑的最大延迟为2ns-0.2ns=1.8ns。如果X逻辑延迟超过1.8ns,则寄存器FF3采到的值为亚稳态,所以DC会尽力综合将X逻辑的延迟限制在1.8ns以内,在满足时序约束的前提下,DC会保证电路的功耗和面积尽可能小。

寄存器时钟端的时钟由于经过了前级时钟树的各种器件的作用,波形已经不再是理想时钟,没有那么规则,如图6.15所示。所以在考虑时钟约束的时候要考虑到它的uncertainty、latency和transition。

978-7-111-55094-5-Chapter06-55.jpg

图6.14 寄存器间的时序路径

978-7-111-55094-5-Chapter06-56.jpg

图6.15 理想时钟与实际时钟

uncertainty描述的是时钟跳变时间的不确定性,这种不确定性来源于3个方面,分别是jitter、skew和margin。jitter指的是时钟源的抖动,skew是指不同寄存器始终端口之间的时钟偏差,margin指的是工程余量。时钟的uncertainty可以通过set_clock_uncertainty命令设置,下例接图6.14进行说明。

978-7-111-55094-5-Chapter06-57.jpg

由于时钟存在不确定性,所以对X逻辑的约束较为苛刻,即允许X逻辑的最大延迟为2ns-0.3ns-0.2ns=1.5ns。

latency指的是时钟沿到来的延迟。为了平衡时钟到达不同寄存器之间的延迟,在时钟树上要加入缓冲器(buffer),这些buffer延迟加上线延迟就产生了latency。latency分为两种,一种是时钟源到被综合模块时钟端口之间的延迟,叫作Source Latency。另一种是被综合模块时钟树上的延迟,叫作Network Latency。set_clock_latency命令默认设置是Network Latency,如要设置Source Latency可加选项-source,如图6.16所示。

978-7-111-55094-5-Chapter06-58.jpg

978-7-111-55094-5-Chapter06-59.jpg

图6.16 Clock Latency

时钟的跳变沿在实际电路中并不是瞬时变化的,而是有一定的坡度,transition描述的就是这个坡度的持续时间,如下例所示。

978-7-111-55094-5-Chapter06-60.jpg