FPGA 静态时序分析(STA)_第1页
FPGA 静态时序分析(STA)_第2页
FPGA 静态时序分析(STA)_第3页
FPGA 静态时序分析(STA)_第4页
FPGA 静态时序分析(STA)_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ALTERA静态时序分析(STA)时序约束的概念n时序约束:是指在逻辑综合,布局布线或静态时序分析时,在综合工具,布局布线工具或sta工具中指定信号的频率/周期,占空比,时延等约束条件,EDA工具根据给定的约束条件来工作。n在综合工具中约束:使综合的生成的电路满足时序要求;n在布局布线工具中约束:目标是使布局布线的结果满足时序要求;n在静态时序分析工具中约束:目标是根据约束条件来分析设计是否满足要求;时序收敛的概念n时序收敛,又称时序闭合,是指通过在逻辑综合工具、布局布线工具中指定时序约束条件已经行综合和布局布线,然后分局静态时序分析的报告,经过优化设计或者修改约束条件后,使设计满足时序约束条

2、件。STA工具n工具: synopsys的PrimeTime运行在linux下 Innoveda的Blast 各个FPGA厂商的工具如ALTETRA的QuartusII中集成了timequest,它是基于标准约束(SDC)文件的约束,比classic工具的功能更强大,可以对多时钟和源同步接口等较难的情况进行约束。如何使用STAn时序分析的约束需要由用户输入;n观察时序分析报告,对不满足时序要求的路径进行重新约束或修改设计,使路径满足要求;n时序分析的约束指导filter进行布局布线,使设计满足要求;基本概念n建立/保持关系n关键路径nLaunch/latchn数据/时钟到达时间n数据需求时间n

3、建立/保持的slack分析nRecovery/removalnTiming modes建立/保持关系关键路径n关键路径是指同步逻辑电路中,组合逻辑演示最大的路径,也就是说关键路径对设计性能起决定性的影响。nSTA能找出逻辑电路中的关键路径,通过查看时序分析报告,可以确定关键路径。nTimeques的报告是以slack从小到大的顺序排列路径的,最差的路径在最前面报告。Launch/latch数据到达时间数据到达时间n数据到达目的寄存器D处的时间n数据到达时间=launch edge+Tclk1 + Tco +Tdata时钟到达时间时钟到达时间n时钟到达目的寄存器的时钟输入端的时间;n时钟到达时间

4、=latch edge +tclk2数据需求时间n数据需求时间setup和holdn为了使数据能在目的寄存器处被锁存,需要使数据在某个时间之前或者之后到达数据需求时间-setup数据需求时间=时钟到达时间 tsu - setup uncertainty数据需求时间-setup数据需求时间=时钟到达时间 + th +hold uncertainty建立slackn建立时间的裕量 建立slack=数据需求时间-数据到达时间n即数据到达时间比建立时间的要求时间更早,建立时间“有多”,数据在建立时间内稳定不变。n在timequest中,报告中正的slack表示路径时序满足要求,负的slack表示路径时

5、序不满足要求。n默认的情况下,建立时间关系的确定方法是:latch edge之前最近的一个launch edge被认为是发送沿,这两个沿之间的距离就是setup relationship。这个关系可以通过设置多周期来改变。建立slack保持slackn保持时间的“裕量” 保持slack=数据到达时间-数据需求时间n即数据到达时间比保持时间的要求时间更晚,保持时间“有多”,数据在保持时间内稳定不变。n在timequest中,报告中正的slack表示路径时序满足要求,负的slack表示路径时序不满足要求。n默认的情况下,建立时间关系的确定方法是:launch edge和latch edge之前的一

6、个锁存沿之间的距离就是hold relationship。这个关系可以通过设置多周期来改变。保持slack保持slacknTimequest中,保持检查分两种: 1. 当前launch edge的数据不会被前一个latch edge锁存到; 2. 下一个launch edge的数据不会被当前latch edge锁存到;n保持检查是对每对建立关系进行的。报告的是最差的保持路径。保持slackRecovery/removalnRecovery :在时钟有效沿之前,异步信号必须稳定的最小时间;nRemoval:在时钟有效沿之后,异步信号必须稳定的最小时间;n两者都是针对异步信号从有效变无效的情况;n

7、分析方法同建立/保持分析; Recovery/removalTiming modeln两种:slow corner(默认)和fast cornern建立时间在slow corner中必须满足; 保持时间在fast corner中必须满足;n用get_available_operating_conditions命令获得器件支持的时序模型; Timing model在QuartusII中使用Timequest在QuartusII中使用Timequest在QuartusII中使用Timequest使用timequest的步骤n1.生成网表n2.约束:读入SDC文件或者写入约束n3.updata网表n

8、4.report,check timingn5.保存约束(操作说明)SDC术语SDC术语SDC约束的类型n三类约束:1. 时钟(基本时钟,衍生时钟和虚拟时钟)2. IO延迟(set input/output delay)3. 时序例外(exception)nTimequest只报告约束了的路径建议约束所有的时钟和输入输出portSDC约束的类型时钟约束nTimequest中默认所有的时钟都相关;n基本时钟:create_clock 虚拟时钟:create_clock 衍生时钟:create_generated_clock 或derive_pll_clocks 时钟约束n检测系统中的所有时钟:

9、derive_clocks period 运行该命令后,再运行report_clocks 命令,即可观察系统中都有哪些时钟,以便对所有时钟都进行约束; 该命令只作为检测时钟用,最后的约束不能使用这个命令;时钟约束n基本时钟和衍生时钟时钟约束n基本时钟和虚拟时钟基本时钟: create_clock -period 10 name clk1 get_ports clk虚拟时钟:create_clock -period 10 name clk1 =虚拟时钟在源同步接口中会使用到。时钟约束n虚拟时钟:是一个在设计中没有真正源或者说与设计没有直接关系的一个时钟。例如,如果一个时钟不是设计中的时钟,而仅仅

10、作为一个外部器件的时钟源,并且外部器件和该设计有输入或者输出的管脚,那么就认为这个时钟是虚拟时钟。时钟约束虚拟时钟:#create base clock for the designcreate_clock -period 5 get_ports system_clk#create the virtual clock for the external registercreate_clock -period 10 -name virt_clk -waveform 0 5 #set the output delay referencing the virtual clockset_output_

11、delay -clock virt_clk -max 1.5 get_ports dataout时钟约束n时钟复用 1.通过多个时钟引脚接入多个时钟; 2.一个时钟输入引脚上接多个频率的时钟,时钟复用在器件外部实现; 3.使用pll的switch-over模式ntimequest支持对复用时钟进行约束: 时钟约束n时钟复用 create_clock的 add 选项 set_clock_group时钟约束n#Create the first input clock clkA to the muxncreate_clock -period 10.000 -name clkA get_ports c

12、lkAn#Create the second input clock clkB to the muxncreate_clock -period 20.000 -name clkB get_ports clkBn#Cut paths between clkA and clkBnset_clock_groups exclusive -group clkA -group clkB多个引脚接入时钟约束n# The clk port can be driven at 100MHz (10ns) or# 50MHz (20ns)n# clkA is 10nsncreate_clock -period 10

13、.000 -name clkA get_ports clkn# clkB is 20ns assigned to the same port Requires -add optionncreate_clock -period 20.000 -name clkB get_ports clk -addnset_clock_groups -exclusive -group clkA -group clkB外部复用时钟约束n#create a 10ns clock for clock port clk0ncreate_clock -period 10.000 -name clk0 get_ports

14、clk0n#create a 20ns clock for clock port clk1ncreate_clock -period 20.000 -name clk1 get_ports clk1n#automatically create clocks for the PLL output clocksnderive_pll_clocksPLL两个输入时钟时钟约束nset_clock_latencyn两种:network latency和source latency; network latency:时钟(如,一个clock port)到寄存器pin之间的时钟网路延迟; source la

15、tency:时钟源到时钟之间的时钟网络延迟;nTimequest自动计算network latency,所以set_clock_latency只设置source latency(- source 选项不可少)nPLL输出时钟反馈到FPGA时钟输入引脚时特别有用;这种latency可以通过在chip planner中查看到。时钟约束nset_clock_uncertainty n为时钟或者时钟到时钟传输指定了时钟不确定时间(uncertainty)或时钟偏斜(skew)。可以为个别的建立和保持时间指定不确定时间,也可以为个别时钟传输指定上升沿或下降沿。 nTimequest为每个合适路径data

16、 required time里扣除建立不确定时间,为每个合适路径的data required time加上保持不确定时间。时钟约束nclock uncertainty = clock jitter + clock skew. jitter 是 由时钟源产生的抖动。skew是时钟树不平衡引起的到达两个寄存器的延迟差。在cts之后,skew由工具算出,因此sta的时候clock uncertainty 可以设一个比较小的值。另外做hold check的时候因为检查的是同一个时钟沿,因此没有jitter只有skew.时钟约束nset_clock_groupsn设计中有很多时钟,并不是每个时钟之间都有

17、关系nset_clock_groups -asynchronous |-exclusive -group -group -group .n-asynchronous:两个时钟之间没有相位关系,并且同时有效;n-exclusive:两个时钟是互斥的,如复用到一个时钟引脚的两个时钟;n-group:group之内的时钟之间相关, group之间的时钟互不相关;时钟约束n时钟之间没有整数倍关系,时钟的周期也不是ns的整数倍时,可能会出现latch和launch沿之间只有几个ps的建立时间,这时候,需要对时钟进行约束;nSet_max_delay和set_min_delay时钟约束set_max_de

18、lay -from get_clocks clk_a -to get_clocks clk_b 3.333set_min_delay -from get_clocks clk_a -to get_clocks clk_b 0IO约束n纯组合IO接口n同步IO接口n源同步IO接口IO约束n纯组合IO接口nset_max_delay 和 set_min_delayIO约束nset_max_delay from get_ports in1 to get_ports out* 5.0nset_max_delay from get_ports in2 to get_ports out* 7.5nset_

19、max_delay from get_ports in3 to get_ports out* 9.0nset_min_delay from get_ports in1 to get_ports out* 1.0nset_min_delay from get_ports in2 to get_ports out* 2.0nset_min_delay from get_ports in3 to get_ports out* 3.0纯组合IO接口IO约束n同步输入接口:保证fpga满足建立保持时间IO约束n输入最大延迟:包含了FPGA之外的所有延迟,数据从外部器件经过最长的时间到达FPGA后,仍然要

20、满足FPGA的建立时间。ninput delay max = Board Delay (max) - Board clock skew (min) + Tco(max) = (Tdata_PCB(max)+ TCL) - (Tclk2ext(min)-Tclk1(max) + Tco(max)IO约束n输入最小延迟:包含了FPGA之外的所有延迟,数据从外部器件经过最段的时间到达FPGA后,仍然要满足FPGA的保持时间。ninput delay min = Board Delay (min) - Board clock skew (max) + Tco(min) = (Tdata_PCB(min

21、)+ TCL) - (Tclk2ext(max)-Tclk1(min) + Tco(min)IO约束n最大延迟和最小延迟都要定义,如果只定义了一种,会有warning,并且另外一种类型的延迟会默认的等于已定义的类型的延迟的值。IO约束n同步输出接口:保证fpga的tco满足要求IO约束n输出最大延迟:包含了FPGA之外的所有延迟,数据经过最长的时间到达外部器件,仍然满足外部器件的建立时间noutput delay max = Board Delay (max) - Board clock skew (min) + Tsu = (Tdata_PCB(max)+ TCL) - (Tclk2(min

22、) -Tclk1ext(max) + TsuIO约束n输出最大延迟:包含了FPGA之外的所有延迟,数据经过最短的时间到达外部器件,仍然满足外部器件的保持时间noutput delay min = Board Delay (min) - Board clock skew (max) - Th = (Tdata_PCB(min)+ TCL) - (Tclk2(max) Tclk1ext(min) - ThIO约束n源同步接口:时钟和数据一起从源器件发送到接收器件nSystem_approach的计算方式,考虑板上的延迟IO约束源同步输出IO约束IO约束n源同步输出noutput delay max

23、 = Board Delay (max) - Board clock skew (min) + Tsu =2-1.4+2=2.6noutput delay min = Board Delay (min) - Board clock skew (max) - Th =1.5-1.7-0.5=-0.7IO约束IO约束IO约束n源同步输入IO约束IO约束ninput delay max = Board Delay (max) - Board clock skew (min) + Tco(max) =2-1.4+3=3.6ninput delay min = Board Delay (min) - B

24、oard clock skew (max) + Tco(min) =1.5-1.7+1=0.8IO约束IO约束IO约束n对输出,Delay的value是指在fpga的端口上,数据在时钟的有效沿多久之前稳定,这样,到达外部器件的寄存器后,才能满足建立时间和保持时间。类似于在fpga端口上数据的建立时间和保持时间要求。n对输入,Delay的value是指当到达fpga的寄存器时,数据会在时钟有效沿多久之后稳定;n不论是输入延迟还是输出延迟,都是data 在 fpga port处相对于与时钟的延迟。 时序例外n包括三项(按优先级由高到低排列): 1. set_false_path 2. set_min_delay 和set_max_delay 3.设置多周期(multicycle)时序例外nset_false_path:将与设计功能无关的路径设置为错误路径,例如,测试功能模块等,这样,filter在布局布线时将释放出资源优先给有用路径,使时序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论