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,说明什么呢?

拜托,说明你约束的路径指定出错噻。。。

那么好,找到正确的路径然后修改路径咯。

这里的路径,指的是模块路径,而不是文件存放路径。

比如我要解决下面这个错误警告:ERROR - sclk_c matches no clock nets in the design.

1、那么好,首先点击period/frequency按钮弹出如下界面,找到sclk,发现它是在我UUT模块里面的,不在顶层,难怪按照官方的约束好不到这个clock net,那么好,直接关掉,然后去修改ecp3_ddr3.lpf文件,上面所提示的错误挨个这样找到相应的路径,重复N次,然后写到lpf文件中。其中net名称以这里为准。

##########################################################################

# Frequency Declerations

##########################################################################

FREQUENCY NET "clk_in_c" 100.0 MHz ;

FREQUENCY NET "sclk_c" 200.0 MHz PAR_ADJ 40.0 ;

FREQUENCY NET "clkos" 400.0 MHz PAR_ADJ 80.0 ;

FREQUENCY NET "sclk2x" 400.0 MHz PAR_ADJ 80.0 ;

USE PRIMARY NET "clk_in_c";

USE PRIMARY NET "sclk_c";

USE PRIMARY NET "clkos";

USE PRIMARY NET "sclk2x";

##########################################################################

# CSM logic preferences

##########################################################################

BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "sclk_c" ;

BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "*clkos" ;

BLOCK PATH FROM CLKNET "sclk_c" TO CLKNET "clk_in_c" ;

BLOCK PATH FROM CLKNET "*sclk2x" TO CLKNET "clk_in_c" ;

BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "*eclk" ;

BLOCK PATH FROM CLKNET "*clkos" TO CLKNET "*eclk" ;

BLOCK PATH FROM CLKNET "*clkos" TO CLKNET "sclk_c" ;

BLOCK PATH FROM CLKNET "*sclk2x" TO CLKNET "*clkos" ;

修改为:

#####################################################################

# Frequency Declerations

#####################################################################

FREQUENCY NET "UUT/sclk" 200.000000 MHz PAR_ADJ 40.000000 ;

FREQUENCY NET "*clkos" 400.000000 MHz PAR_ADJ 80.000000 ;

FREQUENCY NET "*sclk2x" 400.000000 MHz PAR_ADJ 80.000000 ;

FREQUENCY NET "vclk_c" 50.000000 MHz PAR_ADJ 10.000000;

FREQUENCY NET "clk_in_c" 100.000000 MHz PAR_ADJ 20.000000;

FREQUENCY NET "UUT/u_ddr3_sdram_mem_top/clkos" 400.000000 MHz PAR_ADJ 80.000000;

FREQUENCY NET "UUT/u_ddr3_sdram_mem_top/sclk2x" 400.000000 MHz PAR_ADJ 80.000000;

USE PRIMARY NET "clk_in_c" ;

USE PRIMARY NET "UUT/sclk" ;

USE PRIMARY NET "UUT/u_ddr3_sdram_mem_top/clkos" ;

USE PRIMARY NET "UUT/u_ddr3_sdram_mem_top/sclk2x" ;

#####################################################################

# CSM logic preferences

#####################################################################BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "UUT/sclk" ;

BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "*clkos" ;

BLOCK PATH FROM CLKNET "UUT/sclk" TO CLKNET "clk_in_c" ;

BLOCK PATH FROM CLKNET "*sclk2x" TO CLKNET "clk_in_c" ;

BLOCK PATH FROM CLKNET "clk_in_c" TO CLKNET "*eclk" ;

BLOCK PATH FROM CLKNET "*clkos" TO CLKNET "*eclk" ;

BLOCK PATH FROM CLKNET "*clkos" TO CLKNET "UUT/sclk" ;

BLOCK PATH FROM CLKNET "*sclk2x" TO CLKNET "*clkos" ;

以上是修改后的时钟约束命令,FREQUENCY表示约束时钟频率;PRIMARY表示约束成走全局时钟网络,注意哦,lattice ecp3只有八个全局时钟网络,而且有器件位置限制,最后以约束成功为标志。上面vclk_c我工程中的另一个时钟和DDR3无关。注意这里的各个信号的模块路径应该以自己工程模块路径为准,以上只是本人项目中的路径,网友要修改为自己的。下面的修改方式都是以我的工程模块为准的。

2、修改好时钟后,再来一次place &route design…发现error少了好多,顿时舒服不少,那接着来。

哦,找不到rst信号,去看看你自己的工程中,复位应该用的不是这个名称,so,fix it…

BLOCK PATH FROM PORT "reset_*" ;

修改后,保存ecp3_ddr3.lpf文件,CHECK PIO DRC后发现没有error了

Oh,yeah….到这里还没完哦,现在只是PIO DRC  OK了,只能说完成50%了。

3、点击place &route design,再来一次时序分析,等待分析结果…分析完成后打开timing analysis view

然后还发现了这么多错误,那么继续找原因了。

打开diamond软件下方的warning信息,可以得到很多提示,那一个个来

上面的提示意思又是没找到COMP,那说明还是路径问题,那么还是继续修改路径:

LOCATE COMP "U1_ddr3_pll/PLLInst_0" SITE "PLL_R35C5" ;

LOCATE COMP "U1_clocking/sync"         SITE "LECLKSYNC2" ;

修改为:

LOCATE COMP "UUT/u_ddr3_sdram_mem_top/U1_ddr3_pll/PLLInst_0" SITE "PLL_R35C5" ;

LOCATE COMP "UUT/u_ddr3_sdram_mem_top/U1_clocking/sync" SITE "LECLKSYNC2" ;

又有:

LOCATE PGROUP "U1_clocking/clk_phase/phase_ff_0_inst/clk_phase0"   SITE "R24C5D" ;

LOCATE PGROUP "U1_clocking/clk_phase/dqclk1bar_ff_inst/clk_phase1a" SITE "R34C2D" ;

LOCATE PGROUP "U1_clocking/clk_phase/phase_ff_1_inst/clk_phase1b"  SITE "R34C2D" ;

LOCATE PGROUP "U1_clocking/clk_stop/clk_stop"                      SITE "R34C2D" ;

修改为:

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_clocking/clk_phase/phase_ff_0_inst/clk_phase0" SITE "R24C5D" ;

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_clocking/clk_phase/dqclk1bar_ff_inst/clk_phase1a" SITE "R34C2D" ;

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_clocking/clk_phase/phase_ff_1_inst/clk_phase1b" SITE "R34C2D" ;

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_clocking/clk_stop/clk_stop" SITE "R34C2D" ;

4、修改好了之后,再来一次place &route design,然后打开timing analysis view

然后在daamond下面还发现了这个warning

那还是找不到这个节点,还是路径问题,接着改:

LOCATE PGROUP "U1_ddr3core/U1_ddr3_sdram_phy/read_pulse_delay_0/read_pulse_delay_0" SITE "R13C2D" ;

LOCATE PGROUP "U1_ddr3core/U1_ddr3_sdram_phy/read_pulse_delay_1/read_pulse_delay_1" SITE "R22C2D" ;

修改为:

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_ddr3core/U1_ddr3_sdram_phy/read_pulse_delay_0/read_pulse_delay_0" SITE "R13C2D" ;

LOCATE PGROUP "UUT/u_ddr3_sdram_mem_top/U1_ddr3core/U1_ddr3_sdram_phy/read_pulse_delay_1/read_pulse_delay_1" SITE "R22C2D" ;

5、修改好了之后,再来一次place &route design,然后打开timing analysis view .发现没有了红色高亮信息,perfect…

看到了这,你就可以大松一口气了,DDR3 IP内部的的时序约束到此就完成。

接下来就是绑定管脚,设置IO电平等基础操作,网友自己搞定了。。。

Now.Let me have a tea…

….

….

总结:DDR3 IP约束参数是在实例化IP的时候自动生成的,我们只要把它COPY进来,首先找到需要约束的信号处在那个模块路径下,不断修改各个路径到自己的工程模块中,,然后place &route design看report信息,直到没有了高亮信息出现就算完成。

接下来约束自己的逻辑,一般的设计,都是约束时钟为主,然后看报告有没有违规的逻辑或者路径,然后再反复修改。。。

Look,so easy…

By: BACKKOM

QQ:784496547

Date:2014/9/19

Lattice ddr3教程全攻略之时序约束篇相关推荐

  1. Lattice ddr3教程全攻略之仿真篇

    Lattice ddr3教程全攻略之仿真篇 对于这部分,首先建议安装好diamond3.1,modelsim se 10.1a这两个软件,如果想仔细分析DDR3的IP部分,可仔细阅读DDR3 SDRA ...

  2. 三星S508手机DIY图文教程全攻略

    三星S508手机DIY图文教程全攻略 原著:天龙 2004.10.26-28  [QQ:435993806] 修改:hanchan520 12.02-12.03  [QQ:10808414] 编订:飞 ...

  3. WebGoat 8.1 靶场 刷题通关教程全攻略 - (A1) Injection

    WebGoat 8.1 靶场 刷题通关教程全攻略 - A1 Injection (A1) Injection SQL Injection (intro) 2. It is your turn! 3. ...

  4. mysql中phpmyadmin安装教程_phpMyAdmin 安装教程全攻略

    管理MYSQL数据库的最好工具是PHPmyAdmin,现在最新版本是phpMyAdmin 2.9.0.2,这是一个国际上开源的软件,一直在更新版本,你可以从 http://www.phpmyadmin ...

  5. Photoshop touch教程全攻略

    原地址:http://bbs.gfan.com/android-5210094-1-1.html 感谢各位回帖朋友的支持,你们的肯定是我最大的动力! 所有十五讲课程中文翻译工作已全部完工!兴奋幸福喜悦 ...

  6. 携号转网全攻略,这一篇就够了

    文章来源:我的信 携号转网就要来了,你知道吗? 11月30日,三大电信运营商将在全国范围内,全面实施携号转网,喜大普奔! 早在2019年7月31日,工业和信息化部(以下简称工信部)发布<携号转网 ...

  7. DedeCms的SEO优化全攻略

    DedeCms的SEO优化全攻略 这是一篇从DEDECMS标签入手谈SEO优化的文章,操作才需要了解DEDECMS标签的作用和规则进行修改,建议修改前先进行备份操作. 保密资料,请勿转载. 网站管理系 ...

  8. Gradle脚本基础全攻略

    转载http://blog.csdn.net/yanbober/article/details/49314255 [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处 ...

  9. vue-resource全攻略

    Vue.js--vue-resource全攻略 概述 上一篇我们介绍了如何将$.ajax和Vue.js结合在一起使用,并实现了一个简单的跨域CURD示例.Vue.js是数据驱动的,这使得我们并不需要直 ...

最新文章

  1. mlcc激光雷达与相机外参标定初体验
  2. 徐直军 华为没有鸿蒙,华为徐直军:“鸿蒙”这个名字是媒体取的
  3. Linux insmod 命令学习
  4. d类功放芯片_应用于无滤波级D类音频功放的新型死区时间控制系统
  5. Spring Boot jar方式打包发布
  6. java快速压缩文件夹_如何使用java压缩文件夹本身
  7. DBeaverUE for Mac(数据库管理软件)旗舰版
  8. H3C-H3CNE 华三网络工程师从入门到精通 自学视频课程[肖哥]-肖宗鹏-专题视频课程...
  9. 对象图(Object Diagram)
  10. 摩尔庄园手游测评——爷青回or爷青毁?
  11. ORB-SLAM2安装以及遇到问题
  12. 苹果支付 php,【苹果支付二】apple pay苹果支付以及自动续订订阅开发 - Laravel学习网...
  13. 我有一个梦,叫“禾下乘凉梦“!
  14. 推荐一个C# 制作免安装程序的工具和方法,超级好用 fody
  15. 2月28日,鸿蒙群友见面会活动回顾
  16. 三种商业模式B2C、B2B、C2C
  17. jquery checkbox选中事件监听
  18. tplink720n变无线打印服务器,TL-WR720N路由器无线路由模式设置
  19. Delphi Xe 下载(破解)
  20. Mina GMS/MEID Activate 本地解锁真实速度

热门文章

  1. mac book 华为C8815不能debug
  2. vue Linter的各种坑
  3. Gopher Daily (2020.05.02) ʕ◔ϖ◔ʔ
  4. 计算机it知识,IT行业-计算机基础知识总结
  5. numeric_limits
  6. Java数组,集合,列表的使用与区别
  7. Win系统下如何安装Maven教程
  8. C++顺序栈的实现(进栈,出栈,判断栈空,打印输出,获取栈顶元素)
  9. Study16 面向对象三大特性
  10. Linux Shell操作json工具jq