MIG v2.0 - 当CL = 3且AL = 0处于低频时,Virtex-5 DDR2 SDRAM设计可能会遇到设置违规

问题描述

由于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中得到解决。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2018-08-18 20:44:00 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它