1. 如何对vivado时序约束有个很好得理解
字面意思理解所谓约束加些条说白通序约束逻辑综合器提要求综合器根据要求进行布局布线FPGA延主要门延走线延(传输延)布局布线FPGA逻辑资源布线资源布随机寄存器另寄存器选择路径条延短需要告诉逻辑综合器设计某条路径允许延让综合器选择合适布线保证延综合器根据约束些序要求比较高路径进行优化要求低布线绕远路
合理序约束提高FPGA工作频率另外根据静态序析看设计否达要求
2. FPGA时序约束的几种方法(待续)
从最近一段时间工作和学习的成果中,我总结了如下几种进行时序约束的方法。按照从易到难的顺序排列如下: 0. 核心频率约束 这是最基本的,所以标号为0。 1. 核心频率约束+时序例外约束 这还不是最完整的时序约束。设计者的思路还局限在FPGA芯片内部。 2. 核心频率约束+时序例外约束+I/O约束(包括位置、外部走线延时、上下拉电阻、驱动电流强度等等) 这才是最完整的时序约束。FPGA作为PCB上的一个器件,是整个PCB系统时序收敛的一部分。FPGA作为PCB设计的一部分,是需要PCB设计工程师像对待所有COTS器件一样,阅读并分析其I/O Timing Diagram的。FPGA不同于COTS器件之处在于,其I/O Timing是可以在设计后期在一定范围内调整的;虽然如此,最好还是在PCB设计前期给与充分的考虑并归入设计文档。 正因为FPGA的I/O Timing会在设计期间发生变化,所以准确地对其进行约束是保证设计稳定可控的重要因素。许多FPGA外部器件在FPGA重新编译后出现不稳定的问题都有可能是由此引起的。 3. 核心频率约束+时序例外约束+I/O约束+LogicLock LogicLock是FPGA器件内部的布局约束。从一次成功的时序收敛结果开始,把特定的一组逻辑在FPGA上实现的布局位置和范围固定下来。相应地,其布线结果和时序收敛结果也就得到了间接的保证。需要注意的是,LogicLock不同于DesignPartition中的Post-fit Netlist。LogicLock的约束是粗粒度的,并且其精度范围是可调整的;而引入Post-fit Netlist是精确到门级的细粒度约束。 4. 核心频率约束+时序例外约束+I/O约束+FloorPlan+LogicLock FloorPlan也是FPGA器件内部的布局约束,是LogicLock的一种特例。成功的FloorPlan需要设计者对可能的时序收敛目标作出预计,并可以参考上一次时序成功收敛的结果。FloorPlan给了设计者对布局位置和范围更多的控制,不能也不可能照搬上一次时序收敛后零散的布局结果,所以对设计者的要求比简单的LogicLock要高。由于获得了更多的自主的控制权,时序收敛结果的可重现性也就越高。 5. 核心频率约束+时序例外约束+I/O约束+寄存器布局约束 寄存器布局约束是精确到寄存器或LE一级的布局约束。设计者通过对设计施加更精准的控制来获得更可靠的时序收敛过程。
3. 时序约束Warning: Argument -clock with value [get_clocks { SDRAM_CLK }] contains zero elements
http://blog.csdn.net/a2331046/article/details/24292569
4. 怎么添加时序约束
你好。
根据你的描述:
时序约束在综合阶段进行添加,综合时会根据设计者添加的约束对cell的选取进行时序和面积的权衡,综合工具还会利用库里的模型计算每条路径的延时
5. fpga时序约束问题,重金感谢呀。。。求大侠帮帮忙。。
这个光看这个也看不到具体信息啊 那你的那个整体报告里面去点timing constrain ,然后找那些打了叉子或者显示某个时钟或者别的什么的时钟约束没过有个NO,如果你做的是相对高速的东西,尽量把那些高速时钟换成低速的,还有一些不好的编程习惯都有可能造成这样的结果。
你可以查看一下ISE的帮助里面有关于全部时钟约束的类似datasheet的东西,刻意去学暂时没必要,有什么查什么吧。希望对你有帮助
6. FPGA设计中 为什么要加时序约束
通俗简单地说,就是因为代码写出来的时候,在fpga里面是随机资源利用的,换而言之,功能块资源、寄存器资源、布线资源等资源是随机分布的,而布线不同路径导致延时时间不同,这样的话就会导致竞争冒险的出现,因此,为了避免这种情况,必须对fpga资源布局布线进行时序约束以满足设计要求。
7. FPGA/CPLD的时序约束是什么意思
设定的延时是作为一个最大允许值
布线时如果路径过长就无法通过
8. verilog 时序约束怎么做
verilog本身不包含时序约束信息
时序约束是用tcl脚本写的
design compiler在综合电路时会读入tcl脚本把约束信息加载到电路上
现在FPGA的综合工具也只是tcl的时序约束了
9. quartus 11.0 + modelsim 怎么进行时序仿真求完整教程!!!
一个是时序约束,另一个就是逻辑锁定。时序约束是按照你的时序要求去布局布线。而逻辑锁定则是指设计者将某个模块或者某个网络指定在器件的某个位置。尽管有时序约束,但综合器也不能保证每次都能达到要求;而只有当逻辑锁定后,它能保证被锁定的模块在下一次综合不被改变。
事出有因,之前加进来的一个SPI模块,一开始是正常的,后来陆续在设计中加了一些模块,综合后,居然发现SPI模块工作不正常,奇怪的是,在我备份的几个版本中,有几个正常,有几个又不正常,而在这个过程中SPI模块从未被修改过。我想一定是综合器在捣鬼,后来我在SPI正常的版本上查看chip
planner中spi的布局信息,然后将其逻辑锁定,再添加新的模块进来,结果发现,SPI果然没有受到影响。
10. 几种进行时序约束的方法
从最近一段时间工作和学习的成果中,我总结了如下。按照从易到难的顺序排列如下: 0. 核心频率约束 这是最基本的,所以标号为0。 1. 核心频率约束+时序例外约束 时序例外约束包括FalsePath、MulticyclePath、MaxDelay、MinDelay。但这还不是最完整的时序约束。如果仅有这些约束的话,说明设计者的思路还局限在FPGA芯片内部。 2. 核心频率约束+时序例外约束+I/O约束 I/O约束包括引脚分配位置、空闲引脚驱动方式、外部走线延时(InputDelay、OutputDelay)、上下拉电阻、驱动电流强度等。加入I/O约束后的时序约束,才是完整的时序约束。FPGA作为PCB上的一个器件,是整个PCB系统时序收敛的一部分。FPGA作为PCB设计的一部分,是需要PCB设计工程师像对待所有COTS器件一样,阅读并分析其I/O Timing Diagram的。FPGA不同于COTS器件之处在于,其I/O Timing是可以在设计后期在一定范围内调整的;虽然如此,最好还是在PCB设计前期给与充分的考虑并归入设计文档。 正因为FPGA的I/O Timing会在设计期间发生变化,所以准确地对其进行约束是保证设计稳定可控的重要因素。许多在FPGA重新编译后,FPGA对外部器件的操作出现不稳定的问题都有可能是由此引起的。 3. 核心频率约束+时序例外约束+I/O约束+Post-fit Netlist 引入Post-fit Netlist的过程是从一次成功的时序收敛结果开始,把特定的一组逻辑(Design Partition)在FPGA上实现的布局位置和布线结果(Netlist)固定下来,保证这一布局布线结果可以在新的编译中重现,相应地,这一组逻辑的时序收敛结果也就得到了保证。这个部分保留上一次编译结果的过程就是Incremental Compilation,保留的网表类型和保留的程度都可以设置,而不仅仅局限于Post-fit Netlist,从而获得相应的保留力度和优化效果。由于有了EDA工具的有力支持,虽然是精确到门级的细粒度约束,设计者只须进行一系列设置操作即可,不需要关心布局和布线的具体信息。由于精确到门级的约束内容过于繁多,在qsf文件中保存不下,得到保留的网表可以以Partial Netlist的形式输出到一个单独的文件qxp中,配和qsf文件中的粗略配置信息一起完成增量编译。 4. 核心频率约束+时序例外约束+I/O约束+LogicLock LogicLock是在FPGA器件底层进行的布局约束。LogicLock的约束是粗粒度的,只规定设计顶层模块或子模块可以调整的布局位置和大小(LogicLock Regions)。成功的LogicLock需要设计者对可能的时序收敛目标作出预计,考虑特定逻辑资源(引脚、存储器、DSP)与LogicLock Region的位置关系对时序的影响,并可以参考上一次时序成功收敛的结果。这一权衡和规划FPGA底层物理布局的过程就是FloorPlanning。LogicLock给了设计者对布局位置和范围更多的控制权,可以有效地向EDA工具传递设计者的设计意图,避免EDA工具由于缺乏布局优先级信息而盲目优化非关键路径。由于模块在每一次编译中的布局位置变化被限定在了最优的固定范围内,时序收敛结果的可重现性也就更高。由于其粗粒度特性,LogicLock的约束信息并不很多,可以在qsf文件中得到保留。 需要注意的是,方法3和4经常可以混合使用,即针对FloorPlanning指定的LogicLock Region,把它作为一个Design Partition进行Incremental Compilation。这是造成上述两种方法容易混淆的原因。5. 核心频率约束+时序例外约束+I/O约束+寄存器布局约束 寄存器布局约束是精确到寄存器或LE一级的细粒度布局约束。设计者通过对设计施加精准的控制来获得可靠的时序收敛结果。对设计中的每一个寄存器手工进行布局位置约束并保证时序收敛是一项浩大的工程,这标志着设计者能够完全控制设计的物理实现。这是一个理想目标,是不可能在有限的时间内完成的。通常的做法是设计者对设计的局部进行寄存器布局约束并通过实际运行布局布线工具来获得时序收敛的信息,通过数次迭代逼近预期的时序目标。 不久前我看到过一个这样的设计:一个子模块的每一个寄存器都得到了具体的布局位置约束。该模块的时序收敛也就相应地在每一次重新编译的过程中得到了保证。经过分析,这一子模块的设计和约束最初是在原理图中进行的,在达到时序收敛目标后该设计被转换为HDL语言描述,相应的约束也保存到了配置文件中 6. 核心频率约束+时序例外约束+I/O约束+特定路径延时约束 好的时序约束应该是“引导型”的,而不应该是“强制型”的。通过给出设计中关键路径的时序延迟范围,把具体而微的工作留给EDA工具在该约束的限定范围内自由实现。这也是一个理想目标,需要设计者对每一条时序路径都做到心中有数,需要设计者分清哪些路径是可以通过核心频率和简单的时序例外约束就可以收敛的,哪些路径是必须制定MaxDelay和MinDelay的,一条也不能遗漏,并且还需要EDA工具“善解人意”的有力支持。设定路径延时约束就是间接地设定布局布线约束,但是比上述3、4、5的方法更灵活,而且不失其准确性。通过时序约束而不是显式的布局和网表约束来达到时序收敛才是时序约束的真谛。 记得有网友说过“好的时序是设计出来的,不是约束出来的”,我一直把这句话作为自己进行逻辑设计和时序约束的指导。好的约束必须以好的设计为前提。没有好的设计,在约束上下再大的功夫也是没有意义的。不过,通过正确的约束也可以检查设计的优劣,通过时序分析报告可以检查出设计上时序考虑不周的地方,从而加以修改。通过几次“分析—修改—分析”的迭代也可以达到完善设计的目标。应该说,设计是约束的根本,约束是设计的保证,二者是相辅相成的关系。