




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在给FPGA做逻辑综合和布局布线时,需要在工具中设定时序的约束。通常,在FPGA设计工具中包含有4种路径:从输入端口到寄存器,从寄存器到寄存器,从寄存器到输出,从输入到输出的纯组合逻辑。通常,需要对这几种路 径分别进行约束,以便使设计工具能够得到最优化的结果。下面对这几种路径分别进行讨论。从输入端口到寄存器:这种路径的约束是为了让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 = 3+2+0.2-1.7=3.5ns. 这个参数的含义是指 让FPGA的设计工具把FPGA的输入端口到第一级寄存器之间的路径延迟(包括门延迟和线延迟)控制在 10ns-3.5ns=6.5ns 以内。寄存器到寄存器:这种路径的约束是为了让FPGA设计工具能够优化FPGA内寄存器到寄存器之间的路径,使其延迟时间必须小于时钟周期,这样才能确保信号被可靠的传递。由于这种路径只存在于FPGA内部,通常通过设定时钟频率的方式就可以对其进行约束。对于更深入的优化方法,还可以采用对寄存器的输入和寄存器的输出加入适当的约束,来使逻辑综合器和布线器能够对某条路径进行特别的优化。 还可以通过设定最大扇出数来迫使工具对其进行逻辑复制,减少扇出数量,提高性能。寄存器到输出:这种路径的约束是为了让FPGA设计工具能够优化FPGA内部从最后一级寄存器到输出端口的路径,确保其输出的信号能够被下一级芯片正确的采到。 约束的名称: output delay, 约束条件的影响主要有3个因素:外部芯片的Tsu,电路板上信号延迟Tpd,时钟延迟Tclk. Tsu的参数通常需要查外部芯片的数据手册。 计算公式:output delay = Tsu+Tpd-Tclk. 例如:系统时钟100MHz, 电路板上最大延迟2ns, 时钟最大延迟 1.7ns, Tsu 1ns, 输出延迟的值: max output delay = 1+2-1.7=1.3ns . 这个参数的含义是指 让FPGA的设计工具把最后一级寄存器到输出端口之间的路径延迟(包括门延迟和线延迟)控制在 10ns-1.3ns=8.7ns 以内。从输入端口到输出端口:这种路径是指组合逻辑的延迟,指信号从输入到输出没有经过任何寄存器。给这种路径加约束条件,需要虚拟一个时钟,然后通过约束来指定哪些路径是要受该虚拟时钟的约束。 在Synplifypro和Precision中都有相应的约束来处理这种路径。前面讲述了关于输入输出延迟的一些参数的含义和计算方法。如果要把这些参数和altera,xilinx的软件结合起来,也不是一件容易的事情。以前altera和xilinx的约束条件设定非常烦杂,各自都有一套。似乎大家也不太看重约束条件的设定,大多时候都是无论如何先上板,然后通过signaltap和Chipscope来调。当FPGA规模大了之后,布线一次都需要很长时间,这种方法的弊端就越来越严重。 实际上可以借鉴ASIC的设计方法:加比较完善的约束条件,然后通过RTL仿真,时序分析,后仿真来解决问题,尽量避免在FPGA电路板上来调试。 altera最先意识到这一点,它采用了Synopsys的SDC格式。SDC的格式也得到了逻辑综合器的支持。而且设定方法比较容易掌握。详细讨论一下这种格式的约束设定方法。时钟的设定方法:时钟要分成两种,一种是从端口上直接输入的时钟,另一种是在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, 占空比为2ns低电平,8ns高电平。这个叫做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 getports sysclk -div 4 get_registers cnt_clk这个约束命令描述了 一个clk2的约束,约束的对象是由sysclk分频4次得到的时钟,这个时钟是由cnt_clk这个寄存器产生的。在高速的系统中,对时钟的描述可能会要求的更多,更加细致。例如,会要求对时钟的抖动和时钟的延迟进行描述。 在SDC的文件格式中,可以通过两个命令来描述:set_clock_uncertainty和set_clock_latency 来设定。时钟的延迟相对来讲比较简单。延迟一般分为外部延迟和内部时钟线网的延迟。通常在约束时只对外部延迟做约束,在set_clock_latency的命令后带-source的参数就可以了。例如:set_clock_latency -source 2 get_clocks clk_in 时钟的抖动要稍微复杂一些。因为这个值不但会影响到对Tsu的分析,也会影响到对Thold的分析。因此,采用set_clock_uncertainty的参数要多一些。如果要理解这个命令对系统时序分析的影响,就需要对altera的延时计算的概念需要做更多的说明。对于set_clock_uncertainty的情况,就稍微复杂一些。因为set_clock_uncertainty的值既影响建立时间的计算,也影响保持时间的计算,因此,需要在设定时分别指明:set_clock_undertainty setup 0.500 from clkA to clkAset_clock_uncertainty hold 0.300 from clkA to clkA前面的内容里面提供了计算输入输出延迟的计算方法。输出延迟的命令是set_output_delay. 有几个参数要加:参考时钟,最大最小值,和端口的名称。如下面的例子中描述。set_output_delay -clock CLK -max 1.200 get_ports OUTset_output_delay -clock CLK -min 0.800 get_ports OUT输入延迟的命令很类似:set_input_delay -clock CLK -max 2.000 get_ports INset_input_delay -clock CLK -min 1.600 get_ports IN对一些特殊的设计要求,例如不关心的数据传递路径和多拍的路径,还需要增加false path 和 Multicycle的设定。这两个约束比较简单,容易设定,但是非常关键。如果设定的不好,系统性能会大打折扣。false path是指在时序分析中不考虑其延迟计算的路径。例如有些跨越时钟域的电路等。设定的方法:set_false_path -from get_clocks clkA -to get_clocks clkBset_false_path -from regA -to regB第一条命令是设定了从时钟域clkA到时钟域clkB的所有路径都为false path.第二条命令设定了从regA到regB的路径为false path. 这两种路径在做时序分析时都会被忽略。multicycle的设定和false path的设定方法差不多。为了让逻辑综合器和布局布线器能够根据时序的约束条件找到真正需要优化的路径,我们还需要对时序报告进行分析,结合逻辑综合器的时序报告,布线器的时序报告,通过分析,可以看出是否芯片的潜能已经被完全挖掘出来。关于如何看时序分析报告,如果有机会,也可以专门搞个讲座进行详细的讲解A 时序约束的概念和基本策略时序约束主要包括周期约束(FFS到FFS,即触发器到触发器)和偏移约束(IPAD到FFS、FFS到OPAD)以及静态路径约束(IPAD到OPAD)等3种。通过附加约束条件可以使综合布线工具调整映射和布局布线过程,使设计达到时序要求。例如用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与电路板正确连接。另外通过约束还可以指定IO引脚所支持的接口标准和其他电气特性。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如 AGP、BLVDS、CTT、GTL、GTLP、HSTL、LDT、LVCMOS、LVDCI、LVDS、LVPECL、LVDSEXT、LVTTL、PCI、PCIX、SSTL、ULVDS等丰富的IO接口标准。另外通过区域约束还能在FPGA上规划各个模块的实现区域,通过物理布局布线约束,完成模块化设计等。 C 周期(PERIOD)的含义周期的含义是时序中最简单也是最重要的含义,其它很多时序概念会因为软件商不同略有差异,而周期的概念确是最通用的,周期的概念是FPGA/ASIC时序定义的基础概念。后面要讲到的其它时序约束都是建立在周期约束的基础上的,很多其它时序公式,可以用周期公式推导。周期约束是一个基本时序和综合约束,它附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件的时序是否满足要求。PERIOD约束会自动处理寄存器时钟端的反相问题,如果相邻同步元件时钟相位相反,那么它们之间的延迟将被默认限制为PERIOD约束值的一半。如下图所示图1 周期的定义时钟的最小周期为:TCLK = TCKO +TLOGIC + TNET + TSETUP TCLK_SKEWTCLK_SKEW =TCD2 TCD1其中TCKO为时钟输出时间,TLOGIC为同步元件之间的组合逻辑延迟,TNET为网线延迟,TSETUP为同步元件的建立时间,TCLK_SKEW为时钟信号TCD2和TCD1延迟的差别。D 数据和时钟之间的约束为了确保芯片数据采样可靠和下级芯片之间正确地交换数据,需要约束外部时钟和数据输入输出引脚之间的时序关系(或者内部时钟和外部输入/输出数据之间的关系,这仅仅是从采用了不同的参照系罢了)。约束的内容为告诉综合器、布线器输入数据到达的时刻,或者输出数据稳定的时刻,从而保证与下一级电路的时序关系。这种时序约束在Xilinx中用Setup to Clock(edge),Clock(edge) to hold等表示。在Altera里常用tsu (Input Setup Times)、th (Input Hold Times)、tco (Clock to Out Delays)来表示。很多其它时序工具直接用setup和hold表示。其实他们所要描述的是同一个问题,仅仅是时间节点的定义上略有不同。下面依次介绍。E 关于输入到达时间Xilinx的输入到达时间的计算时序描述如下图所示: 图2 输入到达时间示意图定义的含义是输入数据在有效时钟沿之后的TARRIVAL时刻到达。则,TARRIVAL=TCKO+TOUTPUT+TLOGIC根据上面介绍的周期(Period)公式,我们可以得到Tcko+Toutput+Tlogic+Tinput+Tsetup-Tclk_skew=Tclk将公式1代入公式2: Tarrival+Tinput+Tsetup-Tclk_skew=Tclk, 而Tclk_skew满足时序关系后为负,所以TARRIVAL +TINPUT+TSETUP TCLK这就是Tarrival应该满足的时序关系。其中TINPUT为输入端的组合逻辑、网线和PAD的延迟之和,TSETUP为输入同步元件的建立时间。F 数据延时和数据到达时间
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务平台商家管理规范及流程
- 飞机雷达罩测试工中秋节后复工安全考核试卷含答案
- 真空冶炼工国庆节后复工安全考核试卷含答案
- 企业社会责任年度报告格式要求
- 渣油热加工工节假日前安全考核试卷含答案
- 企业年度财务报表分析实务教程
- 药品物流企业内审管理流程表
- 设施农业项目可行性研究报告范本
- 全国高考化学满分试卷及详解
- 土方开挖及降水联合施工技术规范
- 森林调查-小班调查(森林资源经营管理)
- 2022年新兴县事业单位考试真题及答案
- dn2000顶管施工组织设计
- 精神科进食障碍患者护理
- 糖尿病知识宣传饮食管理课件下载
- 保险投资发展历程保险分红知识前言
- 完美奖金制度课件
- 全新档案法专题学习讲座课件
- DB37-T 5026-2022《居住建筑节能设计标准》
- 线性代数试题及答案-线性代数试题
- 六年级上册道德与法治课件第四单元第8课
评论
0/150
提交评论