当前位置:文档之家› 第六章-约束设计与时序分析

第六章-约束设计与时序分析

第六章-约束设计与时序分析
第六章-约束设计与时序分析

第六章 约束设计与时序分析

§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设计中的各类约束参数。该约束专门用于CPLD器件,并不适用于FPGA设计。

⑵ DLL/DCM约束(DLL/DCM Constraints)--DLL/DCM约束用于指定DLL/DCM的工作模式和约束参数。用于对DLL/DCM模块的控制。

⑶ 分组约束(Grouping Constraints)--分组约束用于划分CPLD/FPGA逻辑设计中具有某种相同属性的分组(Groups)。分组约束主要包括COMPGRP、TNM、TIMEGRP、TNM_NET、TPSYNC、TPTHRU等约束参数。

⑷ 初始化约束(Initialization Directives)--初始化约束用于对存储器ROM、RAM、寄存器、查找表的初始化参数设置。

⑸ 逻辑和物理约束(Logical & Physical Constraints)--该约束用于对映射(mapping) 和适配(fitting)流程的控制。增加逻辑和物理约束可以有助于设计的性能能够适应最坏的情况。该约束条件可以事先在NCF和UCF文件中设置。

⑹ 映射约束(Mapping Directives)--映射约束用于指定CPLD/FPGA逻辑设计的映射(mapping)过程中执行特定的操作。映射约束主要包括FAST、IOB、KEEP、DCI_VALUE、DRIVE、IOSTANDARD、RLOC等多个约束参数。

⑺ 模块设计约束(Modular Design Constraints)--模块设计约束用于指定模块设计(Modular Design)过程中特定的操作。

⑻ 布局约束(Placement Constraints)---布局约束用于指定设计中逻辑单元的位置。其中,逻辑单元主要是指ROMs、RAMs、CLBs、IOBs、BUFTs、触发器、全局缓冲器等。布局约束主要包括BLKNM、HBLKNM、XBLKNM、LOC、PROHIBIT、RLOC、

RLOC_ORIGIN等约束参数。

⑼ 布线约束(Routing Directives)--布线约束用于控制布局布线器在布线过程中执行特定的操作。布线约束主要包括AREA_GROUP、USELOWSKEWLINES、OPT_EFFORT、LOCK、CONFIG_MODE等约束参数。

⑽ 综合约束(Synthesis Constraints)--综合约束用于控制综合工具在综合过程中执行特定的操作。通过综合约束可以实现大部分设计约束。

⑾ 时序约束(Timing Constraints)---时序约束用于指定逻辑设计中的准确时序关系。主要包括周期(PERIOD)、偏置(OFFSET)和输入输出INPAD_TO_OUTPAD等约束参数。

本章将详细地介绍时序约束的原理和作用、以及时序约束对设计性能的改善。我们还将对时序分析器(Timing Analyzer)的使用和功能进行详细的描述,并通过设计的范例对如何利用分析器所生成的报告,对设计进行进一步的修改,以满足设计的要求进行阐述。在本章中,对出现的常见时序问题,提供设计建议,以供读者参考。对位置和区域约束设计,由于已在相关的章节中进行了描述,在此,将不再重述。

§6.2 时序约束(Timing Constraints)

随着系统工作速度的不断提高,对逻辑器件的工作频率和处理速度的要求也越来越高。器件处理速度的提高,意味着逻辑设计时,对时钟信号方面的要求和处理也变得更严格,需

要通过附加约束来控制逻辑的综合、映射、布局和布线,以减小逻辑和布线的传输延时,从而提高工作频率。一般情况下,当时钟频率低于50MHz,而且设计只有一个时钟时,不需要对设计附加约束条件。这是因为时钟频率比较低时,设计工具经过设计的优化处理之后,都能满足设计的要求,而不需要再附加时序约束。但是,当设计的时钟频率较高,或者设计中有复杂时序路径(如多周期路径等)时,就需要附加约束条件以确保综合、实现的结果满足用户的时序要求。

时序约束主要用来控制路径端点间的延迟路径。路径的端点可以是引脚、寄存器、锁存器和存储器。附加时序约束不可能以任何方式优化你的设计和改变设计网表,只能够改善设计的布局和布线。一般情况下,一个设计的80%性能是由器件内的逻辑布局而决定的。改善布局和布线并不意味着能够选择较短的网络延迟,它需要逻辑放置的尽可能紧密,从而减小网络时延。不同的设计综合工具具有不同的时序约束条件、约束编辑器和布局布线策略,本章仅介绍Xilinx设计工具的时序约束特性。Xilinx设计工具提供了多种附加时序约束方法,常用的有:直接编辑UCF(用户约束文件)文件;从Constraints Editor(约束编辑器)输入;在HDL的设计源代码或原理图编辑器中附加Attribute(属性);编辑Xilinx Constraints File(XCF)等。设计者可以根据熟练程度,选择合适的设计方式。无论采用何种方式,通常都会生成用户约束文件(UCF)。一般地,以直接编辑文本格式的UCF文件用得最多,这种方式几乎支持所有的约束条件。利用Constraints Editor实际上也是编辑UCF文件,只是它提供了一个图形化的界面,方便设计者使用。但有些约束条件在约束编辑器中不能使用,请设计者留意。

时序约束主要包括周期约束(FFs-to-FFs寄存器到寄存器)和偏移约束(IPAD-to-FFs输入脚到寄存器和FFs-to-OPAD寄存器到输出脚)以及路径约束(IPAD-to-OPAD输入到输出)。如图6-2所示。除了图中所示的四种约束以外,对于多时钟域的复杂设计,需对时钟域内的同步元件进行分组,然后对这些组进行分组约束。对一些特定的路径,需要专门的约束。通过附加约束条件可以使综合布线工具调整映射和布局布线算法,使设计达到时序要求。在进行时序约束时,一般分为二个步骤:①确定需要约束的路径端点。②定义延迟的长度。

图6-2 时序约束示意图

§6.2.1 周期约束(PERIOD约束)

PERIOD周期约束是一个基本时序和综合约束,它附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。同时PERIOD约束会自动处理寄存器时钟端的反相问题,即如果相邻同步元件时钟相位相反,那么它们之间的延迟将被默认限制为PERIOD约束值的一半。周期约束的作用范围如图6-2所示。通常,逻辑器件内部所能达到的最高运行频率取决于同步元件本身的建立保持时间和以及同步元件之间的逻辑和布线延迟(PERIOD),如图6-3所示。在PERIOD约束中支持输入时钟抖动INPUT_JITTER的设置。

在进行附加周期(PERIOD)约束之前,首先要对电路的时钟周期有一定的估计,这样才不会附加过紧或过松的约束。约束过松,性能达不到要求。约束过紧会增加布局布线的难度和时间,实现的结果也不一定理想,会出现约束过紧性能反而变差的情况。有时,不合理的时序约束甚至造成实现的流程中断。

图6-3 时钟周期的估算

时钟的最小周期为:T CLK = T CKO + T NET + T Logic + T setup - T CLK_SKEW

其中T CLK_SKEW为时钟的传输偏移:T CLK_SKEW = T CD2 - T CD1

在图6-3中,T CKO 为时钟输出时间。T NET为网线延迟。T Logic为同步元件之间的组合逻辑延迟。T setup为同步元件的建立时间。

周期约束可以通过约束编辑器来设置,也可以利用文本格式的UCF文件来书写。其语法结构为:

① TIMESPEC “TS identifier”=PERIOD “TNM_reference” period {HIGH|LOW}[high_or_low_time];

INPUT_JITTER

② NET “net_name” PERIOD = period {HIGH|LOW}[high_or_low_time];INPUT_JITTER

③ TIMESPEC "TS identifier"=PERIOD "timegroup_name" "TS identifier" [* or /]factor PHASE [+

|-] phase_value [units];

在上述的①表达式中,TIMESPEC是一个基本时序相关约束,它在时序规范(timing

specification)中作为标识符,表示本约束为时序规范。TS identifier包括字母TS和一个标识符identifier,它们共同构成一个时序规范,称为TS属性定义。TNM_reference用来说明周期约束的元件组。HIGH|LOW关键词指出时钟周期里的第一个脉冲是高电平还是低电平,而high_or_low_time为该脉冲的持续时间,缺省单位为ns。如果不提供high_or low_time 参数,那么时钟信号的占空比为50%。INPUT_JITTER为输入时钟的抖动值,缺省单位为ps。

在②表达式中,用于定义驱动寄存器时钟输入的NET上PERIOD约束。

在③表达式中,用于指定源时钟的附加约束。timegroup_name为时序分组名。factor指出两者周期的倍数关系,是一个浮点数。phase_value指出两者之间的相位关系,为浮点数。

例一:

TIMESPEC “TS_master”=PERIOD “master_clk” 50 HIGH 30;INPUT_JITTER 50

上式中,附加时序约束作用于master_clk网络上。周期为50ns,高电平为30ns,输入时钟的抖动为50ps。

例二:(指定源时钟的约束)

指定主时钟为clk0,周期为10.0 ns。

TIMESPEC “TS01” = PERIOD "clk0" 10.0 ns;

定义相移180o(超前主时钟)的时钟信号为clk180的周期约束。

TIMESPEC “TS02” = PERIOD "clk180" TS01 PHASE + 5.0 ns;

定义相移90o(滞后主时钟)的时钟信号为clk90的周期约束。

TIMESPEC “TS03” = PERIOD "clk90" TS01 PHASE - 2.5 ns;

定义主时钟的1/2,并相移180o(超前主时钟)的时钟信号为clk180的周期约束。

TIMESPEC “TS04” = PERIOD "clk180" TS01 / 2 PHASE + 2.5 ns;

§6.2.2 偏移约束(OFFSET约束)

使用偏移约束可以为综合、实现工具指出输入数据到达的时刻,或者输出数据稳定的时刻。从而在综合、实现过程中调整布局布线过程。使正在开发的FPGA/CPLD的输入建立时间以及下一级电路的输入建立时间满足要求。偏移约束规定了外部时钟和数据输入输出引脚之间的时序关系,只用于与PAD相连的信号,不能作用于内部信号。如图6-2和图6-4所示。

偏移约束包括OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_AFTER 和OFFSET_OUT_AFTER等4种约束,属于基本时序约束。

图6-4 偏移约束的作用范围示意图

偏移约束的语法结构:

① OFFSET = {IN|OUT} “offset_time” [units] [VALID ]{BEFORE|AFTER}

“clk_name” [TIMEGRP “group_name”];

②OFFSET = {IN|OUT} “offset_time” [units] {BEFORE|AFTER} “clk_name”[TIMEGRP

“group_name”];

其中{IN|OUT}说明约束的是输入还是输出;“offset_time”为FPGA/CPLD引脚数据变化与有效时钟沿之间的时间差;{BEFORE|AFTER}说明该时间差出现在有效时钟沿的前面还是后面;“clk_name”为时钟名;[TIMEGRP “group_name”]定义了约束的触发器组,缺省时约束clk_name驱动的所有触发器。

㈠输入偏移OFFSET_IN_AFTER和OFFSET_IN_BEFORE约束:

OFFSET_IN_AFTER定义输入数据在有效时钟沿之后多长时间到达芯片的输入引脚,这样也可以得到芯片内部延迟的上限,从而对与输入引脚相连的组合逻辑进行约束。OFFSET_IN_BEFORE定义输入数据比有效时钟沿提前多长时间准备好,于是芯片内部与输入引脚相连的组合逻辑的延迟就不能大于该时间,否则有效时钟沿到来时,数据还没有稳定,采样将发生错误。输入偏移的时序关系如图6-5所示。图中T P为时钟周期。

图6-5 输入偏移时序关系示意图

根据图6-4和图6-5所示,保证可靠输入信号处理的条件,即综合、实现工具需要满足:T DATA+ T SU - T CLK≤T P-T IN_AFTER

T DATA + T SU - T CLK≤T IN_BEFORE

例三:NET “DATA_IN” OFFSET = IN 20.0 BEFORE “CLK_SYS”;

这个约束表明, DATA_IN信号必须在时钟信号上升沿到达时钟输入脚20ns之前,到达数据输入脚。

例四:NET “DATA_IN” OFFSET = IN 30.0 AFTER “CLK_SYS”;

这个约束表明, DATA_IN信号不能在时钟信号上升沿到达时钟输入脚30ns之后,到达数据输入脚。

㈡输出偏移OFFSET_OUT_AFTER和OFFSET_OUT_BEFORE约束:

OFFSET_OUT_AFTER规定了输出数据在有效时钟沿之后多长时间之内保持稳定,其芯片内部的输出延迟必须小于这个值。OFFSET_OUT_BEFORE指出下一个时钟信号到来之前必须输出数据,以供下一级芯片使用。根据这个数据对设计输出端的逻辑布线进行约束,以满足下一级的建立时间要求,保证下一级采样的数据是稳定的。输出偏移的时序关系如图6-6所示。图中T P为时钟周期。

图6-6 输出偏移时序关系示意图

根据图6-4和图6-6得出,保证信号可靠输出和下一级可以正确地采样数据的条件,即综合、实现工具需要满足如下关系:

T Q + T CO + T CLK≤T OUT_AFTER

T Q + T CO + T CLK≤T P - T OUT_BEFORE

例五:NET “Q_OUT” OFFSET =OUT 15.0 BEFORE “CLK_SYS”;

这个约束表明,由CLK_SYS 钟控的Q_OUT输出信号必须在下一个时钟信号的上升沿到达时钟输入脚15ns之前,离开FPGA芯片。

例六:NET “Q_OUT” OFFSET = OUT 35.0 AFTER “CLK_SYS”;

这个约束表明,由CLK_SYS 钟控的Q_OUT输出信号必须在当前时钟上升沿35ns 之后,一直保持在FPGA芯片的输出脚上。

§6.2.3 特定约束

附加约束的一般策略是首先附加整体约束,例如:全局PERIOD、偏移OFFSET等,然后对局部的电路附加特定的约束,这些特定的约束通常比整体约束松。通过在可能的地方尽量放松约束可以提高布线通过率,减小布局布线的时间。当然,也有可能在局部附加比较紧的约束,这也需要通过特定约束来实现。

㈠FROM_TO约束

FROM_TO用来定义两个逻辑组之间的时序约束以及对两者之间的逻辑和布线延迟进行控制。这两个组可以是预定定义的如:输入输出脚(PADS)、寄存器(FFS)、锁存器(LATCHES)、乘法器(MULTS)、嵌入式处理器(CPUS)、高速IOs(MGT)(HSIOS)、存储器(RAMS),或用户定义的。用户可以使用TNM_NET、TNM和TIMEGRP定义组。该约束通常用于约束多周期路径(Multi-cycle)、时钟无关的数据路径、False路径。

UCF文件的语法结构为:

TIMESPEC “TS_name” = FROM “group1” TO “group2” value;

其中group1、group2分别为路径的起点和终点,value为延迟时间,缺省值为ns,可以是具体数值或表达式。

图6-7所示为五种使用预定义FROM_TO路径约束。包括输入脚到寄存器路径约束TS_P2S、同步元件之间的约束TS_C2S、输出寄存器到引脚的约束TS_C2P、输入脚到输出脚之间的约束TS_P2P和存储器到输出脚的约束TS_R2P。

图6-7 FROM_TO的五种约束作用范围示意图

这五种约束的语法结构分别为:

TIMESPEC TS_P2S = FROM PADS TO FFS 25;

TIMESPEC TS_C2S =FROM FFS TO LATCHES30;

TIMESPEC TS_C2P =FROM LATCHES TO PADS 10;

TIMESPEC TS_P2P = FROM PADS TO PADS23;

TIMESPEC TS_R2P = FROM RAMS TO PADS25;

FROM_TO约束的一个重要应用是对慢速逻辑的约束。在有些设计中,局部电路的约束可以比全局约束松,这时一般的做法是首先附加全局约束,然后再使用FROM_TO等语句对局部电路附加较松的约束。

㈡多周期(MULTI-Cycle)路径和多时钟域约束

多周期路径和多时钟域约束也是一种特定的约束。通常用于比全局约束松的场合。

多周期路径主要表现形式为:寄存器采用同一个时钟驱动,但是有些寄存器需要用使能信号来控制,如图6-8所示的粗线部分。在这个设计中,由于使能信号的频率较低,可以先进行全局的周期约束为20ns,然后在FF2到FF4寄存器之间采用多周期路径约束为40ns 来松绑。多周期路径约束的语法结构与FROM_TO相同。

图6-8 多周期路径约束作用范围示意图

图6-9所示,为多时钟域的附加约束。在这种设计中,二个时钟是完全独立的,没有任何联系。处理方法为:先对每个时钟所驱动的寄存器或分组进行周期约束,然后再对二个寄存器(或分组)进行FROM_TO约束。

图6-9 多时钟域约束示意图

㈢最大延迟MAXDELAY约束

MAXDELAY约束用来定义特定网线上的最大延时,其语法结构如下:

NET “net_name” MAXDELAY=value [units];

其中value为延迟时间,units为单位,可以是us、ns、ms或ps之一。

㈣最大偏移MAXSKEW约束

MAXSKEW是高级时序约束,MAXSKEW约束用于定义某网线上的偏移不大于设置的数值。Skew(偏移)用于说明同一点驱动的时钟信号经过路径传播后,到达二个或多个终点的时间差。如图6-10所示。在该设计中,时钟输入到Block1的延迟为T a =2ns,输入到Block2 的延迟为T b = 4ns,该约束定义时钟信号在网线上的Skew(偏移)为T b - T a= 2ns。

图6-10 最大偏移MAXSKEW约束示意图

MAXSKEW约束的语法结构为:

NET “net_name” MAXSKEW=allowable_skew [units];

㈤False(虚假)路径约束

False(虚假)路径约束也称为TIG(Timing Ignore)约束,用来对不需要约束的路径即无关的路径进行说明。对需要进行约束的路径指明False(虚假)路径约束后,时序分析时从该网线开始的路径将被忽略。Xilinx 推荐利用该约束来减少设计中受约束路径的数量。图6-11中,由于三态缓冲器不是路径的端点,在这些总线上不用进行约束,可以用TIG(Timing Ignore)约束来取消三态总线上的所有约束。

图6-11 TIG(Timing Ignore)约束对总线结构约束控制示意图

TIG(Timing Ignore)约束的语法结构为:

NET“net_name”TIG;

㈥系统时钟抖动SYSTEM_JITTER约束

Xilinx设计工具支持SYSTEM_JITTER的约束设置。该约束用来规定设计中的系统时钟抖动SYSTEM_JITTER的最大值。系统时钟抖动取决于设计的各种条件,例如:在同一时刻发生信号反转的寄存器和输入输出脚数量等。该抖动迭加在设计中的时钟上。在对系统设计进行时序分析时,这是一个比较关键的参数。

其语法结构为:SYSTEM_JITTER=value ns;

§6.2.4 分组约束

一个设计往往包括大量的触发器、寄存器和RAM等元件。对每个元件、每条路径分别进行约束,显然是不科学和不经济的。为了方便附加约束需要把它们分成不同的组,然后根据需要对这些组分别附加不同的约束。这也是最常用的方法。采用分组约束设计后,将减少约束路径,从而减少设计和软件优化的处理时间。特别适用于大型设计。

分组约束可以分成预定义分组、用户定义分组。

预定义分组包括:PADS(所有的输入输出脚)、FFS(所有的寄存器)、LATCHES(所有的锁存器)、RAMS(所有的存储器)、MULTS(所有的乘法器)、CPUS (所有的嵌入式处理器)等。

㈠TNM约束

使用TNM(Timing Name)约束可以选出构成一个分组的元件,并赋予一个名字,以便给它们附加约束。这些元件可以是预定义的、也可以是用户定义的。比如:FFS、RAMS、LATCHES、PADS、BRAM_PORTA、CPUS等。关键字RISING(上升沿)和FALLING(下降沿)可用于该约束中。TNM约束不能穿过IBUF和Clock BUF。

TNM约束可以附加在Net(网络)、Primitive(原型)、Macro(宏)以及Macro/Primitive的PINS(引脚)上。TNM的语法结构为:

{NET | INST | PIN}”object_name”TNM = predefined_group or “identifier”;

其中object_name为NET、INST或PIN的名称,predefined_group为预定义分组,identifier为分组的名称。TNM的语法结构中支持通配符(*)和(?)。

例如:

TIMESPEC TS01 = FROM:FFS(macro?):TO:FFS(data*);

TIMESPEC TS02 = FROM:FFS(data*):TO:PADS(pad?);

INST macro1 TNM = FF1;

INST macro2 TNM = FF1;

INST dataAA TNM = FF2;

INST dataBB TNM = FF2;

PAD pad1 TNM = padgrp;

PAD pad2 TNM = padgrp;

TIMESPEC TS01 = FROM:FF1:TO:FF2 25;

TIMESPEC TS02 = FROM:FF2:TO:padgrp ;

①当TNM约束加在网线上时,该网线所在路径的有效同步元件将被赋予该TNM值。

例如:NET clock TNM =clk_group;在上式中,clock时钟驱动的网线命名为clk_group,如图6-12所示。

图6-12 TNM约束加在时钟网线上示意图

②当TNM约束加在Macro/Primitive的引脚上,则该引脚驱动的所有同步元件将被赋予该TNM值。

③如果TNM约束附加在一个Macro上,那么该Macro内的所有层次下的同步元件和PAD一起将成为命名组的一部分。

例如:INST macro1TNM = LATCHES latchgroup;

上式说明:在macro1内的所有锁存器将分成latchgroup锁存器组。

③当TNM约束直接附加在Primitive上,那么这个Primitive将作为命名组的一部分。

㈡TNM_NET(Timing Name for Nets)约束

TNM_NET约束只加在网线上,其作用与TNM约束加在网线上时基本相同,即把该网线所在路径上的所有有效同步元件作为命名组的一部分。不同之处在于当TNM约束加在PAD NET上时,TNM的值将被赋予PAD,而不是该网线所在的路径上的同步元件,即TNM 约束不能穿过IBUF。用TNM_NET约束就不会出现这种情况。

图6-13 采用TNM_NET约束示意图

在图6-13中,如果采用TNM约束,将无法穿过BUFG。采用TNM_NET约束后,可将FF1和FF2寄存器与IPAD分在一个组内。图6-13,正确的分组方式为:NET“PADCLK”TNM_NET = FFS(*)“FFGRP”;

注意:TNM_NET约束只能用在网线上,否则会出现警告,同时该约束将被忽略。

㈢TIMEGRP约束

除了使用TNM约束定义分组之外,还可以通过TIMEGRP约束使已有的分组合并,构成新的分组。或用排除的方法构成新的分组。已有的分组包括预定义的和用TNM/TIMEGRP 定义的。

①分组的合并:

语法结构为:TIMEGRP“newgrp_name”=“existing_grp1” “existing_grp2”

②排除某些成分:

语法结构为:TIMEGRP“group1” = “group2”EXCEPT“group3”;

其中,group2、group3可以是预定义的分组或用户已经定义过的分组。新的分组group1包含了group2中除了group3以外的所有内容。

③定义受时钟沿控制的触发器分组:

在该约束中,同样支持对上升沿(RISING)或下降沿(FALLING)触发的新的分组。

例如:

TIMEGRP“group1”= RISING“FFS_group”

上式表明:把分组FFS_group中由上升沿触发的触发器命名为group1。

TIMEGRP“group2”= FALLING FFS;

上式表明:把所有下降沿触发的触发器命名为group2。

④定义受门控信号控制的锁存器分组:

该约束可以对不同的小组或独立的锁存器进行控制。该约束有二个关键字,分别为TRANSLO和TRANSHI。

TIMEGRP“lowgroup”= TRANSLO“latchgroup”

上式表明:把分组latchgroup中的由低电平控制的锁存器命名为lowgroup。

TIMEGRP“highgroup”= TRANSHI“latchgroup”

上式表明:把分组latchgroup中的由高低电平控制的锁存器命名为highgroup。

㈣TPTHRU约束

TPTHRU是高级的分组约束。该约束用于定义一个或一组中间点,以便在后面的时序规范中用来标识特定的路径。其语法结构为:

{NET | INST | PIN}”net_name”TPTHRU =identifier;

例如在图6-14中,要对粗线的路径单独进行约束,首先要标识出这条路径,这就要定义一个中间点ABC,以区别于另外一条平行路径,其处理的方式为:

INST FF1 TNM = “start”;

INST FF2 TNM = “endpt”;

NET “MYNET”TPTHRU =“ABC”;

TIMESPEC“TS_path”= FROM“start”THRU“ABC” TO “endpt” 30;

其中第三条语句把名为“MYNET”的网线定义为中间点,中间点的名字为“ABC”,第四条语句在此基础上规定了通过该点的整条路径的时延。

图6-14 用TPTHRU定义一个路径中间点示意图

§6.3 约束编辑器(Constraints Editor)

我们在上一节中详细地介绍了常用的一些约束的结构和特点,并描述了这些约束用于UCF文件中的语法结构。但在Xilinx的ISE6设计工具中集成的约束编辑器具有更好的用户界面,并生成相同的UCF(用户约束文件)。本节将详细介绍约束编辑器(Constraints Editor)的操作和使用。对于约束编辑器中的位置约束,由于在第四章中已经作过描述,在这一节中,将不再重述。

§6.3.1 约束编辑器的使用

约束编辑器即可以单独运行也可以在ISE6设计工具的工程管理器中运行。

①选择开始→程序→Xilinx ISE 6 → Accessories → Constraints Editor打开约束设计工具,并建立新的设计文件或调入一个已有的设计。

②在ISE6设计工具的工程管理器打开一个设计项目。如果约束文件已经存在,选择该文件后,直接进入【Processes for Source:】窗口。

■在工具菜单栏中选择〖Project〗。

■选择〖New Source…〗建立一个新的约束设计源文件,弹出图6-15所示的界面。

■选择Implementation Constraints File文件类型后,输入文件名,点击〖下一步(N)〗。

■选择该约束文件的约束对象后,点击〖下一步(N)〗。约束文件将自动添加到工程管理器中。

图6-15 建立一个新的约束文件示意图

■在【Processes for Source:】窗口中,选择User Constraints → Create Timing Constraints,如图6-16所示。

图6-16 选择用户约束文件示意图

■在图6-16中,用户约束栏目有四种选择模式。Assign Package Pins为进入PACE设计工具,已在第四章中描述。Edit Constraints(Text)为打开文本编辑

器进行UCF约束文件的编辑。Create Area Constraints进行区域约束编辑。双

击Create Timing Constraints后,将弹出图6-17所示界面。

图6-17 约束编辑器设计界面示意图

如图6-17所示。约束编辑器由全局〖Global〗、端口〖Ports〗、高级〖Advanced〗和其他〖Misc〗四个参数设置窗口构成。

㈠全局〖Global〗约束参数设置:

该参数设置窗口用于对设计进行全局约束,包括周期约束(PERIOD)、输入延迟约束(OFFSET_IN)和输出延迟约束(OFFSET_OUT)的设置。

⑴附加周期约束

在全局〖Global〗参数设置窗口中,选择Period栏后,可以直接填写周期参数,也可以双击,打开更详细的周期约束设置窗口。如图6-18所示。

■在TIMESPEC Name文本框中填入TS_identifier格式的时序规范名称。

■在Clock Net Name栏填写需要附加PERIOD周期约束的时钟网线名称。

■在Clock Signal Definition的Specific Time栏目中,填写输入周期的具体数值、开始为高电平和低电平。

■在Clock Signal Definition的Relative to other PERIOD TIMESPEC栏目中,填写相对于其他约束的倍数、相位(相移)关系。

■在Input Jitter栏中,填写输入时钟的抖动参数。抖动的含义如图6-18的示意图。

■在Comment文本框中,可以加上对该周期约束的注释。

图6-18 周期PERIOD约束参数设置示意图

⑵附加输入约束

在全局〖Global〗参数设置窗口中,选择Pad to Setup栏后,可以直接填写时钟输入脚的建立时间约束参数。也可以双击,打开更详细的参数设置窗口。如图6-19所示。在Time Requirement栏输入输入偏移(OFFSET_IN)参数,有关该约束的原理,见图6-19。在Relative to Clock Pad Net栏中,可以选择相关的时钟输入网线。在Comment栏,可以加

上对该输入约束的注释。

图6-19 输入建立时间约束参数设置示意图

⑶附加输出约束

在全局〖Global〗参数设置窗口中,选择Clock to Pad栏后,可以直接填写时钟到输出脚的延迟时间约束。也可以双击,打开更详细的参数设置窗口。如图6-20所示。

图6-20 时钟到输出脚的延迟时间约束参数设置示意图

㈡端口〖Ports〗约束参数设置:

在约束编辑器窗口中,打开〖Ports〗参数设置界面,如图6-21所示。在该参数设置窗口中,可以对每个端口的物理位置(Location)、输入建立时间(Pad to Setup)、输出的偏移延迟(Clock to Pad)、是否上拉/下拉(PULLUP/PULLDOWN)、输出信号的摆率(FAST/SLOW) 、输入输出信号标准(IOSTANDARD)、输出驱动电流(DRIVE)等参数进行设置。

图6-21 端口约束参数设置窗口示意图

㈢高级约束〖Advanced〗参数设置:

在该参数设置窗口中,可以进行分组和时序方面的约束设计。设计界面如图6-22所示。

图6-22 高级约束〖Advanced〗参数设置示意图

⑴附加分组约束:

在〖Advanced〗窗口中的Grouping栏用于分组约束设置。该栏目中的所有约束,我们在第二节中有过详细的说明。

■第一个操作为TNM_NET约束,通过网线将元件分组。

■第二个操作为TNM约束,按照已例化元件类型进行分组。这些例化的元件包括FFs、RAMs、CPUs等。

■第三个操作为按照层次结构的TNM约束。该约束加到宏或例化的模块上,从而使该模块内的所有层次的同步元件包含在TNM定义的分组中。

■第四个操作为TIMEGRP约束,按照元件的输出网线名称定义、原理图设计的用户分组。

■第五个操作为TPTHRU约束,用于标识一条路径,以便附加时序约束。

■第六个操作为选择时钟沿控制的约束。如图6-23所示。

图6-23 选择时钟沿控制的约束设置示意图

⑵附加时序约束:

在〖Advanced〗窗口中的Timing Constraints栏用于附加时序约束设置。

■第一个操作为Pads组与寄存器间的建立时间约束条件(OFFSET IN BEFORE)参数设置。如图6-24所示。

图6-24 建立时间约束示意图

■第二个操作为源同步(Source Synchronous)元件的建立时间(OFFSET IN BEFORE)约束条件参数设置。源同步元件由包含数据和时钟的输入总线构成。

如图6-25所示。

时序分析基础与时钟约束实例1

时序分析基础与时钟约束实例(1) 文中实例配套SF-CY3开发套件。更多内容请参考《SF-CY3 FPGA套件开发指南》。 何谓静态时序分析(STA,Static Timing Analysis)? 首先,设计者应该对FPGA内部的工作方式有一些认识。FPGA的内部结构其实就好比一块PCB板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。PCB的信号走线有延时,FPGA的信号走线也有延时。这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA 的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。 言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。 下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。若设计者不添加时序约束,那么时序分析就无从谈起。特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。 下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。FPGA内部的布线资源有快有慢之分,好比国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。

ASIC时序约束、时序分析

ASIC时序约束、时序分析 2009-11-13 22:13 A 时序约束的概念和基本策略 时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束(IPAD到FFS、FFS到OPAD)以及静态路径约束(IPA 综合布线工具调整映射和布局布线过程,使设计达到时序要求。例如用OFFSET_IN_BEFORE约束可以告诉综合布线工具输入信号在以根据这个约束调整与IPAD相连的Logic Circuitry的综合实现过程,使结果满足FFS的建立时间要求。 附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时速例外路径和多周期路径,以及其他特殊路径。 B 附加约束的基本作用 1. 提高设计的工作频率 对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综时,从而提高工作频率。 2. 获得正确的时序分析报告 几乎所有的FPGA设计平台都包含静态时序分析工具,利用这类工具可以获得映射或布局布线后的时序分析报告,从而对束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具输出正确的时序分析 3. 指定FPGA/CPLD引脚位置与电气标准 FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如 AGP、BLVDS、CTT、G LVPECL、LVDSEXT、LVTTL、 PCI、PCIX、SSTL、ULVDS等丰富的IO接口标准。另外通过区域约束还能在FPGA上规划各个成模块化设计等。 C 周期(PERIOD)的含义 周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。周期约束是一个基本时序和具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果相迟将被默认限制为PERIOD约束值的一半。如下图所示, 图1 周期的定义 时钟的最小周期为: TCLK = TCKO +TLOGIC +TNET +TSETUP -TCLK_SKEW TCLK_SKEW =TCD2 -TCD1

数字电路时序分析.pdf

数字电路时序分析 1数字电路时序分析 前面介绍了对器件之间的互连系统进行建模所需要的知识,包括对信号完整性的详细分析并估算了由于非理想因素引起的时序变化。但是要正确设计一个数字系统还需要使系统中器件之间可以互相通信,涉及到的内容主要是设计正确的时序,保证器件的时钟/锁存信号与数据信号之间保证正确的时序关系,满足接收端要求的最小建立和保持时间,使得数据可以被正确的锁存。 在本章中将会介绍共用时钟总线(common-clock)和源同步总线(source synchronous)的基本的时序方程。设计者可以利用时序方程来跟踪分析影响系统性能的有时序要求的器件,设置设计目标,计算最大的总线频率和时序裕量。 1.1. 共用时钟定时(common-clock timing) 在共用时钟总线中,总线上的驱动端和接收端共享同一个时钟。图8.1为一个共用时钟总线的例子,是处理器与外围芯片之间的总线接口,由处理器向外围芯片发送数据。图中还示出了位于每一个输入输出单元(I/O cell)的内部锁存器。完成一次数据传输需要两个时钟脉冲,一个用于将数据锁存到驱动端触发器,另一个用于将数据锁存到接收端触发器。整个数据传输过程分为以下几个步骤: 图8.1 共用时钟总线示意图 a.处理器内核产生驱动端触发器的有效输入D p。

b.系统时钟(clk in)的边沿1由时钟缓冲器输出并沿着传输线传播到处理器用于将驱动端触发器的输入(D p)锁存到输出(Q p)。 c.信号Q p沿着传输线传播到接收端触发器的输入(D c),并由第二个时钟边沿锁存。这样有效数据就在外围信号的内核产生了。 基于前面对数据传输过程的分析,可以得到一些基本的结论。首先,电路和传输线的延时必须小于时钟周期,这是因为信号每次从一个器件传播到另一个器件需要两个时钟周期:第一个周期——驱动端触发器将数据锁存到输出(Qp),第二个周期——接收端触发器将输入数据锁存到芯片内核。由电路和PCB走线引起的总延时必须小于一个时钟周期,这一结论限制了共用时钟总线的最高理论工作频率,因此设计一个共用时钟总线时必须考虑每部分的延时,满足接收端的建立和保持时间(建立和保持时间是为了保证能够正确地锁存数据,数据应该在时钟边沿来到之前和之后必须保持稳定的最小时间,这两个条件必须满足)。 1.1.1.共用时钟总线的时序方程 图8.2的时序图用于推导共用时钟总线的时序方程,每个箭头都表示系统中的一个延时,并在图8.1中已表示出来。实线表示的定时回路(timing loop)可用于推导建立时间时序裕量的计算公式,虚线表示的定时回路可用于推导保持时间时序裕量的计算公式。下面会介绍如何使用定时回路来得到时序方程。 图8.2 共用时钟总线的时序图 时延分为三个部分:T co、飞行时间(flight time)和时钟抖动。T co为时钟有效到数据输出有效的时间;飞行时间(T flt)是指PCB上传输线的延时;时钟抖动

时序约束

在进行FPGA的设计时,经常会需要在综合、实现的阶段添加约束,以便能够控制综合、实现过程,使设计满足我们需要的运行速度、引脚位置等要求。通常的做法是设计编写约束文件并导入到综合实现工具,在进行FPGA/CPLD的综合、实现过程中指导逻辑的映射和布局布线。下面主要总结一下Xilinx FPGA时序约束设计和分析。 一、周期约束 周期约束是Xilinx FPGA 时序约束中最常见的约束方式。它附加在时钟网线上,时序分析工具会根据周期约束来检查时钟域内所有同步元件的时序是否满足需求。周期约束会自动的寄存器时钟端的反相。如果相邻的两个元件的时钟相位是相反的,那么它们之间的延迟将被默认的限制成周期约束的一半。 在进行周期约束之前,必须对电路的时钟周期明了,这样才不会出现约束过松或者过紧的现象。一般情况下,设计电路所能达到的最高运行频率取决于同步元件本身的Setup Time 和Hold Time,以及同步元件之间的逻辑和布线延迟。周期约束一般是使用下面的约束方法: 1、period_item PERIOD=period {HIGH|LOW} [high_or low_item] 其中,period_item可以是NET或TIMEGRP,分别代表时钟线名称net name或元件分组名称group-name。用NET表示PERIOD约束作用到名为“net name”的时钟网线所驱动的同步元件上,用TIMEGRP表示PERIOD约束作用到TIMEGRP所定义的分组(包括FFS、LATCH和RAM等同步元件)上。period是目标时钟周期,单位可以是ps、ns、μS和ms 等。HIGH|LOW指出时钟周期中的第1个脉冲是高电平还是低电平,high or low time为HIGH LOW指定的脉冲的持续时间,默认单位是ns。如果没有该参数,时钟占空比是50%。例如,NET SYS_CLK PERIOD=10 ns HIGH 4ns 2、NET“clock net name”TNM_NET=“timing group name”; TIMESPEC“TSidentifier”=PERIOD “TNM reference”period {HIGH | LOW} [high or low item]INPUT_JITTER value; 很多时候为了能够定义比较复杂的派生关系的时钟周期,就要使用该方法。其中TIMESPEC在时序约束中作为一个标识符表示本约束为时序规范;TSidentifier包括字母TS和一个标识符identifier共同作为一个TS属性;TNM reference指定了时序约束是附加在哪一个组上,一般情况下加在TNM_NET定义的分组上。HIGH | LOW 指的是时钟的初始相位表明第一个时钟是上升沿还是下降沿;high or low item 表示的是时钟占空比,即就是high或者low的时间,默认为1:1, INPUT_JITTER 表示的是时钟的抖动时间,时钟会在这个时间范围内抖动,默认单元为ps。比如周期约束: NET "ex_clk200m_p" TNM_NET = TNM_clk200_p; TIMESPEC "TS_clk200_p" = PERIOD "TNM_clk200_p" 5.000 ns HIGH 50 %; 建立一个TNM_clk200_p的时序分组,包括时钟网络ex_clk200m_p驱动的所有同步

同步时序电路的设计步骤

同步时序电路的设计步骤 同步时序电路的设计步骤 同步时序电路的分析是根据给定的时序逻辑电路,求出能反映该电路功能的状态图。状态图清楚地表明了电路在不同的输入、输出原状态时,在时钟作用下次态状态的变化情况。同步时序电路的设计的设计是分析的反过程,其是根据给定的状态图或通过对设计要求的分析得到的状态图,设计出同步时序电路的过程。 这里主要讨论给定状态图的情况下的同步时序电路的设计,对于具体的要求得到状态图的过程一般是一个较复杂的问题,这是暂不讲。根据已知状态图设计同步时序电路的过程一般分为以下几步: 1.确定触发器的个数。首先根据状态的个数来确定所需要触发器的个数,如给定的状态个数为n,由应满足 n≤2K,K为实现这来状态所需要的触发器的个数。(实际使用时可能给定的状态中存在冗余项,这时一般还须对状态进行化简。) 2.列出状态转移真值表。根据状态列出状态转移真值表,也称状态表、状态转移表。 3.触发器选型。选择合适的触发器,通常可选的触发器有:JK-FF,D-FF,T-FF,一般使用较广的为JK-FF。根据状态图和给出的触发器的型号写出其输入方程,通常在写输入方程时须对其进行化简,以使电路更简单。 4.求出输出方程。根据状态表,求出输出逻辑函数Z的输出方程,还过有些电路没有独立的输出,这一步就省了。 5.画出逻辑图。根据输入方程、输出方程画出逻辑电路图。 6.讨论设计的电路能否自启动。在设计的电路中可能出现一些无关的状态,这些状态能否经过若干个时钟脉冲后进行有效的状态。 同步时序电路设计举例 例按下图状态图设计同步时序电路。 1.根据状态数确定触发器的数目:由状态图可以看出,其每个状态由两个状态,故可用两个触发器。其变量可 用Q 1,Q 表示; 2.根据状态图列出状态表:状态表的自变量为输入变量x和触发器当前状态Q 1 n,Q n,而应变量为触发器的次态 Q 1n+1Q n+1、及输出z,列表时将自变量的所有组合全部列出来,其中当Q 1 n Q n=01的状态为不出现,其输出可看作任意 项处理。

时序电路的基本分析与设计方法

时序电路的基本分析与设计方法

时序逻辑电路 时序逻辑电路——电路任何一个时刻的输出状态不但取决于当时的输入信号,还与电路的原状态有关。时序电路中必须含有具有记忆能力的存储器件。 时序电路的逻辑功能可用逻辑表示式、状态表、卡诺图、状态图、时序图和逻辑图6种方式表示,这些表示方法在本质上是相同的,能够互相转换。 一、时序电路的基本分析和设计方法 (一)分析步骤 1.根据给定的时序电路图写出下列各逻辑方程式: (1)各触发器的时钟方程。(2)时序电路的输出方程。(3)各触发器的驱动方程。 2.将驱动方程代入相应触发器的特性方程,求得各触发器的次态方程,也就是时序逻辑电路的状态方程。 3.根据状态方程和输出方程,列出该时序电路的状态表,画出状态图或时序图。 4.根据电路的状态表或状态图说明给定时序逻辑电路的逻辑功能。【例1】分析时序电路

(1)时钟方程:CP CP CP CP ===012 输出方程:n n Q Q Y 21= 驱动方程:?? ? ??======n n n n n n Q K Q J Q K Q J Q K Q J 202001011212 (2)求状态方程 JK 触发器的特性方程:n n n Q K Q J Q +=+1 将各触发器的驱动方程代入,即得电路的状态方程: ?? ???=+=+==+=+==+=+=+++n n n n n n n n n n n n n n n n n n n n n n n n Q Q Q Q Q Q K Q J Q Q Q Q Q Q Q K Q J Q Q Q Q Q Q Q K Q J Q 202020000100101011111112121222212 (3)计算、列状态表 n n n n n n n n Q Q Y Q Q Q Q Q Q 2 12 100 1 1112=?????===+++ (4)画状态图及时序图

XILINX-时序约束使用指南中文

XILINX时序约束使用指南笔记 第一章 时序约束介绍 第二章 时序约束方法 第三章 时序约束原则 第四章 在XST中指定时序约束 第五章 在Synplify中指定时序约束方法 第六章 时序约束分析

第一章 时序约束介绍 基本的时序约束包括: “PERIOD Constraints” “OFFSET Constraints” “FROM:TO(Multi‐Cycle)约束”

第二章 时序约束方法 1,简介: 2,基本的约束方法 根据覆盖的路径不同,时序要求变成一些不同的全局约束。 最普通的路径类型包括: 1,输入路径 2,同步元件到同步元件路径 3,指定路径 4,输出路径 XILINX的时序约束与每一种全局约束类型都有关。最有效的方法就是一开始就指定全局约束然后再加上指定路径的约束。在很多案例中,只要全局约束就可满足需求。 FPGA器件执行工具都是由指定的时序要求驱动的。如果时序约束过头的话,就会导致内存使用增加,工具运行时间增加。更重要的是,过约束还会导致性能下降。因此,推荐使用实际设计要求的约束值。 3,输入时序约束 输入时序约束包括2种 “系统同步输入” “源同步输入” 输入时钟约束覆盖了输入数据的FPGA外部引脚到获取此数据的寄存器之间的路径。输入时钟约束经常用”OFFSET IN”约束。指定输入时钟要求的最好方法,取决于接口的类型(源/系统同步)和接口是SDR还是DDR。 OFFSET IN定义了数据和在FPGA引脚抓取此数据的时钟沿之间的关系。在分析OFFSET IN 约束时,时序分析工具自动将影响时钟和数据延迟的因素考虑进去。这些因素包括: 时钟的频率和相位转换 时钟的不确定 数据延迟调整 除了自动调整,还可以在与接口时钟相关的”PERIOD”约束中另外增加时钟不确定。 关于增加”INPUT_JITTER”的更多信息,参见第三章的”PERIOD Constraints”。 “OFFSET IN”与单输入时钟有关,默认情况下,OFFSET IN约束覆盖了从输入pad到内部同步元件之间的所有路径。用于抓取那些从pad输入的数据的同步元件由指定的OFFSET IN 时钟触发。应用OFFSET IN约束被称为”global”方法。这是指定输入时序的最有效的方法。 系统同步输入 在体统同步接口中,发送和抓取数据共用一个系统时钟。板上的布线延迟和时钟倾斜限制了接口的工作频率。更低的频率也会导致系统同步输入接口典型的采用SDR应用。 系统同步SDR应用例子,见图2‐1。系统同步SDR应用中,在时钟上升沿从源器件发送

FPGA时序分析基础

很多人觉得FPGA难学,难点在于FPGA的硬件特性和FPGA之外的东西,如硬件编程思想,并行编程,时序分析等,本文就时序分析进行讲解,讲解时序分析的基础,内容主要为建立时间和保持时间的分析。并且举例简单说明DT6000S项目采用的时序分析. 基本的电子系统如图1所示,一般自己的设计都需要时序分析,如图1所示的Design,上部分为时序组合逻辑,下部分只有组合逻辑。而对其进行时序分析时,一般都以时钟为参考的,因此一般主要分析上半部分。在进行时序分析之前,需要了解时序分析的一些基本概念,如时钟抖动、时钟偏斜(T skew)、建立时间(T su)、保持时间(T h)等。时序分析也就是分析每一个触发器(寄存器)是否满足建立时间/保持时间,而时序的设计的实质就是满足每一个触发器的建立时间/保持时间的要求。 图 1 基本的电子系统 1.1.1 时钟抖动和时钟偏斜 1.时钟抖动 时钟信号边沿变化的不确定时间称为时钟抖动,如图2所示。一般情况下的时序分析是不考虑时钟抖动,如果考虑时钟抖动,则建立时间应该是T su+T1,保持时间应该是T h+T2。 图 2 时钟抖动时序图 2.时钟偏斜 时序偏斜分析图如图3所示。时钟的分析起点是源寄存器(Reg1),终点是目标寄存器(Reg2)。时钟在图中的结构中传输也会有延迟,时钟信号从时钟源传输到源寄存器的延时为T c2s,传输到目标寄存器的延时为T c2d。时钟网络的延时为T c2s与T c2d之差,即 T skew=T c2d-T c2s。

图 3 时钟偏斜时序图 1.1.2 建立时间和保持时间 建立时间(Setup Time)常用T su表示,指的是在触发器的时钟信号上升沿到来以前,数据和使能信号稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器,使能信号无效,也就是说在这个时钟周期对数据的操作时无效的;保持时间(Hold Time)常用T h表示,指的是在触发器的时钟信号上升沿到来以后,数据和使能信号稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器,对数据的操作同样是无效的,使能信号无效。数据要能稳定传输,就必须满足建立时间和保持时间的关系,图4标识了它们间的关系。 图 4 建立时间/操持时间的概念 1.1.3 发送沿和捕获沿 (1)发送沿(Launch Edge):前级寄存器发送数据对应的时钟沿,是时序分析的起点; (2)捕获沿(Latch Edge):后记寄存器捕获数据对应的时钟沿,是时序分析的终点。 相对于launch Edge通常为一个时钟周期,但不绝对,如多周期。 “信号跳变抵达窗口”:对latch寄存器来说,从previous时钟对应的Hold Time开始,到current 时钟对应的Setup Time 结束。 “信号电平采样窗口”:对latch寄存器来说,从current时钟对应的Setup Time开始,到current时钟对应的Hold Time结束。 launch寄存器必须保证驱动的信号跳变到达latch寄存器的时刻处于“信号跳变抵达窗口”内,才能保证不破坏latch寄存器的“信号电平采样窗口”。

Moore型同步时序逻辑电路的设计与分析

实验九Moore型同步时序逻辑电路的分析与设计 22920132203686 薛清文周2下午实验 一.实验目的: 1.同步时序逻辑电路的分析与设计方法 2.D,JK触发器的特性机器检测方法。 2.掌握时序逻辑电路的测试方法。 3.了解时序电路自启动设计方法。 4.了解同步时序电路状态编码对电路优化作用。 二.实验原理: 二、 1.Moore同步时序逻辑电路的分析方法: 时序逻辑电路的分析,按照电路图(逻辑图),选择芯片,根据芯片管脚,在逻辑图上标明管脚号;搭接电路后,根据电路要求输入时钟信号(单脉冲信号或连续脉冲信号),求出电路的状态转换图或时序图(工作波形),从中分析出电路的功能。 2.Moore同步时序逻辑电路的设计方法: (1)分析题意,求出状态转换图。 (2)状态分析化简:确定等价状态,电路中的等价状态可合并为一个状态。(3)重新确定电路状态数N,求出触发器数n,触发器数按下列公式求:2n-1

时序约束实例

用Quartus II Timequest Timing Analyzer进行时序分析:实例讲解 (一) (2012-06-21 10:25:54) 转载▼ 标签: 杂谈 一,概述 用Altera的话来讲,timequest timing analyzer是一个功能强大的,ASIC-style的时序分析工具。采用工业标准--SDC(synopsys design contraints)--的约束、分析和报告方法来验证你的设计是否满足时序设计的要求。在用户的角度,从我使用TimeQuest的经验看,它与IC设计中经常用到的比如prime time,time craft等STA软件是比较类似的。用过prime time或time craft的朋友是非常容易上手的。 在这一系列的文章里,我将会拿一个DAC7512控制器的verilog设计作为例子,详细讲解如何使用TimeQuest进行时序设计和分析。 二,TimeQuest的基本操作流程 做为altera FPGA开发流程中的一个组成部分,TimeQuest执行从验证约束到时序仿真的所有工作。Altera推荐使用下面的流程来完成TimeQuest 的操作。

1. 建立项目并加入相关设计文件 不管做什么事情,都需要有一个目标或者说对象。我们用TimeQuest 做时序分析,当然也需要一个对象,这个对象实际上就是我们的设计。所以首先是要建立一个Quartus II的项目,并把所有需要的设计文件都加入到项目中去。需要注意的一点是,这里的设计文件,不仅仅包含逻辑设计相关的文件,也包含已经存在的时序约束文件,当然,需要以synopsys Design Constraints(.sdc)的格式存在的。 2. 对项目进行预编译(initial compilation) 项目建立以后,如果从来没有对项目进行过编译的话,就需要对项目进行预编译。这里的预编译是对应于全编译(full compilation)来讲的,我们可以理解为预编译是对项目进行部分的编译,而全编译是对项目进行完整的编译。做预编译的目的是为了生成一个initial design database,

实验二 时序逻辑电路的设计[1]

实验二 时序逻辑电路的设计 一、实验目的: 1、 掌握时序逻辑电路的分析方法。 2、 掌握VHDL 设计常用时序逻辑电路的方法。 3、 掌握时序逻辑电路的测试方法。 4、 掌握层次电路设计方法。 5、 理解时序逻辑电路的特点。 二、实验的硬件要求: 1、 EDA/SOPC 实验箱。 2、 计算机。 三、实验原理 1、时序逻辑电路的定义 数字逻辑电路可分为两类:组合逻辑电路和时序逻辑电路。组合逻辑电路中不包含记忆单元(触发器、锁存器等),主要由逻辑门电路构成,电路在任何时刻的输出只和当前时刻的输入有关,而与以前的输入无关。时序电路则是指包含了记忆单元的逻辑电路,其输出不仅跟当前电路的输入有关,还和输入信号作用前电路的状态有关。 2、同步时序逻辑电路的设计方法 同步时序逻辑电路的设计是分析的逆过程,其任务是根据实际逻辑问题的要求,设计出能实现给定逻辑功能的电路。同步时序电路的设计过程: (1)根据给定的逻辑功能建立原始状态图和原始状态表。 ①明确电路的输入条件和相应的输出要求,分别确定输入变量和输出变量的数目和符号; ②找出所有可能的状态和状态转换之间的关系; ③根据原始状态图建立原始状态表; (2)状态化简---求出最简状态图。 合并等价状态,消去多余状态的过程称为状态化简。 等价状态:在相同的输入下有相同的输出,并转换到同一个次态去的两个状态称为等价状态。 (3)状态编码(状态分配)。 给每个状态赋以二进制代码的过程。 根据状态数确定触发器的个数,n n M 221-≤∠(M 为状态数;n 为触发器的个数)。 (4)选择触发器的类型。 (5)求出电路的激励方程和输出方程。 (6)画出逻辑图并检查自启动能力。 3、时序逻辑电路的特点及设计时的注意事项 ①时序逻辑电路与组合逻辑电路相比,输出会延时一个时钟周期。 ②时序逻辑电路一般容易消除“毛刺”。 ③用VHDL 描述时序逻辑电路时,一般只需将时钟信号和异步控制(如异步复位)信号作为敏感信号。

FPGA中IO时序约束分析

第1章FPGA中IO口时序分析 作者:屋檐下的龙卷风 博客地址:https://www.doczj.com/doc/5915921118.html,/linjie-swust/ 日期:2012.3.1 1.1 概述 在高速系统中FPGA时序约束不止包括内部时钟约束,还应包括完整的IO时序约束和时序例外约束才能实现PCB板级的时序收敛。因此,FPGA时序约束中IO口时序约束也是一个重点。只有约束正确才能在高速情况下保证FPGA和外部器件通信正确。 1.2 FPGA整体概念 由于IO口时序约束分析是针对于电路板整个系统进行时序分析,所以FPGA需要作为一个整体分析,其中包括FPGA的建立时间、保持时间以及传输延时。传统的建立时间、保持时间以及传输延时都是针对寄存器形式的分析。但是针对整个系统FPGA的建立时间保持时间可以简化。 图1.1 FPGA整体时序图 如图1.1所示,为分解的FPGA内部寄存器的性能参数: (1) Tdin为从FPGA的IO口到FPGA内部寄存器输入端的延时; (2) Tclk为从FPGA的IO口到FPGA内部寄存器时钟端的延时; (3) Tus/Th为FPGA内部寄存器的建立时间和保持时间; (4) Tco为FPGA内部寄存器传输时间; (5) Tout为从FPGA寄存器输出到IO口输出的延时; 对于整个FPGA系统分析,可以重新定义这些参数:FPGA建立时间可以定义为:(1) FPGA建立时间:FTsu = Tdin + Tsu – Tclk; (2) FPGA保持时间:FTh = Th + Tclk; (3) FPGA数据传输时间:FTco = Tclk + Tco + Tout; 由上分析当FPGA成为一个系统后即可进行IO时序分析了。FPGA模型变为如图1.2所示。

单元15-时序逻辑电路

第十六单元时序逻辑电路 (8学时——第49~56学时) 主要容:时序逻辑电路的分析与设计 教学重点:时序逻辑电路的分析与设计方法 教学难点:时序逻辑电路的设计 教学方法:启发式教学、探究式教学 教学手段:实验、理论、实际应用相结合 第一部分知识点 一、时序电路概述 时序电路的状态及输出是与时间顺序有关的,由组合电路和存储电路(多为触发器)组成,1、特点 任意时刻的输出,不仅与该时刻的输入有关、还与电路原来的状态有关。 2、分类 按逻辑功能分为计数器、寄存器等,按触发器工作分为同步电路和异步电路,按电路输出信号特性分为Mealy型(输出与输入及电路现态有关)和Moore型(输出仅与电路现态有关)电路。 二、时序电路的分析 1、分析步骤 (1)写出电路的时钟方程(各触发器的CP表达式)、输出方程(各输出端表达式)及驱动方程(各触发器的触发信号表达式)。 (2)求出电路的状态方程(各触发器的状态表达式) (3)计算得出电路工作状态表 (4)画状态图及时序图 (5)分析电路功能 2、分析举例 分析时序电路

(1)时钟方程CP0=CP1=CP2=CP 输出方程n n n Q Q Q Y 1 2 = 驱动方程n Q J 2 =、n Q K 2 =,n Q J 1 =、n Q K 1 =,n Q J 1 2 =、n Q K 1 2 =(2)状态方程 将J、K代入JK触发器特征方程n n n Q K Q J Q+ = +1得各触发器状态方程: n n Q Q 2 1 = +、n n Q Q 1 1 = +、n n Q Q 1 1 2 = + (3)计算得到状态表 现态次态输出 n Q 2 n Q 1 n Q 1 2 | n Q+1 1 + n Q1 + n Q Y 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 1 (4)画状态图及时序图 (5)逻辑功能 这是一个有六个工作状态的同步工作电路,属Moore型电路。 (6)有效态和无效态

PrimeTime_的基本概念

PrimeTime 的基本概念 一、定义设计环境 在对设计作时序分析之前,必须要定义好设计环境以使得在那些情况下满足 限制条件。 通过以下这些信息来说明设计环境: 时钟:时钟波形和时钟信号的性质; 输入、输出延迟:信号到每个输入端口的时间从每个输出端口离开所需的时间。这些时间是用一个时钟周期的相对量表示的; 输入端口的外部驱动:每一个输入端口的驱动单元或驱动电容,还可以用一个确定的过渡时间来表示; 电容负载:输入或输出端口的外部电容; 运作条件:环境特性(工艺、温度和电压); 连线负载电容:用来预测布局布线后每一条连线的电容和电阻。 下图展示了用来定义设计环境的命令: 二、时序声明 通常当前设计只是一个更大电路的一部分。时序声明提供了时钟和输入、输 出延时的信息。在将设计建立起来之后,可以进行时序声明。 为了进行时序声明,包括以下一些内容: 说明时钟信息 描述一个时钟网络 说明时钟门锁(Clock-Gating)的建立和保持时间(Setup and Hold Checks) 建立内部生成的时钟 说明输入延时 说明时钟端的输入延时 说明输出延时 三、时序例外(Timing Exceptions) PrimeTime缺省地认为所有的电路都是单时钟周期的。这意味着电路在一个 时钟周期之内将数据从一条路径的开始端传递到结束端。 在某些情况下,电路不是工作在这样的方式下。对具体的一条路径来说不适用单始终周期时序,所以必须对这

些缺省的时序假设作例外说明。否则,时序分析将不能反映真实电路的工作情况。 主要有以下一些内容: 单时钟周期(缺省)路径延时限制 设置失败(False)路径 设置最大和最小路径延时 设置多时钟周期路径 路径说明方法 有效地说明例外情况 例外情况的优先级 报告例外情况 忽略例外情况 去除例外声明 四、报告的生成 在定义了时序声明和例外情况之后,可以生成时序分析报告,有助于定位设 计中的违规之处。在进行时序分析的时候,PrimeTime会跟踪电路中所有的路径,然后根据电路说明、库、声明和例外情况计算设计的延时。 有以下一些内容: 检查设计约束 报告时序检测的覆盖率 生成路径时序报告 去除有寄存器的路径上的时钟扭斜(Skew) 生成瓶颈报告 进行快速时序升级(Fast Timing Updates) 生成约束报告 生成设计信息报告 生成连线负载报告 生成时序例外情况报告 报告最大扭斜检查(Maximum Skew Checks) 报告不变的时序检查(No-Change Timing Checks) 报告失效的时序弧(Disabled Timing Arcs) 显示情形分析设置 观察扇入逻辑 观察扇出逻辑 显示层次参考(Hierarchical References) 报告单元参考(Cell References) 生成总线报告 生成反标延时和检查报告(Annotated Delay and Check Reports) 生成模式分析报告(Mode Analysis Reports) 生成库的报告 生成延时计算报告 以路径(Paths)来生成定制报告 禁止和恢复时钟门锁、去除检查时钟门锁

入门资料:FPGA时序分析报告基础与时钟约束实例

入门:FPGA时序分析基础与时钟约束实例 2013-07-16 何谓静态时序分析(STA,Static Timing Analysis)? 首先,设计者应该对FPGA内部的工作方式有一些认识。FPGA的内部结构其实就好比一块PCB 板,FPGA的逻辑阵列就好比PCB板上的一些分立元器件。PCB通过导线将具有相关电气特性的信号相连接,FPGA也需要通过内部连线将相关的逻辑节点导通。PCB板上的信号通过任何一个元器件都会产生一定的延时,FPGA的信号通过逻辑门传输也会产生延时。PCB的信号走线有延时,FPGA的信号走线也有延时。这就带来了一系列问题,一个信号从FPGA的一端输入,经过一定的逻辑处理后从FPGA的另一端输出,这期间会产生多大的延时呢?有多个总线信号从FPGA的一端输入,这条总线的各个信号经过逻辑处理后从FPGA的另一端输出,这条总线的各个信号的延时一致吗?之所以关心这些问题,是因为过长的延时或者一条总线多个信号传输时间的不一致,不仅会影响FPGA本身的性能,而且也会给FPGA之外的电路或者系统带来诸多问题。 言归正传吧,之所以引进静态时序分析的理论也正是基于上述的一些思考。它可以简单的定义为:设计者提出一些特定的时序要求(或者说是添加特定的时序约束),套用特定的时序模型,针对特定的电路进行分析。分析的最终结果当然是要求系统时序满足设计者提出的要求。 下面举一个最简单的例子来说明时序分析的基本概念。假设信号需要从输入到输出在FPGA内部经过一些逻辑延时和路径延时。系统要求这个信号在FPGA内部的延时不能超过15ns,而开发工具在执行过程中找到了如图所示的一些可能的布局布线方式。那么,怎样的布局布线能够达到系统的要求呢?仔细分析一番,发现所有路径的延时可能为14ns、15ns、16ns、17ns、18ns,有两条路径能够满足要求,那么最后的布局布线就会选择满足要求的两条路径之一。 静态时序分析的前提就是设计者先提出要求,然后时序分析工具才会根据特定的时序模型进行分析,即有约束才会有分析。若设计者不添加时序约束,那么时序分析就无从谈起。特权同学常常碰见一些初学者在遇到问题时不问青红皂白就认为是时序问题,实际上只有在添加了时序约束后,系统的时序问题才有可能暴露出来。 下面我们再来看一个例子,我们假设有4个输入信号,经过FPGA内部一些逻辑处理后输出。FPGA内部的布线资源有快有慢之分,好比国道和高速公路。通过高速通道所需要的路径延时假设为3ns-7ns,但只有两条可用;而通过慢速通道的路径延时则>10ns。

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+Microco slack:表示设计是否满足时序的一个称谓:正的slack表示满足时序,负的slack表示不满足时序。保持时间slac k是一个重要的概念,引起不满足的主要原因是时钟偏斜大于数据路径的偏斜。Quartus2时序分析工具和优化向导: 常用的三种时序约束设置方法:1 通过Assignment/timing settings 2 Assignment/timing wiard tool 3 Assignment/Assignment editor选择在图形界面下完成对设计的时序约束。一般情况下前两种是做全局的时序约束,后一种是做局部的时序约束,另外还可以通过修改.qsf文件来实现。 时序约束思想:时序约束一般都是先全局后个别,如果冲突则个别的优先级更高。 一、将编绎器设置为时序驱动编绎,即是指让编绎过程尽量向着满足时序约束方向努力!assignment/settings/fitter setting. 二、全局时钟设置如果在设计中只有一个全局时钟,或者所有的时钟同频,可以在Quartus2中只设置一个全局时钟约束。Assignment/timing settings 三、时序向导在用记对时序约束设置不熟悉的情况下,可以选择使用向导。Assignment/classic timing analyser wizards. 四、可以设置独立时钟与衍生时钟,衍生时钟是由独立时钟变化而来的,他是由独立时钟分频,倍频,移相等变化而来的,可以在设置中确定二者的关系Assignment/settings/timing analyse setting/classic timing analyse setting/individual clock。 五、通过assignment editor 设置个别时钟约束

关于quartus ii时序约束

关于quartus ii时序约束(1) 2012-06-17 09:46:07| 分类:默认分类|举报|字号订阅 一直以来都只是简单地理解了一下关于时序约束的内容,而工具也有默认classic的约束,加上目前的设计对时序没有很高的要求,所以就一直都没真正地自己做过一次约束,但是我知道,这部分是不可以跳过的,这部分也算是搞FPGA必须掌握的内容。今天下午对这部分进行了初次探究,收获有如下: 常用的约束有三种: 1.时序约束 2.区域约束 3.位置约束 时序约束的作用有: 1.提高设计的工作频率 2.获得正确的时序分析报告 需要复习前面博文《FPGA学习之时序分析基础(7)》 记住,堵塞原则是HDL语言的精髓,也就是说触发器是有延时作用的,虽然两个触发器使用的是同一个时钟,但是当第二个触发器接收第一帧数据的时候第一个触发器在发第二帧数据,而当第二个触发器接收第二帧数据的时候第一个触发器在发第三帧数据,依此类推,也就是说每一帧数据在两个触发器之间都有一个clk的时间前进,如果前进的时间太长,也即是系统给的时钟太快,就会出现无法满足第二个触发器setup的时间。setup time 就是第二个触发器在接收到由第一个触发器上一个时钟发送的数据之前应空闲的时间。 公式:CLK+TCLK2-Tsu > Tclk1 + Tcd + Tdata 所以系统CLK是和Tsu息息相关的,所以看时序报告的时候也是从Clock Setup ‘clk’看最差路径等信息。

在FPGA设计工具中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要对这几种路径分别进行约束,以便使设计工具能够得到最优化的结果。下面对这几种路径分别进行讨论。 1. 从输入端口到寄存器: 这种路径的约束是为了让FPGA设计工具能够尽可能的优化从输入端口到第一级寄存器之间的路径延迟,使其能够保证系统时钟可靠的采到从外部芯片到FPGA的信号。 约束名称:input delay。 约束条件的影响主要有4个因素:外部芯片的Tco,电路板上信号延迟Tpd,FPGA的Tsu, 时钟延迟Tclk. Tco的参数通常需要查外部芯片的数据手册。计算公式:input delay = Tco+Tpd+Tsu-Tclk。FPGA的Tsu也需要查FPGA芯片的手册。FPGA速度等级不同,这个参数也不同。Tpd和Tclk需要根据电路板实际的参数来计算。通常,每10cm的线长可以按照1ns来计算。例如:系统时钟100MHz,电路板上最大延迟2ns,时钟最大延迟1.7ns,Tco 3ns,FPGA的Tsu为0.2ns。那么输入延迟的值:max Input delay = 2+3+0.2-1.7=3.5ns. 这个参数的含义是指让FPGA的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在10ns-3.5ns=6.5ns以内,其中10ns是系统时钟。 2. 寄存器到寄存器: 这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。由于这种路径只存在于FPGA 内部,通常通过设定时钟频率的方式就可以对其进行约束。对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减少扇出数量,提高性能。 3. 寄存器到输出: 这种路径的约束是为了让FPGA设计工具能够优化FPGA内部从最后一级寄存器到输出端口的路径,确保其输出的信号能够被下一级芯片正确的采到。 约束的名称:output delay。

相关主题
文本预览
相关文档 最新文档