1、好的代码风格
1)代码要跟器件结构相关
2)避免异步复位,异步复位同步化,全局复位局部化
3)层次的边界要加流水寄存
\quad例如:BRAM中有两级register,第一级在内部,第二级在外部slice里的寄器。不同功能模块内部的寄存器要求的速度也不一样,不同位置的寄存器速度不一样。如ILOGIC中的寄存器对setup要求最高(寄存器最慢),OLOGIC中的寄存器对setup的要求最低(寄存器最快)。Slice中的寄存器速度最快,所以经常在mem,clock模块输出端增加一个slice的register。

4)Block RAM和DRAM的选择
\quad根据应用需求适当选择

4)流水线技术是提高系统频率的一种方法

2、精准的时序约束
\quad精简而准确的约束是时序收敛的必要条件,Baseline基线方法是充分条件。

1)检查时序约束命令:
\quadcheck_timing
2)小技巧:
\quad如果约束过紧可以用以下命令:
\quadset_clock_uncertainty –setup 0.3 [get_clocks my_CLK]

3、管理高扇出网络
\quad高扇出网络几乎是限制FPGA设计实现更高性能的第一大障碍,所以需要严肃对待设计中的高扇出。

1)查找最大的扇出网络命令:
\quadReport_high_fanout_nets –load_types –max_nets 2 –timing
2)约束高扇出网络命令
\quadmax_fanout可以限定其扇出值,让工具在实现过程中复制驱动端寄存器来优化。也可以多次物理优化phys_opt_design改善扇出。

4、层次化设计结构
\quad自底向上的设计流程

5、跨时钟域路径的设计和约束
1)缺省模式下所有时钟域都是related
2)同步时钟跨时钟域
\quad拥有相同的源和确定的相位关系
3)异步时钟跨时钟域
\quad源不相同,没有确定相位关系
\quad简单的处理方式:双register(ASYNC_REG),FIFO,握手方式同步
4)常用的约束命令
\quad时钟约束

 set_multicycle_path:多时钟路径约束set_clock_groups:时钟分组,等效set_false_pathset_false_path:伪时钟路径约束

\quadCDC结构问题检查

  report_cdcmethodology_checks

\quad跨时钟域问题检查

  report_clock_interation

\quad查看时钟网络

  report_clock_networks

6、少而精的物理约束
\quad万不得已的时候 不要手动布局LOC,如果要做也是对关键元件关键路径做。

7、选择恰当的策略
\quad不同的工程包含不同的设计策略:性能、功耗、面积、流程
\quad可以制订自己的策略,如:利用钩子文件,在设计前设计后调Phys_opt_design

8、共享控制信号
1)尽量整合频率相同的时钟和时钟使能信号;
2)在生成IP时选择“共享逻辑”功能,则可以在不同IP间尽可能的共享时钟资源;
3)复位
\quada) 尽量少使用复位
\quadb) 必须复位时采用同步复位
\quadc) 用高电平有效复位
\quadd) 避免异步复位
4)常用命令
\quadreport_control_sets

9、读懂日志和时序报告
1)注重critical warnings 和 errors
2)检查DRC violations
\quadmethodology_checks
\quadtiming_checks
3)设计分析报告
\quadReport_design_analysis(非常有用)用来报告关键路径上的潜在问题以及设计的拥塞程度。

10、充分发挥tcl的作用

FPGA开发之时序收敛10个小技巧相关推荐

  1. 如何实现复杂FPGA设计的时序收敛

    "打鼹鼠"是一个古老(电子时代之前)的休闲游戏.在桌面上有许多洞,每个洞里都藏着鼹鼠.当有鼹鼠从洞里钻出来时,你就用锤子打它,让鼹鼠退回洞里,你因此而得分.当鼹鼠返回洞里时,又有一 ...

  2. 后端开发—10个小技巧教你保证线程安全

    前言 对于从事后端开发的同学来说,线程安全问题是我们每天都需要考虑的问题. 线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题. 比如:变量a=0 ...

  3. 聊聊保证线程安全的10个小技巧

    `` 前言 对于从事后端开发的同学来说,线程安全问题是我们每天都需要考虑的问题. 线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题. 比如:变量 ...

  4. 你一定要知道的保证线程安全的10个小技巧

    导语 对于从事后端开发的同学来说,线程安全问题是我们每天都需要考虑的问题. 线程安全问题通俗的讲:主要是在多线程的环境下,不同线程同时读和写公共资源(临界资源),导致的数据异常问题. 比如:变量a=0 ...

  5. ☆ 10个小技巧,让你的 Python 代码更加优雅~ ☆

    10个小技巧改进的 Python 代码,让你的代码更加简洁.更加 Python 化. 1. 用enumerate代替range 如果你需要遍历一个列表,并且需要同时获取索引和元素,大多数情况可能会使用 ...

  6. php页面开发,PHP网站开发中常用的8个小技巧

    这篇文章主要介绍了PHP网站开发中常用的8个小技巧,本文讲解了命名.使用.PHP判断Form表单是否提交.PHP 获取字符串长度.PHP超全局对象等内容,需要的朋友可以参考下 PHP是一种用于创建动态 ...

  7. omnigraffle 画曲线_OmniGraffle使用的10个小技巧

    OmniGraffle是由The Omni Group制作的一款绘图软件,其只能于运行在Mac OS X和iPad平台之上.在很多方面,OmniGraffle都类似于Microsoft Visio.下 ...

  8. Word2003的10个小技巧(转)

    Word2003的10个小技巧(转) word2003是现在比较流行的文字处理软件之一,也是Office2003办公套装软件的一个重要组成部分.以下是word2003的十个实用小技巧,希望大家在今后使 ...

  9. omnigraffle 导出html,OmniGraffle使用的10个小技巧

    原文发表于http://www.weste.net/2014/3-7/95727.html OmniGraffle是由The Omni Group制作的一款绘图软件,其只能于运行在Mac OS X和i ...

最新文章

  1. 北大数学天才许晨阳,回国效力6年后,为什么又去了美国任教?
  2. java自定义异常返回_Java自定义异常
  3. Vue 页面如何利用生命周期函数监听用户预览时长
  4. 特斯拉AI Day首秀:FSD终极进化?AI超算Dojo、D1芯片、人形机器人亮相!
  5. 复制assert目录文件到私有目录_每天学点之CentOS文件/目录的权限
  6. windows7系统损坏修复_windows系统启动不了,怎么办?一招轻松搞定!
  7. SQL Server之旅:(二)Could not load the DLL xpstar90.dll
  8. TCPUDP测试工具
  9. 基于FPGA的自动售货机设计(EDA课程设计)(湖南科技大学)
  10. Android学习笔记——用户界面开发进阶(多个示例记录)
  11. Manjaro安装与软件硬件基本配置(保姆级)
  12. django 命令行创建项目app
  13. hotspot解释器和JIT
  14. 监控摄像头的测试方法
  15. NYOJ迷宫寻宝(一)
  16. java 事件流_JDK14的新特性:JFR,JMC和JFR事件流
  17. [USF-XSim-62] 'elaborate' step failed with error(s).使用vivado进行verilog实验,无法进行仿真,如何解决?
  18. PCB拼板和工艺边教程
  19. 忘记了压缩包密码,怎么解压文件?
  20. C语言 typedef 和 #define详解

热门文章

  1. 四大国际快递时效、优势对比
  2. 环境温度 和气温的区别,有区别吗
  3. 最新计算机安全参考文献,最新计算机络安全参考文献 计算机络安全期刊参考文献哪里找...
  4. pn532写入手机nfc_NFC的PN532 读写命令格式
  5. HTML几种设置水平居中和垂直居中的方式
  6. xiaopiu简单使用
  7. 大数据是什么?1分钟了解大数据的概念
  8. MAC地址、IP地址以及ARP协议
  9. 如何进行服务器备份操作系统,如何进行服务器备份操作系统
  10. WPF教程(二)--Application WPF程序启动方式