在ISE下分析和约束时序
ISE约束
ISE约束--UCF编辑的入门介绍[zz]From: /yq000cn/blog/70-01/185475_6dce2.html摘要:本文主要通过一个实例具体介绍ISE中通过编辑UCF文件来对FPGA设计进行约束,主要涉及到的约束包括时钟约束、群组约束、逻辑管脚约束以及物理属性约束。
Xilinx FPGA设计约束的分类Xilinx定义了如下几种约束类型:• “Attributes and Constraints”• “CPLD Fitter”• “Grouping Constraints”• “Logical Constraints”• “Physical Constraints”• “Mapping Directives”• “Placement Constraints”• “Routing Directives”• “Synthesis Constraints”• “Timing Constraints”• “Configuration Constraints”通过编译UCF(user constraints file)文件可以完成上述的功能。
还是用实例来讲UCF的语法是如何的。
图1 RTL Schematic图1 是顶层文件RTL图,左侧一列输入,右侧为输出,这些端口需要分配相应的FPGA管脚。
1: NET "pin_sysclk_i" LOC = AD12 | TNM_NET = pin_sysclk_i;2: TIMESPEC TS_pin_sysclk_i = PERIOD "pin_sysclk_i" 15 ns HIGH 50 %; 3:#4: NET "pin_plx_lreset_n_i" LOC = B18;5:#6: NET "pin_plx_lhold_i" LOC = C17;7: NET "pin_plx_lholda_o" LOC = D17 | SLEW = FAST;8:#9: NET "pin_plx_ads_n_i" LOC = E18;10:NET "pin_plx_ads_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 11:#12: NET "pin_plx_lw_r_n_i" LOC = E9;13:NET "pin_plx_lw_r_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 14:#15: NET "pin_plx_blast_n_i" LOC = D18;16:NET "pin_plx_blast_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 17:#18: NET "pin_plx_lad_io<0>" LOC = AD13 | SLEW = FAST | TNM = LAD;19: NET "pin_plx_lad_io<1>" LOC = AC13 | SLEW = FAST | TNM = LAD;20: NET "pin_plx_lad_io<2>" LOC = AC15 | SLEW = FAST | TNM = LAD;21: NET "pin_plx_lad_io<3>" LOC = AC16 | SLEW = FAST | TNM = LAD;22: NET "pin_plx_lad_io<4>" LOC = AA11 | SLEW = FAST | TNM = LAD;23: NET "pin_plx_lad_io<5>" LOC = AA12 | SLEW = FAST | TNM = LAD;24: NET "pin_plx_lad_io<6>" LOC = AD14 | SLEW = FAST | TNM = LAD;25: NET "pin_plx_lad_io<7>" LOC = AC14 | SLEW = FAST | TNM = LAD;26: NET "pin_plx_lad_io<8>" LOC = AA13 | SLEW = FAST | TNM = LAD;27: NET "pin_plx_lad_io<9>" LOC = AB13 | SLEW = FAST | TNM = LAD;28: NET "pin_plx_lad_io<10>" LOC = AA15 | SLEW = FAST | TNM = LAD; 29: NET "pin_plx_lad_io<11>" LOC = AA16 | SLEW = FAST | TNM = LAD; 30: NET "pin_plx_lad_io<12>" LOC = AC11 | SLEW = FAST | TNM = LAD; 31: NET "pin_plx_lad_io<13>" LOC = AC12 | SLEW = FAST | TNM = LAD; 32: NET "pin_plx_lad_io<14>" LOC = AB14 | SLEW = FAST | TNM = LAD; 33: NET "pin_plx_lad_io<15>" LOC = AA14 | SLEW = FAST | TNM = LAD; 34: NET "pin_plx_lad_io<16>" LOC = D12 | SLEW = FAST | TNM = LAD;35: NET "pin_plx_lad_io<17>" LOC = E13 | SLEW = FAST | TNM = LAD;36: NET "pin_plx_lad_io<18>" LOC = C16 | SLEW = FAST | TNM = LAD;37: NET "pin_plx_lad_io<19>" LOC = D16 | SLEW = FAST | TNM = LAD;38: NET "pin_plx_lad_io<20>" LOC = D11 | SLEW = FAST | TNM = LAD;39: NET "pin_plx_lad_io<21>" LOC = C11 | SLEW = FAST | TNM = LAD; 40: NET "pin_plx_lad_io<22>" LOC = E14 | SLEW = FAST | TNM = LAD; 41: NET "pin_plx_lad_io<23>" LOC = D15 | SLEW = FAST | TNM = LAD; 42: NET "pin_plx_lad_io<24>" LOC = D13 | SLEW = FAST | TNM = LAD; 43: NET "pin_plx_lad_io<25>" LOC = D14 | SLEW = FAST | TNM = LAD; 44: NET "pin_plx_lad_io<26>" LOC = F15 | SLEW = FAST | TNM = LAD; 45: NET "pin_plx_lad_io<27>" LOC = F16 | SLEW = FAST | TNM = LAD; 46: NET "pin_plx_lad_io<28>" LOC = F11 | SLEW = FAST | TNM = LAD; 47: NET "pin_plx_lad_io<29>" LOC = F12 | SLEW = FAST | TNM = LAD; 48: NET "pin_plx_lad_io<30>" LOC = F13 | SLEW = FAST | TNM = LAD; 49: NET "pin_plx_lad_io<31>" LOC = F14 | SLEW = FAST | TNM = LAD; 50: TIMEGRP "LAD" OFFSET = IN 6.4 ns AFTER "pin_sysclk_i" HIGH;51: TIMEGRP "LAD" OFFSET = OUT 3.1 ns BEFORE "pin_sysclk_i" HIGH; 52:#53: NET "pin_plx_ready_n_o" LOC = F18 | SLEW = FAST;54: NET "pin_plx_ready_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;55:#56: NET "pin_plx_bterm_n_o" LOC = D10 | SLEW = FAST;57: NET "pin_plx_bterm_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;58:#59: NET "pin_led_o<0>" LOC = D22;60: NET "pin_led_o<1>" LOC = C22;61: NET "pin_led_o<2>" LOC = E21;62: NET "pin_led_o<3>" LOC = D21;63: NET "pin_led_o<4>" LOC = C21;64: NET "pin_led_o<5>" LOC = B24;65: NET "pin_led_o<6>" LOC = C20;66: NET "pin_led_o<7>" LOC = B23;表1. UCF example对上面的UCF文件进行一些注释:该UCF文件主要是完成了管脚的约束、时钟的约束,以及组的约束。
ise设计分析
AES电路设计与分析本次的目的在于熟悉ISE中对静态时序的分析,以及如何对设计进行检错以及修改优化。
本次所要进行优化分析的代码是关于AES密码,本次使用的分析软件为ISE9.1.本次所要实现在过程如下:1.建一个关于AES的工程,输入AES代码后使用ISE9.1进行综合。
2.进行管脚约束。
3.进行面积约束。
4.分析综合报告,对静态时序进行分析。
5.根据综合报告观察时钟是否能够满足要求。
6.如果不满足要求不断的进行修改,直到能满足时序要求为止。
7.最后进行一定的优化。
分析方法与步骤如下:1.打开ISE9.1新建一个工程,并添加源代码,本次使用的设计参数为xc4vfx140-11ff1517。
选择user constraints-assign package pins进行管脚约束。
进入xilinx pace界面以后选择package view,将管脚拉到package view 窗口中的空格子中,注意时钟必须放在正确的位置上,可以选择view-toolbars-legend在出现的窗口中有对各种类型的格子的说明。
设置完管脚后点击保存。
关闭窗口。
2.首先进行synthesize-XST分析,而在此分析中也可以对优化目标进行一些设置,选中synthesize-XST选项,右击选择属性(properties),得到的窗口如图1所示,其中的Global Optimization Goal选项指的是优化的目标,可以在此进行一定的设置,如图所示所有的时钟线,优化逻辑最大延迟,建立时间,保持时间等;图1双击synthesize-XST下的View synthesis Report,以下是其部分报告及分析:Timing Summary:---------------Speed Grade: -11Minimum period: 1.901ns (Maximum Frequency: 525.984MHz)Minimum input arrival time before clock: 3.180nsMaximum output required time after clock: 4.221nsMaximum combinational path delay: No path found分析:这里的第一项Minimum period指的是最小的逻辑延迟第二项Minimum input arrival time before clock指的是数据必须在时钟上升延到来之前的3.180ns把数据准备好,相当于建立时间。
ISE时序约束笔记
ISE时序约束笔记ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
ISE约束
ISE约束--UCF编辑的入门介绍[zz]From: /yq000cn/blog/70-01/185475_6dce2.html摘要:本文主要通过一个实例具体介绍ISE中通过编辑UCF文件来对FPGA设计进行约束,主要涉及到的约束包括时钟约束、群组约束、逻辑管脚约束以及物理属性约束。
Xilinx FPGA设计约束的分类Xilinx定义了如下几种约束类型:• “Attributes and Constraints”• “CPLD Fitter”• “Grouping Constraints”• “Logical Constraints”• “Physical Constraints”• “Mapping Directives”• “Placement Constraints”• “Routing Directives”• “Synthesis Constraints”• “Timing Constraints”• “Configuration Constraints”通过编译UCF(user constraints file)文件可以完成上述的功能。
还是用实例来讲UCF的语法是如何的。
图1 RTL Schematic图1 是顶层文件RTL图,左侧一列输入,右侧为输出,这些端口需要分配相应的FPGA管脚。
1: NET "pin_sysclk_i" LOC = AD12 | TNM_NET = pin_sysclk_i;2: TIMESPEC TS_pin_sysclk_i = PERIOD "pin_sysclk_i" 15 ns HIGH 50 %; 3:#4: NET "pin_plx_lreset_n_i" LOC = B18;5:#6: NET "pin_plx_lhold_i" LOC = C17;7: NET "pin_plx_lholda_o" LOC = D17 | SLEW = FAST;8:#9: NET "pin_plx_ads_n_i" LOC = E18;10:NET "pin_plx_ads_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 11:#12: NET "pin_plx_lw_r_n_i" LOC = E9;13:NET "pin_plx_lw_r_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 14:#15: NET "pin_plx_blast_n_i" LOC = D18;16:NET "pin_plx_blast_n_i"OFFSET = IN 6.3 ns AFTER "pin_sysclk_i"HIGH; 17:#18: NET "pin_plx_lad_io<0>" LOC = AD13 | SLEW = FAST | TNM = LAD;19: NET "pin_plx_lad_io<1>" LOC = AC13 | SLEW = FAST | TNM = LAD;20: NET "pin_plx_lad_io<2>" LOC = AC15 | SLEW = FAST | TNM = LAD;21: NET "pin_plx_lad_io<3>" LOC = AC16 | SLEW = FAST | TNM = LAD;22: NET "pin_plx_lad_io<4>" LOC = AA11 | SLEW = FAST | TNM = LAD;23: NET "pin_plx_lad_io<5>" LOC = AA12 | SLEW = FAST | TNM = LAD;24: NET "pin_plx_lad_io<6>" LOC = AD14 | SLEW = FAST | TNM = LAD;25: NET "pin_plx_lad_io<7>" LOC = AC14 | SLEW = FAST | TNM = LAD;26: NET "pin_plx_lad_io<8>" LOC = AA13 | SLEW = FAST | TNM = LAD;27: NET "pin_plx_lad_io<9>" LOC = AB13 | SLEW = FAST | TNM = LAD;28: NET "pin_plx_lad_io<10>" LOC = AA15 | SLEW = FAST | TNM = LAD; 29: NET "pin_plx_lad_io<11>" LOC = AA16 | SLEW = FAST | TNM = LAD; 30: NET "pin_plx_lad_io<12>" LOC = AC11 | SLEW = FAST | TNM = LAD; 31: NET "pin_plx_lad_io<13>" LOC = AC12 | SLEW = FAST | TNM = LAD; 32: NET "pin_plx_lad_io<14>" LOC = AB14 | SLEW = FAST | TNM = LAD; 33: NET "pin_plx_lad_io<15>" LOC = AA14 | SLEW = FAST | TNM = LAD; 34: NET "pin_plx_lad_io<16>" LOC = D12 | SLEW = FAST | TNM = LAD;35: NET "pin_plx_lad_io<17>" LOC = E13 | SLEW = FAST | TNM = LAD;36: NET "pin_plx_lad_io<18>" LOC = C16 | SLEW = FAST | TNM = LAD;37: NET "pin_plx_lad_io<19>" LOC = D16 | SLEW = FAST | TNM = LAD;38: NET "pin_plx_lad_io<20>" LOC = D11 | SLEW = FAST | TNM = LAD;39: NET "pin_plx_lad_io<21>" LOC = C11 | SLEW = FAST | TNM = LAD; 40: NET "pin_plx_lad_io<22>" LOC = E14 | SLEW = FAST | TNM = LAD; 41: NET "pin_plx_lad_io<23>" LOC = D15 | SLEW = FAST | TNM = LAD; 42: NET "pin_plx_lad_io<24>" LOC = D13 | SLEW = FAST | TNM = LAD; 43: NET "pin_plx_lad_io<25>" LOC = D14 | SLEW = FAST | TNM = LAD; 44: NET "pin_plx_lad_io<26>" LOC = F15 | SLEW = FAST | TNM = LAD; 45: NET "pin_plx_lad_io<27>" LOC = F16 | SLEW = FAST | TNM = LAD; 46: NET "pin_plx_lad_io<28>" LOC = F11 | SLEW = FAST | TNM = LAD; 47: NET "pin_plx_lad_io<29>" LOC = F12 | SLEW = FAST | TNM = LAD; 48: NET "pin_plx_lad_io<30>" LOC = F13 | SLEW = FAST | TNM = LAD; 49: NET "pin_plx_lad_io<31>" LOC = F14 | SLEW = FAST | TNM = LAD; 50: TIMEGRP "LAD" OFFSET = IN 6.4 ns AFTER "pin_sysclk_i" HIGH;51: TIMEGRP "LAD" OFFSET = OUT 3.1 ns BEFORE "pin_sysclk_i" HIGH; 52:#53: NET "pin_plx_ready_n_o" LOC = F18 | SLEW = FAST;54: NET "pin_plx_ready_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;55:#56: NET "pin_plx_bterm_n_o" LOC = D10 | SLEW = FAST;57: NET "pin_plx_bterm_n_o" OFFSET = OUT 4.2 ns BEFORE "pin_sysclk_i" HIGH;58:#59: NET "pin_led_o<0>" LOC = D22;60: NET "pin_led_o<1>" LOC = C22;61: NET "pin_led_o<2>" LOC = E21;62: NET "pin_led_o<3>" LOC = D21;63: NET "pin_led_o<4>" LOC = C21;64: NET "pin_led_o<5>" LOC = B24;65: NET "pin_led_o<6>" LOC = C20;66: NET "pin_led_o<7>" LOC = B23;表1. UCF example对上面的UCF文件进行一些注释:该UCF文件主要是完成了管脚的约束、时钟的约束,以及组的约束。
ISE时序约束笔记6——Timing Groups and OFFSET Constraints
ISE时序约束笔记6——Timing Groups and OFFSET Constraints
回顾全局OFFSET约束
在时钟行中用法Pad-to-Setup和Clock-to-Pad列为全部出于该时钟域的I/O路径指定OFFSETs。
为大多数I/O路径举行约束的最容易办法——然而,这将会导致一个过约束的设计。
指定管脚的OFFSET约束
用法Pad-to-Setup和Clock-to-Pad列为每个I/O路径指定OFFSETs。
这种约束办法适用于惟独少数管脚需要不同的时序约束。
更常用的办法是:
1. 为Pads生成Groups
2. 对生成的指定Groups举行OFFSET IN/OUT约束
双沿时钟的OFFSET约束OFFSET约束指明白管脚的输入数据和初始时钟之间的关系。
初始时钟沿在周期约束定义中浮现关键词“高”和“低”。
——高:初始时钟升高沿(默认),即升高沿锁存数据
——低:初始时钟下降沿
假如全部的I/O都由时钟的一个沿控制,那么你可以用法这个关键字高或低举行周期约束。
假如两个沿都用到,你就必需举行两个OFFSET的约束。
——每个OFFSET对应一个时钟沿
——DDR寄存器也是这样用法的一个例子
双沿时钟的OFFSET IN约束
输入数据在升高沿或者下降沿之前3ns有效——周期约束为10ns,初
第1页共3页。
ISE软件使用说明(两篇)
引言:概述:ISE软件是由Xilinx公司开发的一款集成电路设计工具,使用该软件可以进行数字电路设计、仿真、验证以及实现等多个阶段的工作。
在设计阶段,ISE软件提供了丰富的组件库和设计工具,方便用户进行电路原理图的绘制和逻辑设计。
在验证阶段,ISE软件可以进行功能仿真和时序仿真,以确保设计的正确性和稳定性。
在实现阶段,ISE软件提供了先进的布局与布线工具,能够将设计转化为实际的电路板。
正文内容:1.安装与启动1.1ISE软件安装包1.2安装ISE软件1.3启动ISE软件2.项目管理2.1创建新项目2.2导入已有项目2.3添加设计文件2.4设定项目属性2.5保存和备份项目3.设计流程3.1电路原理图设计3.1.1组件选择3.1.2连接元件3.1.3设置元件属性3.2逻辑设计3.2.1设计约束3.2.2逻辑优化3.2.3时序约束3.3约束文件编辑3.3.1约束规则3.3.2约束语法3.3.3约束检查3.4时序仿真3.4.1创建仿真波形3.4.2设定初始状态3.4.3运行仿真3.5功能仿真3.5.1设置输入信号3.5.2运行仿真3.5.3分析仿真结果4.仿真与验证4.1时序分析4.1.1设定时钟4.1.2时序路径分析4.1.3时序优化4.2时序约束验证4.2.1满足约束4.2.2修复时序错误4.3灵敏度分析4.3.1设定输入敏感性4.3.2分析敏感性4.4逻辑分析4.4.1切换敏感性4.4.2分析逻辑状态5.布局与布线5.1物理约束5.1.1面积约束5.1.2信号完整性约束5.1.3电源与接地约束5.2布局5.2.1网表导入5.2.2管理物理资源5.2.3进行布局布线5.3时序优化5.3.1满足时序约束5.3.2缩短信号传输路径5.3.3优化时钟分配5.4布线5.4.1管理布线资源5.4.2进行布线5.4.3路由与优化5.5设计规约检查5.5.1检查布局布线规约5.5.2修复设计规约错误总结:引言概述:ISE软件是一款功能强大的集成开发环境工具,广泛应用于数字电路设计和实现。
第六章-约束设计与时序分析
第六章 约束设计与时序分析§6.1 概述对于一些普通的、低速的逻辑设计来说,在经过了ISE 6设计工具的综合、优化处理之后,不用再进行时序方面的任何分析和处理基本上就可达到和满足设计要求。
然而对于高速、高性能、高密度以及多时钟信号控制的逻辑设计,仅靠ISE 6的优化处理是远远不够的,而需要对设计进行时序方面的控制和处理并进行严格的时序分析,以判定所完成的设计是否达到我们的设计要求。
通常,在进行这些设计时,对时序问题作出判断和处理的越早越好。
Xilinx针对这些高端的逻辑设计,在ISE6设计工具提供了功能完善和强大的时序分析器(Timing Analyzer),其详细的时序报告功能方便确定高速信号的路径。
通过该工具,设计者可对设计中的时序冲突以及时序约束等进行细致的检查,找到设计中的时序瓶颈,然后通过一些特定的处理方法对时序进行调整。
这些设计和分析方式我们称为时序收敛(迭代)。
ISE6设计工具所提供的主动时序收敛(ProActive Timing Closure)技术,保证了FPGA器件的高速设计能力,从而降低总体设计成本以及整个设计流程所花费的时间。
作为构成时序收敛技术的一部分,ISE 6工具中新的时序约束(Timing Constraints)提供了可编程逻辑设计中最全面的时序约束语言。
这些都进一步简化了高速设计和分析。
通常,对于复杂的设计,需要进行反复的时序分析和约束设计,即多次迭代,以满足设计的要求。
Xilinx推荐的设计流程如图6-1所示。
图6-1 完整的Xilinx 逻辑设计和时序收敛流程约束设计条件可以在设计文件中直接设置,也可以通过用户约束文件UCF (User Constraint File)、网表约束文件NCF (Netlist Constraint File)、物理约束文件PCF(Physical Constraints File)等形式进行设置。
在Xilinx的CPLD/FPGA设计中,约束条件主要包括:⑴ CPLD约束(CPLD Fitter)--CPLD约束用于指定CPLD设计中的各类约束参数。
XilinxISE下的静态时序分析与时序优化
XilinxISE下的静态时序分析与时序优化单击Design Summary中的Static Timing就可以启动时序分析器(Timing Analyzer)。
在综合、布局布线阶段ISE就会估算时延,给出⼤概的时延和所能达到的最⼤时钟频率,经过PAR后,在Static Timing中给出的是准确的时延,给出的时序报告可以帮助我们找到关键路径,然后针对其进⾏优化,提⾼系统的时钟频率。
这⾥的Minimum period指的是最⼩的逻辑延迟;造成时序性能差的原因很多,主要缘由以下⼏种:1. 布局太差⼀般和代码本⾝没有关系。
解决⽅案:只能从软件⾃⾝的布局算法考虑(调整布局的努⼒程度)或者使⽤⾼端芯⽚2. 逻辑级数太多逻辑级数越多,资源的利⽤率越⾼,但是对⼯作频率的影响也越⼤。
解决⽅案:1.使⽤流⽔线技术;2.如果是多周期路径,添加多周期约束;3.良好的编码习惯,不要过多嵌套if-else,尽量使⽤case代替if语句。
3. 信号扇出过⾼⾼扇出会造成信号传输路径过长,从⽽降低时序性能。
解决⽅案:1.逻辑复制;2.区域约束,想过逻辑放置在⼀起。
4. 不要同时使⽤双边沿触发FPGA的底层⼯艺都是单向的同步电路,所以本⾝不⽀持统⼀信号的双边沿触发,ISE在实际处理的时候,会⾃动将该信号2倍频,然后利⽤第⼀个沿处理上升沿,第⼆个沿处理下降沿。
这样在分析时序时,⾃动把约束升级为ucf⽂件中的两倍。
5. Xilinx最优时序解决⽅案1.I/O约束 根据Xilinx器件的特点,控制信号置于器件的顶部或底部,且垂直布置;数据总线的I/O置于器件的左右两侧,且⽔平布置,这样可以最⼤程度的利⽤芯⽚底层结构。
2.ISE实现⼯具 ISE中的⼯具具备不同的努⼒程度,直接使⽤最⾼级别的可以提⾼时序性能,但是会耗费很多时间,所以应该逐步调整努⼒程度。
第⼀遍使⽤默认的参数选项,如果不满⾜再调整综合、映射、布局布线的参数。
时序优化的若⼲策略优化⽅向⼀:合理使⽤Blcok RAM和Distributed RAM1. 均衡Block RAM和Distributed RAM的使⽤。
ISE 约束文件的基本操作
按:早就想研究一下fpga约束设置,现在总算有时间静下心来看看了1.约束文件的概念FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF 文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。
3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF 文件和设计综合后生成NCF文件,最后再经过实现后生成PCF 文件。
本节主要介绍UCF文件的使用方法。
UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx 约束文件编辑器进行编辑。
NCF约束文件的语法和UCF文件相同,二者的区别在于: UCF文件由用户输入,NCF文件由综合工具自动生成,当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。
PCF文件可以分为两个部分:一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。
一般情况下,用户约束都应在UCF文件中完成,不建议直接修改 NCF 文件和PCF文件。
2.创建约束文件约束文件的后缀是.ucf,所以一般也被称为UCF文件。
创建约束文件有两种方法,一种是通过新建方式,另一种则是利用过程管理器来完成。
第一种方法:新建一个源文件,在代码类型中选取“Implem entation Constrains File”,在“File Name”中输入“one2two_ucf”。
单击“Next”按键进入模块选择对话框,选择模块“one2two”,然后单击“Next”进入下一页,再单击“Finish”按键完成约束文件的创建。
第二种方法:在工程管理区中,将“Source for”设置为“Synthesis/Implementation”。
“Constrains Editor”是一个专用的约束文件编辑器,双击过程管理区中“User Constrains”下的“Create T iming Constrains”就可以打开“Constrains Editor”,其界面如图所示:图启动Constrains Editor引脚约束编辑在“Ports”选项卡中可以看到,所有的端口都已经罗列出来了,如果要修改端口和FPGA管脚的对应关系,只需要在每个端口的“Location”列中填入管脚的编号即可。
xilinx ISE时序约束笔记-中文
时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
周期约束特性周期约束使用最准确的时序信息,使其能够自动的计算:1.源寄存器和目的寄存器之间的时钟偏斜(Clock Skew)2.负沿钟控的同步单元3.不等同占空比的时钟4.时钟的输入抖动(jitter)假设:1.CLK信号占空比为50%2.周期约束为10ns3.由于FF2将在CLK的下降沿触发,两个触发器之间的路径实际上将被约束为10ns的50%即5ns时钟输入抖动(Clock Input Jitter)时钟输入抖动是源时钟的不确定性(clock uncertainty)之一时钟的不确定时间必须从以下路径扣除:——周期约束建立时间路径——OFFSET IN约束的建立时间路径时钟的不确定时间必须添加到以下路径中:——周期约束保持时间路径——OFFSET IN约束保持时间路径——OFFSET OUT约束路径Pad-to-Pad约束——不包含任何同步单元的纯组合逻辑电路——纯组合逻辑延时路径开始并结束于I/O pads,所以通常会被我们遗漏而未约束ISE时序约束笔记3——Global Timing Constraints问题思考哪些路径是由CLK1进行周期约束?哪些路径是由pad-to-pad进行约束?OFFSET约束OFFSET约束覆盖以下路径:——从input pads到同步单元(OFFSET IN)——从同步单元到output pads(OFFSET OUT)OFFSET约束特性OFFSET约束自动计算时钟分布延时1.提供最准确的时序信息2.大量增加输入信号到达同步单元的时间(时钟和数据路径并行)3.大量减少输出信号到达输出管脚的时间(时钟和数据路径先后)OFFSET约束也可以解释时钟输入抖动——使用抖动确定关联的周期约束时钟延时数据路径延时和时钟分布延时都需要在OFFSET计算中使用到——OFFSET IN = T_data_in –T_clk_in——OFFSET OUT = T_data_out + T_clk_outISE时序约束笔记4——Global Timing Constraints问题思考在这个电路中哪些路径是由OFFSET IN 和OFFSET OUT来约束的?问题解答:——OFFSET IN:PADA to FLOP and PADB to RAM——OFFSET OUT:LATCH to OUT1, LATCH to OUT2, and RAM to OU T1问题思考下面给出的系统框图里,你将给出什么样的约束值以使系统能够跑到100M Hz?——假设在下面的器件之间没有时钟偏斜问题解答:PERIOD = 10 ns , OFFSET IN (BEFORE) = 7 ns and OFFSET OUT (AF TER) = 8 ns小结1.性能期望和时序约束相关联2.周期约束覆盖同步单元之间的延时路径3.OFFSET约束覆盖从输入管脚到同步单元和从同步单元到输出管脚之间的延时路径ISE时序约束笔记5——Timing Groups and OFFSET C onstraints特定路径时序约束使用全局时序约束(PERIOD,OFFSET,PAD-TO-PDA)将约束整个设计仅仅使用全局约束通常会导致过约束——约束过紧——编译时间延长并且可能阻止实现时序目标——通过综合工具或者映射后时序报告重新审视性能评估特定路径约束能够覆盖全局时序约束在特定路径上的约束——这就允许设计者放宽特定路径的时序要求更多关于特定路径约束你的设计器件的内部面积将会从特定路径约束收益1.多周期路径Multi-cycle paths2.跨时钟域路径3.双向总线4.I/O时序特定路径约束应该由你的性能目标来界定,不能够不加限制的随意放置全局约束回顾使用全局PERIOD,OFFSET IN和OFFSET OUT约束将约束所有以下的路径这使得控制设计的总体性能更加容易特定路径约束实例一条特定路径约束对于路径本身的优化微乎其微这有助于你更好的控制设计性能,并带给执行工具更大的灵活性以达到你的性能和使用要求生成特定路径约束需要两个步骤:1.多个有共同时序要求的特定路径终点生成一个groups2.关联两个groups,指定它们的特定路径的时序要求生成终点路径的Groups特定路径时序约束在终点路径较好的分组后会更加高效——否则,约束一个大的工程将极其耗时耗力。
ISE时序约束总结3
Path-Specific Timing ConstraintsOutline•Inter-Clock Domain Constraints •Multi-cycle Paths•False Paths •Miscellaneous Constraints •SummaryCLKConstraining Between Rising and Falling Clock Edges •The PERIOD constraint automatically accounts for two-phase clocks –Includes adjustments for non-50-percent duty-cycle clocks •Example: A PERIOD constraint of 10 ns on CLK will apply a 5-ns constraint between these two flip-flops •No path-specific constraints are required for this caseRelated Clock Domains •Create a PERIOD constraint for one clock–Define all related clocks in terms of this PERIOD constraint•The implementation tools will use the relationships to determine how to cross between clock domains•DCM with multiple outputs:–Define a PERIOD constraint on the input to the DCM–The implementation tools will “push”the constraint onto each output–All constraints will be defined relative to the original PERIOD constraintUnrelated Clock Domains •In this example, the delay path between the two clock domains is NOT covered by either of the PERIOD constraints–This is the default behavior•You must add a constraint to cover paths when crossing between related clock domains–Example: Same frequency, but CLK_B is phase shifted •You must add a synchronization circuit when crossing between unrelated clock domainsPERIOD CLK_A PERIOD CLK_B CLK_ACLK_BUnrelated Clock Domains •To constrain the paths between the two clock domains (highlighted in gray)–Define groups of registers CLK_A and CLK_B with the Group by Nets option •Automatically done if you have specified a PERIOD constraint for both clock domains–Place a Slow/Fast Path Exception between the two groups of registersPERIOD CLK_APERIOD CLK_B 5 ns CLK_ACLK_B•Step 1: Create the groupsoption–Group by clock net –Skip this step if PERIODconstraints are defined•Step 2: Create theconstraint by clicking thebuttonUnrelated Clock Domains•–Must begin with “TS ”•constraint•Unrelated Clock DomainsOutline•Inter-Clock Domain Constraints•Multi-cycle Paths•False Paths •Miscellaneous Constraints •SummaryMulti-cycle Path Constraints•Multi-cycle paths occur whenregisters are not updated onconsecutive clock cycles Array–Always at least one clock cyclebetween updates–Typically, the registers arecontrolled by a clock enable• A prescaled counter is oneexample–Registers in COUT14 areupdated every 4 clock cycles–Paths between these registersare multi-cycle pathsConstraints•Step 1: Create a globalPERIOD constraint (notshown)•option–Group by enable net•Step 3: Click the Multi-cycle Paths buttonConstraints•Enter a TIMESPEC name•previously defined•the PERIOD constraintOutline•Inter-Clock Domain Constraints •Multi-cycle Paths•False Paths •Miscellaneous Constraints •SummaryFalse Paths•The False Paths optionsfrom being applied tospecific paths–constrained paths inyour designDefining False Paths•Use the False Paths(FROM:TO:TIG) button to defineendpoints–TIG = Timing IGnore–applied to the paths–Paths through specific nets or 3-THRU points option•What is wrong with this example?Defining False Paths by Nets•The False Paths by Nets optionallows you to ignore timingconstraints on a specific net–Any delay path containing theRESET net will not beconstrained•The Ignored TIMESPECsoption allows specificconstraints to be ignored–TS_P2P constraint will beignored on paths containingthe RESET netOutline•Inter-Clock Domain Constraints •Multi-cycle Paths•False Paths•Miscellaneous Constraints •SummaryMiscellaneous Tab•IOBs•Mark asynchronous registers–Prevents “X”propagation duringsimulation•Low Skew Resources–Use for high-fanout controlsignals•area groups for floorplanning••Define initial values for storageelementsProrating Constraints•Prorating allows the tools to use the most accurate information –The implementation tools use the worst-case operating temperature andvoltage for your chosen device package (85 ºfor Commercial, 100 ºforIndustrial)•Specify your own worst-case conditions–This will prorate the device delay characteristics to accurately reflect your worst-case system conditionsTiming Constraint Priority•False Paths–Must be allowed to override any timing constraint•FROM THRU TO•FROM TO•Pin-Specific OFFSETs •Group OFFSETs–Groups of pads or registers •Global PERIOD and OFFSETs –Lowest priority constraints Highest LowestTiming ConstraintInteraction•Whenever a path is covered by more than one constraint, the tools must choose which constraint to use for timing analysis•If the constraints are of different types, the highest priority constraint is applied•If the constraints are of the same type (Example: FROM TO), the decision is more complex–Can be dictated with the PRIORITY keyword in the UCF file•To see where your constraints overlap, generate a Timing Specification Interaction (TSI) file–Under Properties for Post-Place & Route Static Timing Report, type in a filename–In the Timing Analyzer, select Analyze →Constraints InteractionOutline•Inter-Clock Domain Constraints •Multi-cycle Paths•False Paths •Miscellaneous Constraints•SummarySkills CheckReview QuestionBackground Information•Prescaled 16-bit counter is created in two blocks–Q0 and Q1 in block PRE2 toggle at 200 MHz–Q[15:2] toggle every fourth clock edge (50 MHz)–The design is fully synchronous because all registers share the same clock •However, COUT14 registers are disabled 3/4 of the time so they do not have tomeet a 200-MHz PERIOD constraintReview Questions•What constraints need to be placed on this design to assure it will meet the performance objectives?•How would you enter these constraints through the Constraints Editor?•How do multi-cycle path constraints improve your design’s performance?Answers•What type of constraints need to be placed on this design to assure it will meet the performance objectives?–Global PERIOD constraint of 5 ns (or 200 MHz)–Multi-cycle path constraint of 5 x 4 = 20 ns (or 200 / 4 = 50 MHz)•How would you enter these constraints through the Constraints Editor?–PERIOD constraint: Use the Global tab–Multi-cycle path constraint:•Group the flip-flops in COUT14 by clock enable net (group name: MSB)•Constrain from MSB to MSB•How do multi-cycle path constraints improve your design’s performance?–They allow the implementation tools to place some logic farther apart and use slower routing resourcesReview Questions•If a PERIOD constraint were placed on this design, what delay paths would be constrained?•If the goal is to optimize the input and output times without constraining the paths between registers, what constraints are needed?–Assume that a global PERIOD constraint is already definedAnswers•If a PERIOD constraint were placed on this design, what delay paths would be constrained?–Paths between the control registers and the status registers would be constrainedAnswers•If the goal is to optimize the input and output times without constraining the paths between registers, what constraints are needed?–Enter OFFSET constraints on the Global tab–Define False Paths By Nets•Select the BIDIR_BUS[7:0] nets•Select the global PERIOD constraint to be ignoredSummary•Use a Slow/Fast Path Exception to constrain paths that cross between clock domains•Identifying multi-cycle and false paths allows the implementation tools to make appropriate tradeoffs–These paths will use slower routing resources, which frees up fast routing for critical signals•Prorating your operating conditions gives the tools the most accurate picture of your design environment•In general, more-specific constraints have a higher priority than less-specific constraintsWhere Can I Learn More?•Timing Presentation on the Web: →Tech Tips →Timing & Constraints•Constraints Guide: →Software Documentation –Documentation may also be installed on your local machinePDF created with pdfFactory Pro trial version 。
ISE时序约束笔记7——Path
ISE时序约束笔记7——Path
时钟升高沿和下降沿之间的时序约束
周期约束可以自动计算两个沿的的约束——包括调节非50%占空比的时钟。
例:一个CLK时钟周期约束为10ns,能够应用5ns的约束到两个寄存器之间。
不需要特定路径应用到这个例子中。
相关时钟域的约束
为一个时钟举行周期约束——以这个周期约束确定相关的时钟。
执行工具将按照它们的关系来打算如何处理跨时钟域。
DCM有多个输出:——确定DCM输入时钟的周期约束
——执行工具将会从这个周期约束推导出其输出的约束
——全部的约束将会和原始的周期约束相关
不相关时钟域的约束
在这个例子中,周期约束不笼罩处处于两个时钟域之间的任何延时路径。
——这是默认的处理方式。
你必需添加一个约束笼罩到相关时钟域之间的路径中。
——例如,频率相同,但是CLK_B有一些相位偏移。
在两个不相关的时钟域你就必需添加一些同步。
约束两个时钟域之间的路径。
——用法Groups by NETs选项为CLK_A和CLK_B定义groups,假如
第1页共4页。
ISE时序约束笔记_中文翻译版
ISE时序约束笔记1——Global Timing Constraints时序约束和你的工程执行工具不会试图寻找达到最快速的布局&布线路径。
——取而代之的是,执行工具会努力达到你所期望的性能要求。
性能要求和时序约束相关——时许约束通过将逻辑元件放置的更近一些以缩短布线资源从而改善设计性能。
没有时序约束的例子该工程没有时序约束和管脚分配——注意它的管脚和放置——该设计的系统时钟频率能够跑到50M时序约束的例子和上面是相同的一个设计,但是加入了3个全局时序约束。
——它最高能跑到60M的系统时钟频率——注意它大部分的逻辑的布局更靠近器件边沿其相应管脚的位置更多关于时序约束时序约束应该用于界定设计的性能目标1.太紧的约束将会延长编译时间2.不现实的约束可能导致执行工具罢工3.查看综合报告或者映射后静态时序报告以决定你的约束是否现实执行后,查看布局布线后静态时序报告以决定是否你的性能要求达到了——如果约束要求没有达到,查看时序报告寻找原因。
路径终点有两种类型的路径终点:1.I/O pads2.同步单元(触发器,锁存器,RAMs)时序约束的两个步骤:1.路径终点生产groups(顾名思义就是进行分组)2.指点不同groups之间的时序要求全局约束使用默认的路径终点groups——即所有的触发器、I/O pads等ISE时序约束笔记2——Global Timing Constraints问题思考单一的全局约束可以覆盖多延时路径如果箭头是待约束路径,那么什么是路径终点呢?所有的寄存器是否有一些共同点呢?问题解答什么是路径终点呢?——FLOP1,FLOP2,FLOP3,FLOP4,FLOP5。
所有的寄存器是否有一些共同点呢?——它们共享一个时钟信号,约束这个网络的时序可以同时覆盖约束这些相关寄存器间的延时路径。
周期约束周期约束覆盖由参考网络钟控的的同步单元之间的路径延时。
周期约束不覆盖的路径有:input pads到output pads之间的路径(纯组合逻辑路径),input pads到同步单元之间的路径,同步单元到output pads之间的路径。
ISE时序约束总结2
Timing Groups and OFFSET ConstraintsObjectivesAfter completing this module, you will be able to:•Use the Constraints Editor to create groups of path endpoints •Use the Constraints Editor to create path-specific OFFSET constraintsOutline•Introduction •Creating Groups •OFFSET Constraints •SummaryPath-Specific TimingConstraints•Using global timing constraints (PERIOD, OFFSET, and PAD-TO-PAD) will constrain your entire design•Using only global constraints often leads to over-constrained designs –Constraints are too tight–Increases compile time and can prevent timing objectives from being met–Review performance estimates provided by your synthesis tool or the Post-Map Static Timing Report•Path-specific constraints override the global constraints on specified paths –This allows you to loosen the timing requirements on specific pathsMore About Path-Specific Timing Constraints•Areas of your design that may benefit from path-specific constraints –Multi-cycle paths–Paths that cross between clock domains–Bidirectional buses–I/O timing•Path-specific timing constraints should be used to define your performance objectives and should not be indiscriminately placedGlobal Constraint Review•Using the global PERIOD, OFFSET IN, and OFFSET OUT constraints will constrain all of these paths•This makes it easy to control the overall performance of your designCDATAPath-Specific Constraint Example• A path-specific constraint can optimize as little as one path•This gives you greater control over your design’s performance and gives the implementation tools the greatest flexibility in meeting your performanceand utilization needsCDATAThe Advanced Tab of the Constraints Editor•Creating path-specificconstraints requires two steps–Step 1:Create groups of pathend points–Step 2:Communicate thetiming objective between thegroups•The constraints we discuss inConstraints EditorOutline •Introduction•Creating Groups •OFFSET Constraints •SummaryCreating Groups of Endpoints•Path-specific timing constraints will only be effective if path end points can be easily grouped together–Otherwise, constraining a large design would be time consuming and painstaking•The Constraints Editor makes this easy by allowing you to define groups of path end points (pads, flip-flops, latches, and RAMs)•Specific delay paths can then be constrained with advanced timing constraintsCreating Groups of Endpoints•With the Constraints Editor,grouping path end points ismade easy with the followingoptions:–Group by nets–Group by instance name–Group by hierarchy–Group by output net name–Timing THRU Points option–Group by clock edgeGrouping by Nets orOutput Net Name •Step 1: Enter a group name•search for–Optional filter string•Available list•Step 3: Select nets and click Add–Nets appear in the Time NameTargets listGrouping by Nets versusOutput Net Name•Grouping by net “NET_A”will create a group containing FLOP2 only –Group contains flip-flops that are driven by the selected net •Grouping by output new “NET_A”will create a group containing FLOP1only–Group contains the flip-flop that sources the selected net•Steps are the same•Design Element Types are different–Instance Name: FFs, pads, latches, RAMs–Hierarchy: User levels, Xilinx-created levelsGrouping by Instance Nameor Hierarchy••defined group–the group•Step 3: Select clock edgeGrouping by Clock EdgeTiming THRU Points•Allows you to optimize paths through specific nets and 3-state buffers•In this example, a group of nets was named TEOUTS. A constraint can now be referenced such that only the delay paths through the TEOUTS nets will be optimizedTiming THRU Points•Group nets or 3-state buffers •Use these groups to identifyspecific paths to be constrainedManaging Groups•Groups that you have defined are written into the UCF file–INST <element_name> TNM = <group_name>; OR–NET <net_name> TNM_NET = <group_name>; OR–TIMEGRP <group_name> = <elements>;•To add items to an existing group, click one of the grouping buttons and use the same Time Name–Not allowed when grouping by output net name•To delete a group, right-click on the line in the Constraints window and select Delete Constraint–Or delete the line with a text editor•You cannot remove items from a group with the Constraints Editor –Edit the UCF file with a text editorOutline•Introduction •Creating Groups•OFFSET constraints •SummaryReview of Global OFFSETConstraints•Use the Pad-to-Setup and Clock-to-Pad columns to specify OFFSETs for all I/O paths on each clock domain•Easiest way to constrain most I/O paths–However, this may lead to an over-constrained designPin-Specific OFFSETConstraints•Use the Pad-to-Setup and Clock-to-Pad columns to specify OFFSETs for each I/O pin•Use this type of constraint when only a few I/O pins need different timingCreating Groups of Pads •Groups of I/O pads can be made in the Ports tab–Use Shift-click or CTRL-click to select multiple pads–Enter a group name and click the Create Group button•Click the Pad to Setup or Clock to Pad button to define group OFFSETs –Or use the Advanced tabCreating Group OFFSETConstraints•OFFSET IN/OUTconstraints can also beentered in theAdvanced tab•The Pad-to-Setup andClock-to-Pad optionsallow you to enterOFFSET IN/OUTconstraints on specificgroups of padsGroup OFFSET Constraints•••Select a clock domain•Source SynchronousOFFSET Constraints•For source synchronous inputs, youcan specify the width of the validdata windowOFFSET Constraints withTwo-Phase Clocks•OFFSET constraints define the relationship between the data and the initial clock edge at the pins of the FPGA•Initial clock edge is defined in the global PERIOD constraint using the HIGH or LOW keyword–HIGH: Initial edge rising (default)–LOW: Initial edge falling•If all I/O are clocked on a single edge, use the HIGH/LOW keywords in the PERIOD constraint to define which edge is used•If both clock edges are used, create two OFFSET constraints –One for each clock edge–This includes cases where DDR flip-flops are usedOFFSET IN Using Both Clock Edges •Input data is valid 3 ns before rising and falling edge –PERIOD constraint is 10 ns, initial edge rising, 50-percent duty cycle •Create groups of flip-flops for each clock edge •For inputs clocked on a rising edge, OFFSET = IN 3 ns BEFORE clk;•For inputs clocked on a falling edge, OFFSET = IN –2 ns BEFORE clk;– 2 ns after initial (rising) edge = 3 ns before falling edgeclkOFFSET OUT Using Both Clock Edges•Output data must be valid 3 ns after rising and falling edge –PERIOD constraint is 10 ns, initial edge rising, 50-percent duty cycle •Create groups of flip-flops for each clock edge •For outputs clocked on a rising edge, OFFSET = OUT 3 ns AFTER clk;•For outputs clocked on a falling edge, OFFSET = OUT 8 ns AFTER clk;–8 ns after initial (rising) edge = 3 ns after falling edgeclkOutline•Introduction •Creating Groups •OFFSET Constraints•SummaryReview Questions•How do path-specific timing constraints improve your design’s performance?•How would you constrain this design to get an internal clock frequency of 100 MHz?•The input will be valid at least 3 ns before the rising edge of CLK. The output must be valid 4 ns after the falling edge of CLK. Write the appropriateOFFSET constraintsINCLKRESET_ARESET_BAnswers•How do path-specific timing constraints improve your design’s performance?–They give the implementation tools more flexibility to meet all of your timing objectives•How would you constrain this design to get a maximum internal clock frequency of 100 MHz?–Enter a global PERIOD constraint of 10 ns on the CLK signal•Write the appropriate OFFSET constraints.–Assuming that the PERIOD constraint uses the HIGH keyword and 50-percent duty cycle:•OFFSET = IN 3 ns BEFORE CLK;•OFFSET = OUT 9 ns AFTER CLK;Summary•Path-specific constraints are used to override global constraints –Keeps your design from becoming over-constrained–Allows the software to make intelligent trade-offs to meet all of your performance goals•Creating path-specific constraints is a two-step process–Create groups of path endpoints–Communicate the timing objective between the groups•Path-specific OFFSET constraints can be entered on either the Ports tab or the Advanced tab•When using both clock edges for I/O, write separate OFFSET constraints for each clock edgeWhere Can I Learn More?•Timing Presentation on the Web: →Tech Tips →Timing & Constraints•Constraints Guide: →Software Documentation –Documentation may also be installed on your local machine。
ise时钟约束写法
ise时钟约束写法
ISE (Integrated Software Environment) 是Xilinx公司的一款集成开发环境软件,用于FPGA设计。
在ISE中,时钟约束是指对时钟信号进行约束,以确保设计在时序上能够正确工作。
时钟约束的写法包括以下几个方面:
1. 周期约束,时钟的周期约束是指规定时钟信号的周期,以确保设计能够在指定的时钟周期内完成操作。
在ISE中,可以使用语法类似于“create_clock -period 10 [get_ports clk]”来指定时钟信号的周期为10个时钟周期。
2. 约束时钟延迟,除了周期约束外,还可以对时钟信号的延迟进行约束。
这可以通过语法类似于“set_clock_latency -max 2 [get_clocks clk]”来实现,其中“-max 2”表示最大延迟为2个时钟周期。
3. 时钟分配约束,在设计中可能存在多个时钟域,需要对时钟进行分配约束,以确保时序正确。
可以使用语法类似于
“create_clock -period 10 -name clk [get_ports clk]”来为特定时钟信号分配时钟域。
4. 时钟域约束,除了时钟分配约束外,还可以对时钟域进行约束,以确保时序正确。
可以使用语法类似于“derive_clocks -period 10 [get_pins {/clk}]”来为时钟域添加约束。
总之,在ISE中,时钟约束的写法需要遵循特定的语法规则,并且需要根据设计的实际情况进行合理的约束设置,以确保设计在时序上能够正确工作。
希望以上信息能够帮助你更好地理解时钟约束的写法。
在ISE下分析和约束时序
1.在ISE下分析和约束时序3.1ISE的时序约束工具入门像TimeQuest一样,ISE软件工具也有自己的时序约束及分析工具。
ISE界面的processes当中,有一个user constraints列表,其中的Creat Timing Constrain 可以提供用户添加指定的时序约束。
ISE使用的时序约束信息跟其他的物理约束,电气约束等信息全部都放置在后缀名为ucf(user constrain file)的文件中,在使用图形化界面编辑约束后,用户还可以直接编辑UCF文件对时序等要求进行修改。
此外,PlanAhead Post synthesis工具在提供管脚,区域约束等功能之外,也提供了时序约束及分析的功能。
所以设计者在约束设计时序时可以有多种方法。
使用Creat Timing Constrain时界面的约束类型部分如下图所示:图ISE时序约束类型从图中我们看到,这个工具对于时序约束的理解与altera的一致,需要约束时钟,输入输出信号,以及指定一些时序例外,也有将约束组成Group的功能。
Xilinx公司对于其FPGA约束的名称与altera略有不同,但含义一样。
分别是Period constrain(时钟周期约束),OFFSET constrain(输入输出偏移约束),以及FROM TO constrain,当然也有multi-cycle constrain等。
双击unconstrained clks窗口的clk项,出现的以下对话框可以对设计的时钟信息进行指定。
图ISE下约束时钟界面这个界面可以设置时钟的周期,占空比,以及初始边沿是上升沿还是下降沿。
或者如果这个时钟是从其他指定的时钟生成的,也可以指定生成的关系从而软件自己计算生成时钟的信息。
unconstrained clks窗口将设计中没有约束的时钟列出来,在对每个时钟一一指定之后,窗口内容逐一消失。
而其上方另一个窗口将显示约束的具体信息,并且也可从中选择一条约束进行逐一修改。
ISE 约束文件的基本操作
ISE 约束文件的基本操作1.约束文件的概念FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。
3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF 文件。
本节主要介绍UCF文件的使用方法。
UCF文件是ASC 2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑。
NCF约束文件的语法和UCF文件相同,二者的区别在于:UCF文件由用户输入,NCF文件由综合工具自动生成,当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。
PCF文件可以分为两个部分:一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。
一般情况下,用户约束都应在UCF文件中完成,不建议直接修改NCF文件和PCF文件。
2.创建约束文件约束文件的后缀是.ucf,所以一般也被称为UCF文件。
创建约束文件有两种方法,一种是通过新建方式,另一种则是利用过程管理器来完成。
第一种方法:新建一个源文件,在代码类型中选取“Implementation Constrains File”,在“File Name”中输入“one2two_ucf”。
单击“Next”按键进入模块选择对话框,选择模块“one2two”,然后单击“Next”进入下一页,再单击“Finish”按键完成约束文件的创建。
第二种方法:在工程管理区中,将“Source for”设置为“Synthesis/Implementation”。
“Constrains Editor”是一个专用的约束文件编辑器,双击过程管理区中“User Constrains”下的“Create Timing Constrains”就可以打开“Constrains Editor”,其界面如图所示:图启动Constrains Editor引脚约束编辑在“Ports”选项卡中可以看到,所有的端口都已经罗列出来了,如果要修改端口和FPGA管脚的对应关系,只需要在每个端口的“Location”列中填入管脚的编号即可。
ise时序约束
ISE工具时序约束主要约束主要包括周期约束,pad to pad 约束和偏移约束:(1)周期约束的计算如下图所示:(2)pad to pad 约束是存粹的组合逻辑约束;(3)偏移约束主要包括输入偏移和输出偏移,规定了外部时钟和数据与输入输出管脚之间的时序关系,不是用来约束内部逻辑的;(转)FPGA时序分析,时序约束知识时序约束目的:一、提高设计的工作频率二、获得正确的时序分析报告(STA:静态时序分析)常用的时序概念:周期,最大时钟频率、时钟建立时间、时钟保持时间、时钟到输出延时、管脚到管脚延时、Slack和时钟偏斜(Skew).周期:如图1是周期示意图,当计算出Tperiod,那么当然fm ax=1/Tperiod,fm ax是显示设计最重要的性能指标之一。
时钟建立时间:如图3所示是时钟建立时间的计算方法时钟保持时间:同样利用图3的模型计算Th=clkdelay-datadelay+Microhold注意:前两个公式中提到的Microsetup 和Microhold一般均是一个小于1ns的常量。
时钟输出延迟:他是指在时钟有效到数据有效的最大时钟间隔如图4所示Tco=clkdelay+datadelay+Microcoslack:表示设计是否满足时序的一个称谓:正的slack表示满足时序,负的slack表示不满足时序。
保持时间slac k是一个重要的概念,引起不满足的主要原因是时钟偏斜大于数据路径的偏斜。
Quartus2时序分析工具和优化向导:常用的三种时序约束设置方法:1 通过Assignment/timing settings 2 Assignment/timing wiardtool 3 Assignment/Assignment editor选择在图形界面下完成对设计的时序约束。
一般情况下前两种是做全局的时序约束,后一种是做局部的时序约束,另外还可以通过修改.qsf文件来实现。
时序约束思想:时序约束一般都是先全局后个别,如果冲突则个别的优先级更高。
[新版]ISE-时序束缚
赛灵思FPGA设计时序约束指南更新于2010-12-23 13:06:39 文章出处:博客时序fpga XILINX何为时序约束?为保证设计的成功,设计人员必须确保设计能在特定时限内完成指定任务。
要实现这个目的,我们可将时序约束应用于连线中——从某FPGA 元件到FPGA 内部或FPGA 所在PCB 上后续元件输入的一条或多条路径。
在FPGA 设计中主要有四种类型的时序约束:PERIOD、OFFSET IN、OFFSET OUT 以及FROM: TO(多周期)约束。
PERIOD 约束与建组每个同步设计要有至少一个PERIOD 约束(时钟周期规格),这是最基本的约束类型,指定了时钟周期及其占空比。
若设计中有不止一个时钟,则每个时钟都有自己的PERIOD 约束。
PERIOD约束决定了我们如何进行布线,来满足设计正常工作的时序要求。
为简化时序约束应用过程,常常可将具有类似属性的连线分组为一组总线或一组控制线。
这样做有助于完成正确为设计约束定义优先级这一关键步骤。
设计约束优先次序排列若设计有多重约束,则需进行优先次序排列。
一般来说,约束的一般性越强,其优先级越低。
相反,约束的针对性越强,其优先级越高。
举例来说,时钟网络上的某个一般性PERIOD 约束将被特定网络的具有更高优先级的FROM: TO 约束所覆盖。
特定FROM: TO(或FROM: THRU:TO)约束在时钟域内任意网络中的重要性均高于一般性约束。
为便于进行约束的优先级排列,可运行赛灵思时序分析器(ISE? Design Sui t e中的静态时序分析工具),并生成时序规格迭代报告,即常说的 .tsi 报告。
该报告说明了各约束间是如何迭代的,以及该工具如何为各约束设置默认优先级。
采用PRIORITY 约束关键词可手动设置任一时序约束的优先级并使其优先于默认的或预先设定的优先级。
这对同一路径上的两个或多个时序约束发生冲突时尤为有用。
这里的优先级指的是同一路径上有两个或多个时序约束时,该应用哪一个。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.在ISE下分析和约束时序3.1ISE的时序约束工具入门像TimeQuest一样,ISE软件工具也有自己的时序约束及分析工具。
ISE界面的processes当中,有一个user constraints列表,其中的Creat Timing Constrain 可以提供用户添加指定的时序约束。
ISE使用的时序约束信息跟其他的物理约束,电气约束等信息全部都放置在后缀名为ucf(user constrain file)的文件中,在使用图形化界面编辑约束后,用户还可以直接编辑UCF文件对时序等要求进行修改。
此外,PlanAhead Post synthesis工具在提供管脚,区域约束等功能之外,也提供了时序约束及分析的功能。
所以设计者在约束设计时序时可以有多种方法。
使用Creat Timing Constrain时界面的约束类型部分如下图所示:图ISE时序约束类型从图中我们看到,这个工具对于时序约束的理解与altera的一致,需要约束时钟,输入输出信号,以及指定一些时序例外,也有将约束组成Group的功能。
Xilinx公司对于其FPGA约束的名称与altera略有不同,但含义一样。
分别是Period constrain(时钟周期约束),OFFSET constrain(输入输出偏移约束),以及FROM TO constrain,当然也有multi-cycle constrain等。
双击unconstrained clks窗口的clk项,出现的以下对话框可以对设计的时钟信息进行指定。
图ISE下约束时钟界面这个界面可以设置时钟的周期,占空比,以及初始边沿是上升沿还是下降沿。
或者如果这个时钟是从其他指定的时钟生成的,也可以指定生成的关系从而软件自己计算生成时钟的信息。
unconstrained clks窗口将设计中没有约束的时钟列出来,在对每个时钟一一指定之后,窗口内容逐一消失。
而其上方另一个窗口将显示约束的具体信息,并且也可从中选择一条约束进行逐一修改。
约束类型菜单下的Inputs 选中双击后,会出现如下图所示的对话框,指定了输入偏移约束的类型之后,选择next。
这里的OFFSET IN 的类型包括,输入信号是源同步还是系统同步(时钟的来源不同),是单边沿触发还是双边沿触发的信号,以及有效边沿类型。
通常在设计中,若非特殊的DDR数据,或者使用了外部随路时钟,就选择SDR以及系统同步即可。
图指定输入偏移约束的类型指定了偏移约束类型后选择next会出现下图所示页面,在这个页面中可以约束输入信号的时序。
图OFFSET IN 约束设置页面在这个页面中,左上角表明了系统中使用的时钟的信息。
若有多个时钟,则可以选择输入信号建立相关的时钟。
在Input pad timegroup/net中,可以选择要指定约束的目标端口。
若没有对信号合并分组,就选择input pad net,然后选择需要约束的输入管脚即可。
画红色*号的必须指定的地方,会有External setup time,此即为需要设置的offset in 约束。
通过计算外部器件输出时序以及电路板上延时之后,设计者可以在此指定一个值,表示的是输入端口信号建立时间与时钟信号有效边沿的延时。
仿照上面OFFSET IN的设置,读者可以设置OFFSET OUT的约束。
它约束的是输出端口信号与参考时钟有效边沿之间的延时关系。
其数值需要查阅下一级芯片输入数据时钟的建立关系及电路板上时钟,信号线延时关系计算获得。
约束了设计中使用的时钟,同时约束了输入输出端口的时序之后,整个设计的约束就是完整的。
但完整的约束不一定是正确的,过于严格的约束会挤占布局布线的资源从而造成无法进行最优布线。
所以还需要对一些不必要的,过于严格的约束进行时序例外的声明。
这些读者可以通过尝试软件工具及阅读软件用户手册来学习。
保存了设置的时序后,在工程目录下的Ucf文件将进行更新,最新设置的时序结果将以文本形式体现在ucf文件中,例如以下字段:#Created by Constraints Editor (xc5vsx50t-ff1136-3) - 2011/09/04NET "clk" TNM_NET = clk;TIMESPEC TS_clk = PERIOD "clk" 20 ns HIGH 50%;NET "bu" OFFSET = IN 2 ns VALID 20 ns BEFORE "clk" RISING;这些不仅包括了时序约束,还以注释的形式将约束生成的日期以及针对的器件型号列出了。
设计者甚至可以通过编辑修改这里的文本来快速修改时序约束。
生成的ucf已经是在工程下了。
添加了约束后XST工具不需要重新运行,但是Implement Design下每一步都需要重新执行。
重新执行时,便是在我们设置的约束下进行映射及布局布线了。
下面是PlanAhead Post synthesis工具启动后设置时序约束的页面。
图PlanAhead Post synthesis工具下的时序约束界面从上图可以看出这里的时序约束包括了Clk period,Pad-clk offset,path delay,Time group,False path以及off chip delay等项。
双击其中的任何一项可以出现下图所示的对话框:图设置新的时序约束对话框这个对话框列出了所有能够设置的时序约束,这里的约束设置比Creat Timing Constrain工具更加简洁,如图中所示,在选择了Input pad to clk offset 之后,右边出来的界面中,选择data arrival为Before clock,时钟选择的clk为系统时钟,有效边沿选择上升沿,勾选Delay value,设置为2ns。
Pad net勾选后可以选择需要设置的端口名称。
这样的设置与前文所述的Creat Timing Constrain工具约束输入端口时序是一致的。
可见这个工具会更加简洁。
3.2ISE下查看时序结果查看时序报告时,在ISE工具下也有多种方式。
比如,在ISE工具下可以选择Timing,然后在出现的对话框选择run analysis。
会出现下图所示界面。
在这个界面中可以选择需要分析的pad,net或者是寄存器(Flip-Flop)。
这样工具会给出你选择的路径的时序分析报告。
图Run Timing Analysis对话框或者不选择分析的具体内容,而是直接在tools下选择Timing Analyzer,或者是在Place&Route下选择Generate post-Place&Route Static Timing下面的Analyze post-Place&Route Static Timing,都会出现一个以工程头文件命名的后缀为twx的一个报告框,这里面将包含设计的时序信息。
其中Timing summary下会有诸如以下的英文:Timing summary:---------------Timing errors: 0 Score: 0 (Setup/Max: 0, Hold: 0)Constraints cover xxx paths, xx nets, and xx connectionsDesign statistics:Minimum period: xxx ns{1} (Maximum frequency: xxx MHz) 从这个报告一眼可以看出是否会存在时序错误,以及错误路径数量。
还包括时序约束信息覆盖的路径,网络以及连接关系,最后是最小周期,同时计算出该设计最高能够正确运行的频率。
在Timing constraints下,能够看到设计的一些时序约束信息,并且给每一条约束进行对应的分析,给出报告看是否能够满足约束。
典型摘录下来的一段如下:Paths for end point cnt_21 (SLICE_X24Y43.CIN), 20 paths--------------------------------------------------------------------------------Slack (setup path): 18.421 ns (requirement - (data path - clock path skew + uncertainty)) Source: cnt_0 (FF)Destination: cnt_21 (FF)Requirement: 20.000nsData Path Delay: 1.404ns (Levels of Logic = 6)Clock Path Skew: -0.140ns (1.095 - 1.235)Source Clock: clk_BUFGP rising at 0.000nsDestination Clock: clk_BUFGP rising at 20.000nsClock Uncertainty: 0.035nsClock Uncertainty: 0.035ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PETotal System Jitter (TSJ): 0.070nsTotal Input Jitter (TIJ): 0.000nsDiscrete Jitter (DJ): 0.000nsPhase Error (PE): 0.000nsMaximum Data Path: cnt_0 to cnt_21Location Delay type Delay(ns) Physical ResourceLogical Resource(s) ------------------------------------------------- -------------------SLICE_X24Y38.AQ Tcko 0.346 cnt<3>cnt_0SLICE_X24Y38.A4 net (fanout=1) 0.278 cnt<0>SLICE_X24Y38.COUT Topcya 0.384 cnt<3>Mcount_cnt_lut<0>_INV_0Mcount_cnt_cy<3> SLICE_X24Y39.CIN net (fanout=1) 0.000 Mcount_cnt_cy<3>SLICE_X24Y39.COUT Tbyp 0.082 cnt<7>Mcount_cnt_cy<7> SLICE_X24Y40.CIN net (fanout=1) 0.000 Mcount_cnt_cy<7>SLICE_X24Y40.COUT Tbyp 0.082 cnt<11>Mcount_cnt_cy<11> SLICE_X24Y41.CIN net (fanout=1) 0.000 Mcount_cnt_cy<11>SLICE_X24Y41.COUT Tbyp 0.082 cnt<15>Mcount_cnt_cy<15> SLICE_X24Y42.CIN net (fanout=1) 0.000 Mcount_cnt_cy<15>SLICE_X24Y42.COUT Tbyp 0.082 cnt<19>Mcount_cnt_cy<19> SLICE_X24Y43.CIN net (fanout=1) 0.000 Mcount_cnt_cy<19>SLICE_X24Y43.CLK Tcinck 0.068 cnt<22>Mcount_cnt_xor<22>cnt_21------------------------------------------------- ---------------------------Total 1.404ns (1.126ns logic, 0.278ns route)(80.2% logic, 19.8% route)该报告分析了从cnt_0到cnt_21的路径中延时最大的一条。