时序分析TimeQuest之多周期约束.
网上有很多讲ALTERA时序约束(TimeQuest)的文章,其中关于多周期约束set_multicycle_path的,有一点很多文章包括ALTERA的官方教程都没有说明,导致很多朋友按照文章上的方法去约束,可能导致数据在多周期传送的时候会出现亚稳态。
举个launc_clk 和latch_clk同频同相位(launch_clk 和latch_clk频率有倍数关系、有相移等的情况也是同样的分析结果)的例子,数据的有效长度是三个时钟周期,缺省的setup和hold的分析沿如下图所示:
如果设置多周期约束 set_multicycle_path -setup 3、set_multicycle_path -hold 2 则setup和hold的分析沿如下图所示:
问题是在这种情况下,上面的多周期约束是正确的约束吗,latch_clk 能正确的采样DATA数据吗,如果DATA数据的延时刚好是一个时钟周期、数据的变化沿刚好是latch_clk的第二个时钟的上升沿呢?如下图所示:latch_clk的第二个时钟的上升沿采样输出的数据就有可能出现亚稳态。解决的方法是加入一个寄存器使能信号(如下图的data_en)在该采样的时钟沿采样才能避免上述问题。
launch_clk 和latch_clk频率有倍数关系、有相移等的情况做多周期约束的时候也要做如上处理。
用户377235 2013-1-15 20:56
用户1670510 2012-10-8 11:46
用户1667481 2012-9-29 11:38
用户403664 2012-9-29 11:05