0

我的设计中有一个时钟频率为 100MHz 的 DCM:

COMPONENT DCM_100
PORT(
CLKIN_IN : IN std_logic;--100MHz
RST_IN : IN std_logic; 
CLKIN_IBUFG_OUT : OUT std_logic;
CLKOUT0_OUT : OUT std_logic; --divided by 1
CLKOUT1_OUT : OUT std_logic; --divided by 2
CLKOUT2_OUT : OUT std_logic;--divided by 4
CLKOUT3_OUT : OUT std_logic;--divided by 8
CLKOUT4_OUT : OUT std_logic;--divided by 16
CLKOUT5_OUT : OUT std_logic;--divided by 32
LOCKED_OUT : OUT std_logic
);
END COMPONENT;

设计中使用了输入开关选择的不同时钟。例如,对于开关位置 0,将使用 CLKOUT0_OUT,它实际上是输入时钟除以 1。我只在输入时钟上使用了时序约束,如下所示:

TIMESPEC "TS_clk" = PERIOD "clk_in" 100 MHz HIGH 50 %;

DCM 输出由工具自动约束。然后对所有约束进行时序分析,显示不满足一个约束:

================================================================================
 Timing constraint: TS_Inst_DCM_100_CLKOUT0_BUF = PERIOD TIMEGRP "Inst_DCM_100_CLKOUT0_BUF"         TS_Inst_DCM_100_CLK0_BUF HIGH 50%; 
  43782956 paths analyzed, 19293 endpoints analyzed, 145 failing endpoints 
  145 timing errors detected. (145 setup errors, 0 hold errors, 0 component switching limit errors) 
  Minimum period is  11.280ns. 
 -------------------------------------------------------------------------------- 

和最大。频率是:

设计统计: 最小周期:11.280ns{1}(最大频率:88.652MHz) 从/到任何节点的最大路径延迟:2.771ns

而当我只选择输入时钟的约束时,它与 CLOCK0_OUT 相同,那么所有约束都得到满足。

设计统计:最小周期:8.332ns{1}(最大频率:120.019MHz)

谁能解释一下这种行为。我应该考虑对 DCM 输出自动生成的约束,还是考虑对输入时钟的约束就足够了?问候

4

0 回答 0