异步时钟不约束导致软件花费大量的时间分析异步时钟上,导致真正的关键路径被忽略。
以CLK1=500M CLK2=333M为例,clk1周期为2ns, clk2周期为3ns,最小时间为1ns。
软件默认按照1ns分析,这是十分困难的。处理方法分为一下几种:
1、约束clk1、clk2为异步时钟,综合时不分析clk1、clk2之间的时序。
BLOCK PATH FROM CLKNET “clk1” TO CLKNET “clk2”;
2、只有单个信号夸时钟域时,可以单独约束单个信号。
BLOCK PATH FROM PORT “reg1” TO CELL “reg2”;
3、放宽clk1、clk2之间约束时间。
MULTICYCLE FROM CLKNET “clk1_c” TO CLKNET “clk2_c” 2 X;
MULTICYCLE FROM CLKNET “clk2_c” TO CLKNET “clk1_c” 2 X;
具体时间计算公式: + (n - 1) *
其中default delay calculated=1ns,n为X前数字,multiplier factor applied clock period为目的时钟周期。
clk1到clk2约束时间为:1ns + (2 - 1) * 3ns = 4ns
clk2到clk1约束时间为:1ns + (2 - 1) * 2ns = 3ns
为了更加直观也可以直接按时间约束: