问题描述
由于MIG v2.0 Virtex-5 DDR2 SDRAM参考设计的约束方式,当CL = 3且AL = 0处于低频(通常低于200 MHz)时,可能会发生设置违规。
解决/修复方法
提供MIG v2.0 Virtex-5 DDR2 SDRAM参考设计的UCF包括FROM-TO约束以覆盖多周期路径。已知所覆盖的路径难以满足时序,但在功能上可以被视为多周期以帮助满足时序。
NET“sys_clk_p90”TNM = FFS“TNM_CLK90”;
INST“* / u_phy_init_0 / u_ff_phy_init_data_sel”TNM =“TNM_PHY_INIT_DATA_SEL”;
TIMESPEC“TS_MC_PHY_INIT_DATA_SEL_90”=从“TNM_PHY_INIT_DATA_SEL”到“TNM_CLK90”“TS_SYS_CLK”* 4; 将以下内容添加到MIG生成的UCF中:
## MIG 2.1:消除CLK0和CLK90的时间组定义。而是追踪
## multicycle path从始发触发器到任何目的地
##触发器(或者在某些情况下,它也可以是BRAM)
## MUX选择上升/下降CLK0进行第二级读取捕获
INST“* / u_phy_calib_0 / gen_rd_data_sel * .u_ff_rd_data_sel”TNM =“TNM_RD_DATA_SEL”;
TIMESPEC“TS_MC_RD_DATA_SEL”=从“TNM_RD_DATA_SEL”到FFS“TS_SYS_CLK”* 4;
## MUX选择读取数据 – 数据的可选延迟以解决字节偏斜
INST“* / u_usr_rd_0 / gen_rden_sel_mux * .u_ff_rden_sel_mux”TNM =“TNM_RDEN_SEL_MUX”;
TIMESPEC“TS_MC_RDEN_SEL_MUX”=从“TNM_RDEN_SEL_MUX”到FFS“TS_SYS_CLK”* 4;
##校准/初始化完成状态标志(仅适用于PHY逻辑) – 可以
##用于驱动触发器和BRAM
INST“* / u_phy_init_0 / u_ff_phy_init_data_sel”TNM =“TNM_PHY_INIT_DATA_SEL”;
TIMESPEC“TS_MC_PHY_INIT_DATA_SEL_0”=从“TNM_PHY_INIT_DATA_SEL”到FFS“TS_SYS_CLK”* 4;
TIMESPEC“TS_MC_PHY_INIT_DATA_SEL_90”=从“TNM_PHY_INIT_DATA_SEL”到RAM“TS_SYS_CLK”* 4;
##为stage3 / stage4校准中使用的SRL32移位寄存器选择(地址)位
INST“* / u_phy_calib_0 / gen_gate_dly * .u_ff_gate_dly”TNM =“TNM_GATE_DLY”;
TIMESPEC“TS_MC_GATE_DLY”=从“TNM_GATE_DLY”到FFS“TS_SYS_CLK”* 4;
INST“* / u_phy_calib_0 / gen_rden_dly * .u_ff_rden_dly”TNM =“TNM_RDEN_DLY”;
TIMESPEC“TS_MC_RDEN_DLY”=从“TNM_RDEN_DLY”到FFS“TS_SYS_CLK”* 4;
INST“* / u_phy_calib_0 / gen_cal_rden_dly * .u_ff_cal_rden_dly”TNM =“TNM_CAL_RDEN_DLY”;
TIMESPEC“TS_MC_CAL_RDEN_DLY”=从“TNM_CAL_RDEN_DLY”到FFS“TS_SYS_CLK”* 4;
注释掉MIG UCF中的现有约束:
## MIG 2.0约束 – 未涵盖CL = 3,AL = 0的所有路径
#NET“sys_clk_p0”TNM = FFS“TNM_CLK0”;
#NET“sys_clk_p90”TNM = FFS“TNM_CLK90”;
## MUX选择上升/下降CLK0进行第二级读取捕获
#INST“* / u_phy_calib_0 / gen_rd_data_sel * .u_ff_rd_data_sel”TNM =“TNM_RD_DATA_SEL”;
#TIMESPEC“TS_MC_RD_DATA_SEL”=从“TNM_RD_DATA_SEL”到“TNM_CLK0”
#“TS_SYS_CLK”* 4;
## MUX选择读取数据 – 数据的可选延迟以解决字节偏斜
#INST“* / u_usr_rd_0 / gen_rden_sel_mux * .u_ff_rden_sel_mux”TNM =“TNM_RDEN_SEL_MUX”;
#TIMESPEC“TS_MC_RDEN_SEL_MUX”=从“TNM_RDEN_SEL_MUX”到“TNM_CLK0”
#“TS_SYS_CLK”* 4;
##校准/初始化完成状态标志(仅适用于PHY逻辑)
#INST“* / u_phy_init_0 / u_ff_phy_init_data_sel”TNM =“TNM_PHY_INIT_DATA_SEL”;
#TIMESPEC“TS_MC_PHY_INIT_DATA_SEL_0”= FROM“TNM_PHY_INIT_DATA_SEL”TO
#“TNM_CLK0”“TS_SYS_CLK”* 4;
#TIMESPEC“TS_MC_PHY_INIT_DATA_SEL_90”= FROM“TNM_PHY_INIT_DATA_SEL”TO
#“TNM_CLK90”“TS_SYS_CLK”* 4;
##为stage3 / stage4中使用的SRL32移位寄存器选择(地址)位
## 校准
#INST“* / u_phy_calib_0 / gen_gate_dly * .u_ff_gate_dly”TNM =“TNM_GATE_DLY”;
#TIMESPEC“TS_MC_GATE_DLY”=从“TNM_GATE_DLY”到“TNM_CLK0”“TS_SYS_CLK”* 4;
#INST“* / u_phy_calib_0 / gen_rden_dly * .u_ff_rden_dly”TNM =“TNM_RDEN_DLY”;
#TIMESPEC“TS_MC_RDEN_DLY”=从“TNM_RDEN_DLY”到“TNM_CLK0”“TS_SYS_CLK”* 4;
#INST“* / u_phy_calib_0 / gen_cal_rden_dly * .u_ff_cal_rden_dly”
#TNM =“TNM_CAL_RDEN_DLY”;
#TIMESPEC“TS_MC_CAL_RDEN_DLY”=从“TNM_CAL_RDEN_DLY”到“TNM_CLK0”
#“TS_SYS_CLK”* 4;
此问题已在MIG v2.1中得到解决。
没有回复内容