本节将回顾工具检查建立保持时间的原则,接下来介绍设置多周期后的检查原则。多周期命令是设计约束中常用的一个命令,用来修改默认的建立or保持时间的关系。基本语法如下
默认的建立时间与保持时间的检查方式
DC工具计算默认的建立保持时间关系是基于时钟的活动沿(Active edges),数据必须要在活动沿的前或后可以安全使用,以满足建立或保持时间的要求。
- 在起始点,活动沿是寄存器的打开沿
- 在结束点,活动沿是寄存器的关闭沿
- 对边沿触发的寄存器而言,其上升沿即是它的打开沿,又是它的关闭沿
对高电平有效的latch而言,上升沿是其打开沿,下降沿是其关闭沿,如下图所示
一些建立时间和保持时间的检查举例:
建立时间:5 保持时间:0 | |
建立时间:10 保持时间:0 | |
建立时间:1 保持时间:0 | |
建立时间:20 保持时间:10 由于使用了最严格(最大)保持关系,因此该路径的最小延迟要求为10 ns。这是一个保守的检查,可能不适用于某些设计。可以使用以下命令修改此默认保持关系: set_multicycle_path 1 -hold -end -from ff1/CP -to ff2/D 设置后保持时间:0 |
单时钟同向位设计
单时钟多相位设计
多时钟设计
多频时钟设计(一定是同步时钟,相位关系确定)的模型关系如下图所示:
工具默认的检查关系如下所示
- 对建立时钟的检查是从发起时钟的上升沿起,到距离其最近的捕获时钟的上升沿
- 对保持时间的检查是从发起时钟到捕获时钟的上升沿
情况1——相对于CLKB
在设置FFA1到FFB2的多周期路径后,工具的检查逻辑如下:
工具会将捕获沿向后推一个时钟周期进行建立时间检查,即在原本的10units 的基础上向后推迟TCLKB,对保持时间的检查同样会向后推一个时钟周期,即60units
情况2——相对于CLKA
在设置FFA1到FFB2的多周期路径后,工具的检查逻辑如下:
工具会设置新的建立时间检查约束为20units(原始的10加上一个额外的clkA周期)。保持时间的检查约束为是10个单位时间,因为clkA的下一条边是20,clkB的同一条边是30。