《FPGA工程师进阶必学时序分析的基本步骤和整体设计思路.docx》由会员分享,可在线阅读,更多相关《FPGA工程师进阶必学时序分析的基本步骤和整体设计思路.docx(10页珍藏版)》请在第壹文秘上搜索。
1、时序分析的基本步骤一个合理的时序约束,可以分为以下步骤:时序约束整体的思路与之前我说的方法基本一致。整体的思路如下:1 .先是约束时钟,让软件先解决内部时序问题;(在这一步骤中可以适当加入时序例外,以便时序通过)2 .然后再加入IO的延迟约束;3 .最后针对没有过的时序,添加时序例外。在vivado使用误区与进阶中,提到了一种叫UItraFAST的设计方法。针对下图中所说的根据迭代结果添加必要的例外约束(步骤1),为什么是添加必要的呢?是因为虽然是跨时钟域,但是有时候就算不约束,时序也能过。当碰到时序不过的时候,现阶段可以去针对该部分路径进行时序例外约束,以便后续继续分析。需要注意的是,就算没
2、有报时序为例,现阶段也一定要去留意那些跨时钟的路径(通过CIOCk_interaction),确认代码有没有做相应的跨时钟域处理。针对跨时钟域的代码处理后面会提到。如何使用时序约束向导TCW进行baselining约束Disable用户的XDC文件创建新的baselineXDC文件,并设置成target运行时序约束向导TCW- 约束所有时钟及时钟相互关系- 运行CDC跨时钟域报告检直CDC问题第一遍先跳过IO约束迭代各个阶段,验证各个阶段的时序问题- 根据迭代结果添加必要的例外约束- 确保内部时序满足要求在随后的流程中再添加IO和其他例外约束- 迭代各个阶段,验证各个阶段的时序问题阶段1BaS
3、elining时序约束开发技巧创建一个最小但充分的时钟约束- 大部分时序问题是内部寄存器间的问题(register-to-register)- 该阶段不要考虑Ic)时序问题- 在baselining阶段是不需要添加IO时序约束- 针对跨时钟域CDC路径使用适当的例外时序约束(SeuaISe_path,set_max_delay-datapath_only,set_clock_groups)定义时钟约束时钟主要可以分为主时钟以及衍生时钟。创建主时钟。典型的主时钟根包括有以下几种情况:输入端口、千兆位收发器输出引脚以及某些硬件原语输出管脚。X13446用于输入端口的CreatJdoCk约束实例:c
4、reate_clock-nameSysClk-period10-waveform05get_portssysclkGT收发器输入引脚,例如已恢复的时钟。原语引脚上的create_dock约束实例:create_clock-nametxclk-period6.667get_pingtO/TXOUTCLK创建星成时钟自动衍生时钟大部分生成时钟都由ViVadO设计套件时序引擎自动衍生获得,该引擎可识别时钟修改模块(CMB)及其对主时钟所执行的变换。赛灵思7系列器件中,CMB是:MMCM*PLL*BUFRPHASER*如果Vivado设计套件时序引擎所选择的自动衍生时钟名称并不合适,您可以使用Crea
5、te.generateCLCIoCk命令强行定义自己的名称,此时无需指定波形转换。该约束应刚好位于约束文件中定义主时钟的约束之后。例如,由MMCM实例生成的时钟的默认名称是net,您可以添加如下约束强制将其设定为自己的名称(例如fftClk):create_generated_clock-namefftClkget_pinsmmcm_i/CLKOUTO生成前钟源自另一个现有时钟(主时)。通常后来描述由逻辑模块在主时钟上执行的波形变换。由于生成时钟的定义取决于主时钟特性,因此必须首先定义主时钟。要明确定义生成时钟,必须使用Create_generated_clock命令。clJBUFJnstc1
6、BUJBUFJczQn-Ck,f-C2Y主时钟扇出中的生成时钟IBUFWJFC4create_generated_clock-nameGCl-SourceIget_pinsgen_clk_reg/C-divide_by2get_pinsgen_clk_reg/Q1跨时终域显理跨时钟域处理,主要是为了避免亚稳态的传播(注意亚稳态不能消除,但是可以采用一定的方式,降低其传播的风险)。触发器进入亚稳态的时间可以用参数MTBF(MeanTimeBetweenFailures)来描述,MTBF即触发器采样失败的时间间隔,表示为:MTBF=exp(C2XImT)Clclodc0(1)最小输入延时(inpu
7、tdelaymin)为当从数据发送时钟沿(IanUChedge)经过最小外部器件时钟偏斜(TClk1),最小器件数据输出延时(TCo),再加上最小PCB走线延时(TPCb),此时的时间总延时值一定要大于FPGA的最大时钟延时和建立时间之和,这样才能不破坏FPGA上一次数据的保持时间,即为holdslack必须为正,计算公式如下式所示:Holdslack=(Tclk1(min)+Tco(min)+Tpcb(min)-(FTh+Tclk2(max)0(2)我们很容易就可以从公式(1)和(2)推到出(3)Tclk-FtsuTclkl-Tclk2+Tco+TpcbFTh(3)在公式(3)中,我们发现T
8、Clk、Ftsu以及FTh,对于工具来说是已知的,而Tclkl-Tclk2+Tco+Tpcb正是我们需要告知综合工具的延迟量。从我们推到出的公式,我们可以得到:Input_delay_max=Tclk-Ftsu;Input_delay_min=FTh;输出延迟FPGA输出数据给外部器件模型如下图所示。对FPGA的IO口进行输出最大最小延时约束是为了让FPGA设计工具能够尽可能的优化从第一级寄存器到输出端口之间的路径延迟,使其能够保证让外部器件能准确的采集到FPGA的输出数据。FPGA外部器件输出延时即为从FPGA输出数据后到达外部器件的延时时间。其中包括时钟源到FPGA延时和到外部器件延时之差
9、、PCB板上的走线延时以及外部器件的数据建立和保持时间。如所示,为FPGA和外部器件接口时序图。OSCFPGA.CLKFPGAQASSPDASSP.CLK最大输出延时(OUtPUtdelaymaX)为当从FPGA数据发出后经过最大的PCB延时、最小的FPGA和器件时钟偏斜,再加上外部器件的建立时间。约束最大输出延时,是为了约束IO口输出,从而使外部器件的数据建立时间,即为setupslack必须为正,计算公式如下式所示:Setupslack=(Tclk+Tclk2(min)-(Tclk1(max)+FTco(max)+Tpcb(max)+Tsu)0(4)最小输出延时(outputdelaymi
10、n)为当从FPGA数据发出后经过最小的PCB延时、最大的FPGA和器件时钟偏斜,再减去外部器件的建立时间。约束最小输出延时,是为了约束IO口输出,从而使IO口输出有个最小延时值,防止输出过快,破坏了外部器件上一个时钟的数据保持时间,导致Modslack为负值,不能正确的锁存到数据,最小输出延时的推导计算公式如下式所示:Holdslack=(Tclk1(min)+FTco(min)+Tpcb(min)-(Th+Tclk2(max)0(5)我们很容易就可以从公式(4)和(5),发现这两条公式与前面推导输入延迟如出一辙。只不过现在FPGA变成了输出器件,而Tsu、Th是下游器件的参数,综合工具并不知
11、情,需要我们告诉他。除了FTco以外,其他参数都需要我们告诉工具。由公式(4)我们可以推导出:Fco(max)+Tpcb(max)-(Tclk2(min)-Tclk1(max)+Tsu0那么outputdelaymin=Tpcb(min)-(Tclk2(max)-Tclk1(min)-Th附参考资料:静态时序分析的基本概念和方法在同步电路设计中,时序是一个非常重要的因素,它决定了电路能否以预期的时钟速率运行。为了验证电路的时序性能,我们需要进行静态时序分析,即在最坏情况下检查所有可能的时序违规路径,而不需要测试向量和动态仿真。本文将介绍静态时序分析的基本概念和方法,包括时序约束,时序路径,时序
12、裕量,SetUP检查和hold检查等。时序路径同步电路设计中,时序是一个主要的考虑因素,它影响了电路的性能和功能。为了验证电路是否能在最坏情况下满足时序要求,我们需要进行静态时序分析,即不依赖于测试向量和动态仿真,而只根据每个逻辑门的最大延迟来检查所有可能的时序违规路径。时序,面积和功耗是综合和物理实现的主要驱动因素。芯片EDA工具的目标是在最短的运行时间内,用最小的面积和功耗,生成满足时序网表,并进行布局和布线。EDA工具会根据设计者给定的约束条件,在时序,面积,功耗和EDA工具运行时间之间做出权衡。芯片要想以期望的时钟频率运行,就必须遵守时序约束,因此时序是最重要的设计约束。静态时序分析的核心问题是“在所有情况下(multi-modemulti-corner),每个同步设备(Synchronousdevice,例如触发器)的数据输入端,在时钟边沿到达时,是否已经有正确的数据?”TimingPathExample上图中的虚线箭头代表了时序路径。为了保证数据能被准确地锁存,数据信号必须在时钟边沿到达触发器FF2的时钟端之前,传递到触发器FF2的数据端。setup检查CLK.八1.aunchedgeCaptureedge上图展示了这条时序路径的时序情况。当时钟边沿到达FFl时,FFl会锁存FFLD的数据。