【博客导航】 【导航】FPGA相关

IOB约束

参考《插入IO寄存器和位置约束---lattice&diamond》,推荐的方法是:

1、在strategy设置【Map Design-IO Registering】为Auto

2、修改代码接口描述,添加/* synthesis syn_useioff = 1*/语句(也可以不加,见第3条),如:

     input                    VSRC_CLK          /* synthesis syn_useioff = 1*/,//I1,
output wire VSRC_RESET /* synthesis syn_useioff = 1*/,//O1,
input VSRC_VS /* synthesis syn_useioff = 1*/,//I1,
input VSRC_DE /* synthesis syn_useioff = 1*/,//I1,
input [:] VSRC_D /* synthesis syn_useioff = 1*/,//I16,

3、确保输入信号不被优化,可使用/* synthesis syn_preserve=1 */,将输入打拍的信号保留住。(注:这个才是关键,工具有时不理解为何要将输入信号多打几拍,就擅自帮我们将信号给优化了,这些需要保留的信号,都要使用preserve进行保留。)

     //----------------------------------------------------------------------------
// Register & Wire Definition
//----------------------------------------------------------------------------
reg [:] hdmi_vs_dy,hdmi_hs_dy,hdmi_de_dy;
reg [:] hdmi_dat_d0/* synthesis syn_preserve=1 */;
reg [:] hdmi_dat_d1/* synthesis syn_preserve=1 */;
reg [:] hdmi_dat_d2/* synthesis syn_preserve=1 */;

检查IOB是否符合预期

方法1、打开【Tools-Spreadsheet View】,点击“Cell Mapping”选项卡,查看对应输入输出管脚的PIO Register是否为True。

方法2、也可以使用Follrpaln和Physical View查看:

1、在Map之后,打开Floorplan View,使用Ctrl+f进行net的查找,可以按 video_input_top_16b_inst0/video_in_inst/hdmi_dat_d0 方式,从TOP层层下去找到第一级寄存器信号名。

2、找到net之后,右键,使用Physical View查看。

管脚VSRC_0_D[4]旁边的后缀为MGIOL的模块,就是PIO Register。若没放入IOB,则前缀IOL_的模块不是蓝色。

查看信号延时

在Physical View,查找某个PIN脚信号,比如VSRC_1_CLK(类型选择component),然后点击该模块下边的net,右键Pin Pair Delay可查看该信号延时。

关于时序收敛

参考官网的帮助文档,Timing Closure 3.10

该文档102页,关于时序收敛的一些建议:

1、综合Syplify Pro设置:

  • 打开Pipelining and retiming
  • 关闭Resource Sharing
  • 可以使用sdc文件

2、查看Synplify Pro的报告,关注时钟频率的估计值。

3、Map设置:检测未约束的连接和路径;设置full name;Report Style选择Error Timing Report,这样只显示error的路径,方便快速定位问题。

4、第36页给出优化时序的建议:

5、使用GSR资源。Syplify设置里建议关闭,在MAP设置里打开。

6、使用PAR_ADJ关键字,使得在PAR阶段按过约束的频率进行P&R,但在TRACE分析时按正常频率分析(第46页、71页)。

7、尝试将关键路径UGROUP(第82页),以及97页的Packing相关逻辑。

8、关注logic levels是否过多。

进一步的详细帮助信息,可下载13.8M的《Lattice_Diamond_3_10_3_Help.pdf》。

《Lattice_Diamond_3_10_3_Help.pdf》第496页,给出UGROUP的具体用法,参考该方法进行位置约束如下:

297M高速设计几点原则:

1、FIFO或RAM要设置输出寄存(Lattice默认打1拍,寄存后,相当于打2拍输出)

2、涉及大位宽比较时,使用减法器替代加法器,就只用和0进行比较。

3、后端约束使用位置约束(Lattice使用UGROUP)

4、计数器不能大于11bit,大于的就只能拆分。

5、一些相对固定的变量,比如分辨率res_mode,显示模式disp_mode,可以在后端约束里,用BLOCK将其进行时序忽略。

=======================

by NicoWei
2019-3-16 22:20:08

=======================

【心得】Lattice Diamond 后端约束实战小结的更多相关文章

  1. js中各种跨域问题实战小结(二)

    这里接上篇:js中各种跨域问题实战小结(一) 后面继续学习的过程中,对上面第一篇有稍作休整.下面继续第二部分: -->5.利用iframe和location.hash -->6.windo ...

  2. js中各种跨域问题实战小结(一)

    什么是跨域?为什么要实现跨域呢? 这是因为JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.也就是说只能访问同一个域中的资源.我觉得这就有必要了解下javascript中的同源策略 ...

  3. Lattice Diamond 和 ispLEVER 的不同之处

    Lattice Diamond 和 ispLEVER.有一些不同,尤其是如何管理工程的不同,包括以下几点: 1.ispLEVER 有多种工程类型,不同的程序文件类型需要不同的类型的工程:但是Diamo ...

  4. Lattice Diamond 学习之编译、检查和设置约束

    在新建工程以及完成代码的输入之后.则就要进行编译,并检测错误. 一. Generate Hierarchy(产生层次结构). 1. 点击Generate Hierarchy 图标或者Design -- ...

  5. Elasticsearch全文检索实战小结

    一.项目概述 这是一个被我称之为“没有枪.没有炮,硬着头皮自己造”的项目.项目是和其它公司合作的三个核心模块开发. 使用ES的目的是: 1).采集数据.网站数据清洗后存入ES: 2).对外提供精确检索 ...

  6. Lattice Diamond安装

    1.下载:到Lattice官网 http://www.latticesemi.com/ 注册一个lattice的账号后就可以去下载Diamond,登陆后如下图,根据自己系统情况选择对应的版本,我用的是 ...

  7. lattice diamond 3.7安装破解

    第一步安装:执行.EXE文件,一直下一步,最后license选择没有USB什么的那个(具体记不清了). 第二步破解:安装完成后在环境变量中将license路径指定到license文件即可(LM_LIC ...

  8. 使用Junit对Spring进行单元测试实战小结

    Demo代码: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = "classpath*:/ ...

  9. iBatis + SQL Server 项目开发实战小结

    几年前跟随项目经理做的一个ERP小项目,自己业余时间整理的开发手册,供参考. 开发环境配置:编程环境为Microsoft Visual Studio 2010,数据库是SQL Server 2008 ...

随机推荐

  1. 织梦5.7sp1最新问题:后台不显示编辑器

    1.在后台的“系统基本参数”里修改“站点设置”的“网页主页链接:空”. 2.修改“核心设置”DedeCMS安装目录:空“. 3.试试,问题解决.

  2. 阿里如何实现海量数据实时分析技术-AnalyticDB

    导读:随着数据量的快速增长,越来越多的企业迎来业务数据化时代,数据成为了最重要的生产资料和业务升级依据.本文由阿里AnalyticDB团队出品,近万字长文,首次深度解读阿里在海量数据实时分析领域的多项 ...

  3. 音频处理贤内助--libsndfile

    libsndfile是由Erik de Castro Lopo写的的广泛用于读写音频文件的C语言库.它支持的音频格式十分广泛并且能够自动的从一种格式到另外一种格式.它极大的方便了开发者,可以让开发者忽 ...

  4. 第一周 IP通信基础学习回顾

    这周的课程首先让我们学习了计算机网络概述,了解计算机网络的定义和功能分别是:资源共享,信息传输与集中处理,负载均衡与分布处理,综合信息服务.同时也对计算机网络的演进,计算机网络的分类,计算机网络的性能 ...

  5. PMBook - 6.项目进度管理

      6.3 排列活动顺序 6.3.1 排列活动顺序:输入 6.3.1.1 项目管理计划 6.3.1.2 项目文件 6.3.1.3 事业环境因素 6.3.1.4 组织过程资产 6.3.2 排列活动顺序: ...

  6. 没错,老板让我写个 BUG!

    前言 标题没有看错,真的是让我写个 bug! 刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动.这可是我特长啊:终于可以光明正大的写 bug 了

  7. 程序员也想改 Lottie 动画?是的!

    一.前言 Hi,大家好,我是承香墨影! Lottie 是 Airbnb 开源的一套跨平台的完整的动画效果解决方案,用过都说好.完全解耦开发人员和设计师,让设计师设计的动画,在程序中无缝还原,真是一旦拿 ...

  8. 推荐三个 VSCode 摸鱼插件

    周三是一周中最难以度过的一天,离上个周末过去了两天,离下个周末也还有两天.为了让各位更好地搬(mo)砖(yu),今天给大家推荐三款效(mo)率(yu)工(shen)具(qi)! 一.听歌插件 1 功能 ...

  9. 原子操作&普通锁&读写锁

    一:原子操作CAS(compare-and-swap) 原子操作分三步:读取addr的值,和old进行比较,如果相等,则将new赋值给*addr,他能保证这三步一起执行完成,叫原子操作也就是说它不能再 ...

  10. dotnet core 微服务教程

    这个教程主要是对于第一次使用dotnet core开发的同学. 运行环境是在centos 7 , 使用了docker容器. 即这是一篇运行在linux的docker容器上的微服务的简单应用. 一. 安 ...