在ISE下分析和约束时序

合集下载

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设计分析

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时序约束笔记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约束

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

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软件使用说明(两篇)

引言:概述: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下的静态时序分析与时序优化

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的使⽤。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的路径中延时最大的一条。

相关文档
最新文档