当前位置:首页 >> 兵器/核科学 >>

在FPGA设计环境下添加时序约束的方法

如何在 FPGA 设计环境中加时序约束 SDC
在给 FPGA 做逻辑综合和布局布线时, 需要在工具中设定时序的约束。 通常, 在 FPGA 设计工具中都 FPGA 中包含有 4 种路径:从输入端口到寄存器,从寄 存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。 通常,需要对 这几种路径分别进行约束, 以便使设计工具能够得到最优化的结果。下面对这几 种路径分别进行讨论: 从输入端口到寄存器: 这种路径的约束是为了让 FPGA 设计工具能够尽可能的优化从输入端口到 第一级寄存器之间的路径延迟, 使其能够保证系统时钟可靠的采到从外部芯片到 FPGA 的信号。约束名称:input delay。 约束条件的影响主要有 4 个因素:外部 芯片的 Tco,电路板上信号延迟 Tpd,FPGA 的 Tsu/Th,时钟延迟 Tclk。Tco 的 参 数 通 常 需 要 查 外 部 芯 片 的 数 据 手 册 。 计 算 公 式 : input delay = Tco+Tpd+Tsu-Tclk。FPGA 的 Tsu 也需要查 FPGA 芯片的手册,FPGA 速度等级 不同,这个参数也不同。 Tpd 和 Tclk 需要根据电路板实际的参数来计算。通常, 每 10 cm 的线长可以按照 1ns 来计算. 例如:系统时钟 100MHz,电路板上最大 延迟 2 ns,时钟最大延迟为 1.7 ns,Tco 为 3 ns,FPGA 的 Tsu 为 0.2 ns。那么输 入延迟的值: max input delay = 2+3+0.2-1.7=3.5 ns。 这个参数的含义是指让 FPGA 的设计工具把 FPGA 的输入端口到第一级寄存器之间的路径延迟 (包括门延迟和 线延迟)控制在 10 ns - 3.5 ns = 6.5 ns 以内。对于 min input delay,则类似考虑 FPGA 寄存器的 Th 参数等。

寄存器到寄存器: 这种路径的约束是为了让 FPGA 设计工具能够优化 FPGA 内寄存器到寄存 器之间的路径(register-to-register), 使其延迟时间必须小于时钟周期, 这样才能确 保信号被可靠的传递。 由于这种路径只存在于 FPGA 内部, 通常通过设定时钟频 率的方式就可以对其进行约束。 对于更深入的优化方法,还可以采用对寄存器的 输入和寄存器的输出加入适当的约束, 来使逻辑综合器和布线器能够对某条路径 进行特别的优化。 还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减 少扇出数量,提高性能。

寄存器到输出: 这种路径的约束是为了让 FPGA 设计工具能够优化 FPGA 内部从最后一级 寄存器到输出端口的路径(register-to-pin),确保其输出的信号能够被下一级芯片 正确的采到。约束的名称:output delay,约束条件的影响主要有 3 个因素:外 部芯片的 Tsu/Th,电路板上信号延迟 Tpd,时钟延迟 Tclk。Tsu/Th 的参数通常需 要查外部芯片的数据手册。计算公式:output delay = Tsu + Tpd - Tclk。例如:系 统时钟 100MHz, 电路板上最大延迟 2 ns,时钟最大延迟为 1.7 ns,Tsu 为 1 ns, 输出延迟的值:max output delay = 1+2-1.7=1.3 ns。这个参数的含义是指让 FPGA 的设计工具把最后一级寄存器到输出端口之间的路径延迟(包括门延迟和线延 迟)控制在 10 ns - 1.3 ns = 8.7 ns 以内。

从输入端口到输出端口: 这种路径是指组合逻辑的延迟,指信号从输入到输出没有经过任何寄存器。 给这种路径加约束条件,需要虚拟一个时钟(Virtual Clock) ,然后通过约束来指 定哪些路径是要受该虚拟时钟的约束。在 Synplifypro 和 Precision 中都有相应的 约束来处理这种路径。

一. 约束时钟 1. 时钟周期的约束 时钟的设定方法:时钟要分成两种,一种是从端口上直接输入的时钟,另一 种是在 FPGA 内部产生的时钟。 内部产生的时钟又要分成两种, 从锁相环出来的 (包括 altera 的 PLL 和 Xilinx 的 DLL)和从逻辑单元出来的,例如一般的计数器 分频就是这种情况。 从锁相环出来的时钟可以通过端口直接加,因为一般的综合 工具和布线工具都能够自动的把端口的时钟约束传递到锁相环, 并且根据锁相环 的倍频关系自动施加到下一级。 而从逻辑单元出来的就需要单独对其进行约束。 在 SDC 格式中,创建时钟的命令 create_clock,后面要带 3 个参数:name, period,waveform。name 的含义是指创建这个时钟约束的名字,而不是时钟本身 的名字。要把这个约束和时钟信号关联起来,还需要在后面加些东西。period 的 单位缺省是 ns。waveform 是用来指定占空比。除了这三个参数以外,常常还要

加 get_ports 的命令,来指定时钟的输入端口。

例: create_clock -name clk1 -period 10.000 -waveform {2.000 8.000} [get_ports sysclk] 这个例子表示, 有一个 clk1 的约束, 在这个约束中设定了时钟的周期为 10ns, 占空比为 2 ns 低电平,8 ns 高电平。这个叫做 clk1 的约束是针对 sysclk 这个端 口的。 如果是利用内部锁相环分频出来很多其他时钟的约束, 可以不再另外施加其 他约束,逻辑综合器和布线器都能根据锁相环的参数自动计算;如果是利用内部 的逻辑单元分频出来的信号,则必须利用 get_registers 指定分频的寄存器名。 例: create_clock -name clk1 -period 10.000 -waveform {2.000 8.000} [get_registers cnt_clk]
此外, 对于逻辑单元分频的时钟信号, 也可以采用命令 create_generated_clock

会更加精确: 例:create_generated_clk –name clk2 -source [get_ports sysclk] -div 4 [get_registers cnt_clk] 这个约束命令描述了一个 clk2 的约束,约束的对象是由 sysclk 分频 4 次得 到的时钟,这个时钟是由 cnt_clk 这个寄存器产生的。 2. 时钟延迟、抖动等约束 在高速的系统中,对时钟的描述可能会要求的更多,更加细致。例如,会要求对 时钟的抖动和时钟的延迟进行描述。 在 SDC 的文件格式中,可以通过两个命令 来描述:set_clock_uncertainty 和 set_clock_latency 来设定。 时钟的延迟一般分为外部延迟和内部时钟线网的延迟。 通常在约束时只对外 部延迟做约束,在 set_clock_latency 的命令后带 -source 的参数就可以了。 例:set_clock_latency -source 2 [get_clocks {clk_in}]

时钟的抖动要稍微复杂一些。因为这个值不但会影响到对 Tsu 的分析,也会 影响到对 Th 的分析。 因此,采用 set_clock_uncertainty 的参数要多一些。如果 要理解这个命令对系统时序分析的影响,就需要对 altera 的延时计算的概念需要 做更多的说明。 set_clock_uncertainty 的值既影响建立时间的计算, 也影响保持时

间的计算,因此,需要在设定时分别指明: set_clock_undertainty -setup 0.500 -from clkA -to clkB set_clock_uncertainty -hold 0.300 -from clkA -to clkB 总结:时钟约束的完成,意味着 FPGA 内部的 reg-to-reg 路径约束已经确定,其 余路径需要另外再加约束。

二. I/O 端口 1. 输出延迟的命令是 set_output_delay. 有几个参数要加: 参考时钟, 最大最小值, 和端口的名称。如下面的例子中描述: set_output_delay -clock CLK -max 1.200 [get_ports OUT],相当 于在考虑 FPGA 外部芯片中寄存器的建立时间要求; set_output_delay -clock CLK -min 0.800 [get_ports OUT],相当 于在考虑 FPGA 外部芯片中寄存器的保持时间要求; 输入延迟的命令很类似: set_input_delay -clock CLK -max 2.000 set_input_delay -clock CLK -min 1.600 [get_ports IN] [get_ports IN]

注意:I/O 分析时的参考时钟必须使用 Virtual Clock,即创建一个和主时钟同周 期的虚拟时钟,用来分析外部器件和 FPGA 内部寄存器之间的 Timing Path。

三. 特殊路径或设计的要求 对一些特殊的设计要求, 例如不关心的数据传递路径和多拍的路径,还需要 增加 false path 和 multicycle 的设定。这两个约束比较简单,容易设定,但是非 常关键。如果设定的不好,系统性能会大打折扣。 1. false path 是指在时序分析中不考虑其延迟计算的路径。 例如有些跨越时钟域 的电路等。设定的方法: set_false_path -from [get_clocks clkA] -to [get_clocks clkB], 该 命令是设定了从时钟域 clkA 到时钟域 clkB 的所有路径都为 false path. set_false_path -from regA -to 的路径为 false path. regB,该命令设定了从 regA 到 regB

上述两种路径在做时序分析时都会被自动忽略。 2. multicycle path 的设定 在同步逻辑设计中, 往往存在这样的情况:一些数据不需要在下一个时钟周 期就稳定下来, 可能在数据发送后几个时钟周期才起作用;一些数据经过的路径 太复杂,延迟太大,不可能在下一个时钟周期稳定下来,必须要在数据发送后的 数个时钟周期才能被采用。针对这两种情况,设计者的意图都是:数据的有效期 在以 launch edge 为起始的数个时钟周期之后的 latch edge,即设计者要在约束中 去指定 setup/hold time 的检查时钟沿(如:向后推迟 2 个周期) 例 : set_multicycle_path –from [get_clocks {clk_x1}] –to

[get_clocks {clk_x2}] –setup –end 2

为了让逻辑综合器和布局布线器能够根据时序的约束条件找到真正需要优 化的路径,我们还需要对时序报告进行分析,结合逻辑综合器的时序报告,布线 器的时序报告,通过分析,可以看出是否芯片的潜能已经被完全挖掘出来。


相关文章:
在FPGA设计环境下添加时序约束的方法.doc
在FPGA设计环境下添加时序约束的方法_兵器/核科学_工程科技_专业资料。关于f
在FPGA设计环境中加时序约束.doc
在FPGA设计环境中加时序约束在FPGA设计环境中加时序约束隐藏>> 在给FPGA 做逻辑综合和布局布线时,需要在工具中设定时序的约束。 通常,在 FPGA 设计工具中都 FPGA...
如何在FPGA设计环境中加时序约束(一.pdf
如何在FPGA设计环境中加时序约束(一 - 如何在 FPGA 设计环境中加时序约束(一) 在给 FPGA 做逻辑综合和布局布线时,需要在工具中设定时序的约 束。 通常,在 ...
eetop[1].cn_FPGA设计环境中加时序约束.doc
eetop[1].cn_FPGA设计环境中加时序约束 - 在给 FPGA 做逻辑综合和布局布线时, 需要在工具 工具中设定时序 时序的约束。 通常, 工具 时序 在 FPGA 设计 设计...
FPGA四种路径添加时序约束方法.doc
时序| 路径| FPGA四种路径添加时序约束方法_电子/电路_工程科技_专业资料。关于...通常,在 FPGA 设计工具中都 FPGA 中包含有4种路径:从输入 端口到寄存器,从...
FPGA时序约束方法_图文.pdf
Altera FPGA时序约束方法 ? 时序约束的原则 3 时序约束 ? 规范设计的时序行为,表达设计者期望满足的 时序条件,指导综合、布局布线 -过紧的时序约束会延长编译时间...
FPGA时序约束的6种方法.doc
FPGA时序约束的6种方法 - FPGA 时序约束的 6 种方法 对自己的设计的实现方式越了解,对自己的设计的时序要求越了解, 对目标器件的资源分布和结构越了解,对 EDA ...
FPGA时序约束的几种方法.doc
FPGA时序约束的几种方法_电子/电路_工程科技_专业资料。时序约束 对自己的设计的实现方式越了解, 对自己的设计的时序要求越了解, 对目标器件的资源分布和结 构越...
FPGA设计之时序约束总结.doc
FPGA 设计之时序设计关于 FPGA 设计中,时序约束的定义的总结说明 1.全局...在FPGA设计环境中加时序... 3页 1下载券 如何在FPGA设计环境中加... 2页...
一篇关于FPGA设计中时序约束的文档.pdf
一篇关于FPGA设计中时序约束的文档_信息与通信_工程科技_专业资料。一篇关于 FPGA 设计中时序约束的文档 最近一直在做 FPGA,很多事后发现仿真结果没问题,但是 一在 ...
FPGA设计中优化时序的原则与方法_图文.pdf
, 2007 微 处 理 机 MI CROPRO CE SSOR S 第 3期 2007 年 6月 大规模集成电路设计、 制造与应用 FPGA 设计中优化时序的原则与方法林昌辉, 樊晓桠 ( ...
FPGA时序约束、时序分析.pdf
FPGA 设计时序设计 FPGA 设计一个很重要的设计是时序设计,而时序设计的...那么可以 通过设计中加约束的方法, 控制不能走全局时钟网络的时钟信号的时钟...
XilinxFPGA编程技巧之常用时序约束详解.doc
XilinxFPGA编程技巧之常用时序约束详解 - 实用文档 Xilinx FPGA 编程技巧之常用时序约束详解 1. 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让...
FPGA设计中优化时序的原则与方法.pdf
FPGA设计中优化时序的原则与方法_专业资料。FPGA设计中优化时序的原则与方法No. 3 Jun. , 2007 微 处理机 M ICROPROCESSORS 第 3期 2007 年 6 月 大规模...
Xilinx FPGA编程技巧之常用时序约束详解.doc
Xilinx FPGA编程技巧之常用时序约束详解 - Xilinx FPGA 编程技巧之常用时序约束详解 1. 基本的约束方法 为了保证成功的设计, 所有路径的时序要求必须能够让执行工具...
Xilinx FPGA编程技巧常用时序约束介绍.doc
Xilinx FPGA编程技巧常用时序约束介绍 - Xilinx FPGA 编程技巧常用时序约束介绍 1. 基本的约束方法 为了保证成功的设计,所有路径的时序要求必须能够让执行工具获取。...
入门资料:FPGA时序分析基础与时钟约束实例.doc
入门:FPGA 时序分析基础与时钟约束实例 2013-07-16 何谓静态时序分析(STA,Static Timing Analysis)? 首先,设计者应该对 FPGA 内部的工作方式有一些认识。FPGA 的...
FPGA开发之时序约束(周期约束).doc
添加约束的方法中简单的方法就是直接添加到 ucf 中,其语法是: [约束信号] ...FPGA设计中约束时序 10页 2下载券 fpga学习心得_时序和约束... 4页 免费...
FPGA时序约束的几种方法.doc
FPGA时序约束的几种方法 - (帖)FPGA 时序约束的几种方法 前端,
FPGA设计中的时序分析及异步设计注意事项_图文.ppt
FPGA设计中的时序分析及异步设计注意事项_电子/电路_...这些巨大的负载就象一个大电容加在时钟线上, 再加...那么可以通过设计中加约束的方法,控制不能走全局时钟...