约束更改如下:
NET "u_ddr2_infrastructure/sys_clk_ibufg"TNM_NET= "sys_clk_ibufg";
TIMESPEC "TS_SYS_CLK" = PERIOD "sys_clk_ibufg" 3.75 ns HIGH 50 %;
NET "phy_init_done" OFFSET = OUT 11 ns AFTER "sys_clk_ibufg";
...
分析:
你的ddr2_infrastructure.v中是这么写的
generate
if(CLK_TYPE == "DIFFERENTIAL") begin : DIFF_ENDED_CLKS_INST
//***************************************************************************
// Differential input clock input buffers
//***************************************************************************
IBUFGDS_LVPECL_25 SYS_CLK_INST
(
.I (sys_clk_p),
.IB (sys_clk_n),
.O (sys_clk_ibufg)
);
IBUFGDS_LVPECL_25 IDLY_CLK_INST //clk200一直有信号,其来源于clk200_p和clk200_n;
(
.I (clk200_p),
.IB (clk200_n),
.O (clk200_ibufg)
);
end else if(CLK_TYPE == "SINGLE_ENDED") begin : SINGLE_ENDED_CLKS_INST
//**************************************************************************
// Single ended input clock input buffers
//**************************************************************************
IBUFG SYS_CLK_INST
(
.I (sys_clk),
.O (sys_clk_ibufg)
);
if ( NOCLK200 == 0 ) begin : IBUFG_INST
IBUFG IDLY_CLK_INST
(
.I (idly_clk_200),
.O (clk200_ibufg)
);
end
end
endgenerate
那么你使用差分时钟,CLK_TYPE == "DIFFERENTIAL",程序就综合的是:
if(CLK_TYPE == "DIFFERENTIAL") begin : DIFF_ENDED_CLKS_INST
//***************************************************************************
// Differential input clock input buffers
//***************************************************************************
IBUFGDS_LVPECL_25 SYS_CLK_INST
(
.I (sys_clk_p),
.IB (sys_clk_n),
.O (sys_clk_ibufg)
);
IBUFGDS_LVPECL_25 IDLY_CLK_INST //clk200一直有信号,其来源于clk200_p和clk200_n;
(
.I (clk200_p),
.IB (clk200_n),
.O (clk200_ibufg)
);
这部分使用的时钟就是“sys_clk_ibufg”,所以你该对“sys_clk_ibufg”约束。
|