Lattice ddr3教程全攻略之时序约束篇
在看这篇教程之前,建议先看看我的《Lattice ddr3教程全攻略之仿真篇》,假定你自己的工程仿真好了,自己的代码综合编译通过,但是呢,在“place &route design”的时候过不了,或者出现了一大堆莫名其妙的错误,让你抓狂的时候,那,怎么办呢?
这就是这篇教程的作用,让你的DDR3设计完成时序约束。。。
Now,Let’s begin…
我的文件目录:
如果你刚刚仿真完,用的自己建立的工程的话,那么打开xxx.lpf(我的名称是ecp3_ddr3.lpf)打开后会发现自带了下面三条语句:
COMMERCIAL;
BLOCK RESETPATHS ;
BLOCK ASYNCPATHS ;
RESETPATHS是复位管脚走全局异步复位路径;
ASYNCPATHS 避免timing analysis对所有输入IO做时钟周期,输入寄存器路径检查,一般都是定义input_setup参数来影响实际的板级timing。以上两个默认不要改动。
那,现在这种情况,我们来做静态时序分析之前,记得把map trace ,place &route trace, I/O timing analysis勾选上
现在打开:xxx\core\ddr_p_eval\ddr3core\impl\看到
在这里synplify和precision 是lattice所支持的两种综合工具,我当时建立工程时选的是synplify,所以进入到synplify中打开ddr3core_eval.lpf,这个是IP CORE自己生成的约束文件,这个非常有用,要不然IP又不是我们自己写的,我怎么知道哪个路径,IO怎么约束,现在针对于这个约束文件,直接全部复制到ecp3_ddr3.lpf文件。本教程写约束命令都是在这个文件中操作,不在GUI界面,这个请注意。
现在打开spreadsheet view,查看约束信息,打开后会自动运行PIO DRC,在output中输出一些warning和error要注意分析,这里的信息非常重要。
打开后发现弹出了很多个error,我的个神,这么多错误那,是不是要抓狂了,别着急,一个个来看error info,要相信这种错误顺藤摸瓜总能够解决。
错误信息字面上很好理解,就是你约束了这个net,但是timing analaysis工具找不到这个net,说明什么呢?
拜托,说明你约束的路径指定出错噻。。。
那么好,找到正确的路径然后修改路径咯。
这里的路径,指的是模块路径,而不是文件存放路径。