DDR2 约束文件
时间:10-02
整理:3721RD
点击:
我生成了一个DDR2的MIG,自动生成的约束文件如下:
NET "clk0" TNM_NET = "SYS_clk0";
TIMESPEC "TS_SYS_clk0" = PERIOD "SYS_clk0" 5 ns HIGH 50 %;
NET "clk90" TNM_NET = "SYS_clk90";
TIMESPEC "TS_SYS_clk90" = PERIOD "SYS_clk90" "TS_SYS_clk0" PHASE 1.25 ns HIGH 50 %;
NET "clkdiv0" TNM_NET = "SYS_clkdiv0";
TIMESPEC "TS_SYS_clkdiv0" = PERIOD "SYS_clkdiv0" "TS_SYS_clk0" * 2 HIGH 50 %;
NET "clk200" TNM_NET = "SYS_clk200";
TIMESPEC "TS_SYS_clk200" = PERIOD "SYS_clk200" 5 ns HIGH 50 %;
我从外部输入一个时钟,通过DCM产生clk90和clkdiv0,约束如下:
NET "sys_clk" TNM_NET = "sys_clk";
TIMESPEC "TS_sys_clk" = PERIOD "sys_clk" 5 ns HIGH 50 %;
结果DDR中分析了clk90和clkdiv0之间的关系,出现时序不满足,我通过下面的语句想TIG掉:
NET "clkdiv0" TNM_NET = FFS "clkdiv0_GRP";
NET "clk90" TNM_NET = FFS "clk90_GRP";
TIMESPEC TS_clkdiv0_TIG = FROM "clkdiv0_GRP" TO "clk90_GRP" TIG;
但是约束仍然报错,仍旧分析了两个时钟下的路径
这两个clock,0度的那个应该是产生ddr cmd以及dqs的clock时钟域。
90度的那个clock应该是产生write dq的clock时钟域,这两个clock应该是可以做false path处理,这样工具就不会分析这两个时钟域之间的data的耦合,set false path具体语法可以参考xilinx的timing closure user guild。
所以你需要自己添加约束文件,在ucf文件里,set false path应该可以等价于在定义clock的时候group name不一样。
