时序约束方法及解决timing问题的方法(一)
承接上一篇文件《 基于xilinx FPGA验证ASIC可能遇到的timing问题》中提到的问题,本文列数一下在vivado中可能用到的约束方法和面对timing问题的解决办法。
(1)详尽的时钟约束
create_clock:和其他FPGA EDA tool一样,在vivado中timing约束越全越好,越细越好,而place约束可以很粗略或者省略调。约束中最常用的语句就是create_clock了,用语法create_clock -name NAME -period PRERIOD get_ports{***}来定义FPGA的外部输入时钟源头,这是FPGA所有MMCM或PLL的时钟源,一般对其只有周期和引脚的约束,需要注意的是引脚最好采用FPGA的时钟专用引脚,对xilinx 7系列FPGA来说就是有MRCC和SRCC属性的引脚,这类引脚可以直接驱动BUFG,保证时钟信号质量,如果设计中不得已采用了一般的GPIO作为时钟输入引脚,在约束中最好加上CLOCK_DEDICADED_ROUTE的property约束,否则在place中可能因为BUFG资源的互相挤压报出error。
create_generated_clock:创建衍生时钟的约束同样非常常用,在FPGA中的design很少只工作在同一时钟下,所以create_generated_clock经常用于对MMCM或者PLL,甚至Flip-Flop分频产生的时钟增加约束,语法create_generated_clock -name NAME -divide_by DIVIDE -multiply_by MULTI -source SOURCE_CLOCK get_pins{***},如果有相位差还要增加相位的参数, create_generated_clock很灵活,可以用rise和fall边沿来定义时钟,这样可以定义占空比特殊的时钟。
set_input_delay:对FPGA的input类型GPIO增加set_input_delay约束,语法set_input_delay -max MAX -clock get_clocks{***} get_ports{***}和set_input_delay -min MIN -clock get_clocks{***} get_ports{***},通常min和max都要加的,这两个delay参数来自于PCB走线。
set_output_delay:同样的,对FPGA output类型的GPIO增加set_output_delay约束,语法也类似set_output_delay -max MAX -clock get_clocks{***} get_ports{***}和set_output_delay -min MIN -clock get_clocks{***} get_ports{***}。
(2)精细的时钟关系
不同时钟之间的关系要做到越全越好,用set_clock_groups语句来定义不同时间的关系,如果用了-async参数,那么不同组之间就是异步关系,相当于加了最强的set_false_path一样,在同一个-group{******}里加的时钟都是有关系的,工具就会检查跨时钟域,如同上一篇文章所说,第一轮的时序约束可以采用最紧的方式,让工具检查出所有的跨时钟域path,简单分析一下各个关键路径,确定有问题的就可以采用set_multicycle_path -from -to -setup N -hold M来约束,这里set_multicycle_path要根据时钟关系来写,源自同一时钟源的,并且是整倍数关系的比较简单,只写-setup就可以了,源自异步时钟或者是小数倍数关系的,要根据从快时钟进入慢时钟,还是从慢时钟进入快时钟的关系,增加-end或-start的参数,组合方式是-setup -start和-hold -end这两种,其影响是检查setup的边沿和检查hold的边沿是否同时进行multicycle的变化。
有一种情况对一个pin定义了两次create_generated_clock,这个pin很可能是个clk_mux的输出,它会工作在两种以上的时钟频率,所以对这两次定义的create_generated_clock要做一个set_clock_groups -logically_exclusive 的约束,说明这两个时钟不会同时存在。
时序约束方法及解决timing问题的方法(一)相关推荐
- ise 时钟约束_ISE时序约束笔记2——Global Timing Constraints
问题思考本文引用地址:http://www.eepw.com.cn/article/269207.htm 单一的全局约束可以覆盖多延时路径 如果箭头是待约束路径,那么什么是路径终点呢? 所有的寄存器是 ...
- FPGA时序约束和timequest timing analyzer
FPGA时序约束和timequest timing analyzer FPGA时序约束 时钟约束 #************************************************** ...
- 简述计算机噪音解决方法,如何解决电脑主机噪音大
电脑主机用一段时间后,噪音就会变得非常大,很多用户都不知道如何解决.那么如何解决电脑主机噪音大呢?这里学习啦小编就教给大家解决电脑主机噪音大的方法. 解决电脑主机噪音大方法 首先我们来找找电脑主机噪音 ...
- 修改时序约束改变slack_改变我们使用Slack的方式解决了我们的透明度和筒仓问题
修改时序约束改变slack 协作和信息孤岛是当今大多数组织中的现实. 人们倾向于将它们视为创新和组织效率的巨大障碍. 对于所有类型的软件工具供应商来说,它们也是解决方案的最爱目标. 但是,工具本身很少 ...
- 时序约束优先级_几种进行时序约束的方法
对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控 ...
- fpga如何约束走线_经验总结:FPGA时序约束的6种方法
对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控 ...
- fpga如何约束走线_FPGA时序约束的几种方法
对自己的设计的实现方式越了解,对自己的设计的时序要求越了解,对目标器件的资源分布和结构越了解,对EDA工具执行约束的效果越了解,那么对设计的时序约束目标就会越清晰,相应地,设计的时序收敛过程就会更可控 ...
- FPGA 时序约束几种方法
原文地址:http://www.eefocus.com/leageshine/blog/09-01/163871_8a32a.html 收藏,学习!!! 对自己的设计的实现方式越了解,对自己的设计的时 ...
- (37)一个合理的时序约束方法
(37)一个合理的时序约束方法 1 文章目录 1)文章目录 2)时序约束引言 3)FPGA时序约束课程介绍 4)一个合理的时序约束方法 5)技术交流 6)参考资料 2 时序约束引言 1)什么是静态时序 ...
最新文章
- SQL Server中的分页查询
- 网站关键词优化有哪些技巧?
- 区块链金融应用论坛关于量化的分享
- 从SQL Server 2000/2005到SQL Server 2008的升级测试
- docker and ssh issues
- java内存回收机制
- identifier __ldg is undefined
- elementUI组件el-dropdown - 踩坑篇
- 计算机可以调剂其他专业吗,机械能跨专业调剂计算机吗
- CodeBlocks13.12汉化以及去掉注释及字符串的下划线
- MySQL数据库中多表联合查询
- 微型计算机上的射箭成为什么,《说文解字》第429课:“谢”字里为什么有一个“射箭”的“射”...
- mysql禁止超线程_如何在BIOS中关闭CPU的超线程功能
- sql修改服务器标记,KB974006-SQL Server 查询优化程序修复程序模型4199服务模型
- 手机app推广渠道的安装来源追踪与归因
- python编写游戏测试机器人客户端(四)
- Ajax的网络响应时间
- linux防火墙 限制流量,Linux防火墙对P2P流量的限制
- windows防火墙是干什么的_防火墙的作用有哪些?Windows防火墙的主要作用是什么?...
- vue 实现app项目版本迭代自动更新 热更新