我的设计中有一个DCM,时钟频率为100MHz:
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输出约束,还是考虑输入时钟的约束就足够了? 此致