在上一篇关于TimeQuest的文章中,我引用了Quartus II自带的一个示例。这个示例很有代表性——两个相位关系固定的时钟域、标准同步设计、复杂组合逻辑路径、调用了DSP资源。这个例子用来学习TimeQuest的用法和时序分析的基本原理是再好不过了。
除了上面提到的几个特点,这个例子中还包含了极为特殊的一种时序情况:跨时钟域的多周期时序分析。该示例中关于多周期的约束条件如下:
set_multicycle_path -end -setup -from [get_clocks {clk}] -to [get_clocks {clkx2}] 2
set_multicycle_path -end -hold -from [get_clocks {clk}] -to [get_clocks {clkx2}] 1
上面的约束中,clk是100MHz的时钟;clkx2是由clk二倍频得到的,频率是200MHz,与clk有0.5ns的相位差。根据上面的约束,从clk到clkx2的建立时间路径是2个clkx2周期,从clk到clkx2的保持时间路径是1个clkx2周期。
在跨时钟域时序分析中,只有当两个时钟之间有确定的时序关系时时序约束才有意义,这是本文要着重分析的内容;当两个时钟之间没有确定的相位关系时,约束二者之间的时序关系是没有意义的,针对这种情况,只能采用标准的跨时钟域数据传递处理,还要记得设置二者之间的时序路径为false_path。
图一、查看Multicycle约束为0的Hold Time时序余量计算
图二、查看Multicycle约束为1的Hold Time时序余量计算
图三、查看Multicycle约束为2的Hold Time时序余量计算
AN 481: Applying Multicycle Exceptions in the TimeQuest Timing Analyzer
文章评论(0条评论)
登录后参与讨论