欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

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

    • 资源ID:5035711       资源大小:885.88KB        全文页数:18页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    入门: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。默认情况下,离高速通道较近的din_2和din_3路径被布线到了高速通道上,当前的4 个信号在FPGA内部的延时为:dinl = 15ns, din2 = 4ns, din3 = 6ns, din4 = 13ns。IQrrS o ptth-Midy bil CD-SOb/ii>:»!«<= pt惜 5州 C= 7M10m paDi cFfllnyEKiff (Q Mikl但是,我们实际的系统需求是这样的:dinl < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。按照前面给出的4个输入信号的默认布局布线情况来看,din1是无法满足时序要求的。如果我们按照实际的需求对FPGA进行如下的时序约束: dinl < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns。此时,FPGA将重新进行布局布线。由于添加了时序约束,因此,FPGA的布局布线工具会根据这个实际需求,重新做布局布线 后,我们看到,重新布局布线后的路径延时如下:dinl = 7 ns, din2 = 4ns, din3 = 18ns, din4 = 13ns。此时,FPGA内部的时序全部都能够满足要求。关于约束,我们要稍微提一下两种不恰当的约束方法,即欠约束和过约束。我们假设 下面提到的两种情况下的原始系统实际时序要求都是一样的,即前面我们所说的:din1 < 10ns, din2 < 10ns, din3 < 20ns, din4 < 20ns但是下面这两种情况的约束不是完全按照实际系统时序需求来约束,我们来看看这些情况下 会出现什么问题。欠约束的情况(dinl和din2过约束):如果对本实例添加约束为 din1 < 20ns, din2 < 20ns, din3 < 20ns, din4 < 20ns。此时,由于4条路径的延时都能够控制在20ns要求之内,所以当前的约束都能够达到 目标。但是,相对于实际的情况,有两种情形:A. dinl和din2走了高速通道,那么当前约束也能够满足实际的时序要求;B. dinl和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的, 整个系统的时序无法满足要求。过约束的情况(din3和din4过约束):如果对本实例添加约束为:dinl < 10ns, din2 < 10ns, din3 < 10ns, din4 < 10ns。此时,由于能够走高速通道使得路径延时<10ns的路径只有2条,那么无论如何当前的 约束都有2条无法达到目标。但是,相对于实际的情况,有两种情形:A. din1和din2走了高速通道,那么当前约束也能够满足实际的时序要求;B. din1和din2都没有走高速通道,或者有1条路径走了高速通道,那么结果是一样的, 整个系统的时序无法满足要求。这个简单的例子当然不会是FPGA内部实际的情况,但是FPGA内部的各种资源若要得到均 衡的分配,设计者就必须添加一定的约束(时序约束),将设计的需求传达给工具,那么才 有可能指导工具进行资源的合理分配,保证系统的基本性能要求得以实现。时序欠约束和时序过约束都是不可取的,设计者应该根据实际的系统时序要求,添加 合适的时序要求(可以稍微过约束),帮助设计工具达到最佳的时序性能。下面我们再来认识一些时序分析的几个最基本的概念,即时钟和建立时间、保持时间 的关系。'化为一个时钟时钟这个并不陌生的词汇,特权同学也不大做文章,就先举个最典型的时钟模型献给 大家。如图所示,理想的时钟模型是一个占空比为50%且周期固定的方波。周期,为高脉冲宽度,岩为低脉冲宽度,二心3。占空比定义为高脉冲宽度与周期之比,即缶声。所谓建立时间(),是指在时钟上升沿到来之前数据必须保持稳定的时间;所谓保持时间(),是指在时钟上升沿到来以后数据必须保持稳定的时间。一个数据需要在时钟 的上升沿被锁存,那么这个数据就必须在这个时钟上升沿的建立时间和保持时间内保持稳 定。这里,我们举一个二输入与功能的时序设计模型,如图所示。输入数据datal和data2 会在时钟的上升沿被分别锁存到reg2和regl的输出端,然后这两个信号分别经过各自的路 径到达与门and的输入端,他们相与运算后信号传送到下一级寄存器reg3的输入端,对应 他们上一次被锁存后的下一个时钟上升沿,reg3的输入端数据被锁存到了输出端。这个过 程是一个典型的寄存器到寄存器的数据传输。下面我们就要以此为基础来探讨他们需要满足 的建立时间和保持时间关系。下面这个波形,clk表示时钟源发出的时钟波形,它要分别达到上面例子中的源寄存器 regl和reg2,以及达到目的寄存器reg3,所经过的时间是不一样的,因此我们看到波形中 给出的时钟达到reg3的波形clk_r3相对于基准时钟clk的波形会略有一些偏差(稍微延时一 些,这是真实情况的模拟)。Reglout和reg2out分别是数据datal和data2被锁存到各自寄 存器的输出端的波形,reg3in则是reglout和reg2out的波形经过路径延时和门延时后到达 reg3in的波形,而reg3out则是在clk_r3的上升沿来到并锁存好有效的数据后,其寄存器输 出端的波形。在这个波形中,我们看到clk_r3的前后各有一条虚线,前一条虚线到clk_r3的上升沿 这段时间即建立时间,clk_r3的上升沿到后一条虚线即保持时间。前面对建立时间和保持时 间下定义时提到过,在这段时间内不能够有数据的变化,数据必须保持稳定。而在这个波形 中,也确实没有看到建立时间和保持时间内,reg3in的数据有任何的变化,因此我们可以稳 定的将reg3in的数据锁存到reg3的输出reg3out中。我们再来看下面这个波形,同样的一些信号,但我们发现reg3in在clk_r3的建立时间内发生 了变化,这带来的后果就是clk_r3上升沿锁存到的reg3in数据不确定,那么随后的reg3out 值也会处于一个不确定状态。比如第一个时钟周期,原本reg3in应该是稳定的低电平,但 是由于真个路径上的延时时间过长,导致了 reg3in在clk_r3的建立时间数据还未能稳定下来, 在建立时间内出现了电平正处于从高到低的变化,即不稳定的状态,那么导致的后果就是 reg3out的最终输出要么是高电平要么是低电平,而不是原本期望的低电平。uncertainuncertainregloutrg2outreg3out我们再来看看保持时间违规的情况,如图所示,这次是数据传输得太快了,原本应该 下一个时钟周期到达clk_r3的数据竟然在clk_r3的前一个时钟周期后的保持时间还未过去就 来到了。因此,它出现的最终危害也是后端输出的reg3out处于不确定的状态。对于FPGA内部而言,通常我们把它的时序路径分为三类基本的约束路径,即: 输入信号pin2reg内部信号reg2reg 输出信号reg2pin我们逐个来看这三类基本路径分别约束的是那个部分的时序。reg2reg路径约束的对象是路径起始的源寄存器以及最终结束的目的寄存器都在FPGAn 内部的路径。如图所示,红色部分是从一个FPGA内部的寄存器到FPGA内部的另一个寄存 器的路径,他们共用一个时钟(当然也有不共用一个时钟的reg2reg路径,这种路径的分析 会复杂一些,这里不做深入讨论)。对于reg2reg路径,我们只要告诉FPGA时序分析工具他 们所使用时钟的频率(或时钟周期),那么FPGA内部通常就“心领神会”的让这条reg2reg 的路径总延时不超过这个时钟频率。我们再来看pin2reg的路径模型,如图所示。虽然和FPGA连接的外部芯片内部寄存器 的状态我们无从知晓(一般芯片也不会给出这么detail的内部信息),但是一般芯片都会给 出针对于这个芯片管脚的一些时序信息,如Tco、Tsu和Th等,我们其实也是用图示的这个 模型来分析的。在这个模型中,红色的大圈所覆盖的路径代表了和FPGA内部reg2reg分析 一样的模型,pin2reg原则上只是reg2reg分析的一部分。绿色圆圈则表示我们实际要告诉 FPGA的pin2reg约束信息,或者应该这样说,我们希望进行路径延时控制的路径就是这段绿 色圆圈覆盖的路径,但是我们需要通过整个reg2reg路径的情况,即根据绿色圆圈以外、红 色圆圈以内这部分路径的延时情况去告诉FPGA内部pin2reg路径延时可以在什么样一个范 围。最后,再看reg2pin的路径。如图所示。同样的,红色圆圈部分覆盖了 FPGA内部的源 寄存器开始,到FPGA外部芯片的目的寄存器为止的reg2reg的路径。外部芯片通常也不会 给出detail的信息,也是通过相对他们的管脚给出一些时序的信息。而绿色圆圈所覆盖的路径则是我们需要去约束的reg2pin的延时。它的延时信息同样是需要通过红色大圈以内、绿 色小圈以外路径的情况来推测得出。本节的重点是reg2reg的时钟约束。如图所示,一般的时序分析我们都可以来看看他们 的数据路径(data path)和时钟路径(clock path)。所谓数据路径,就是数据在整个传输起 点到传输终点所走过的路径;所谓时钟路径,则是指时钟时钟达到各个寄存器的路径。data pathclock如图所示,为了便于后续的时序余量分析和计算,我们提出了 data arrival path和data required path的概念。Data arrival path是指数据在两个寄存器间传输的实际所需时间;data required path则是指为了确保稳定、可靠且有效的传输,数据在两个寄存器间传输的理论所 需时间(也就是最低必须满足的传输时间要求,对于建立时间是最大值,对于保持时间则是 最小值)。很明显,从图中,我们就可以看出data arrival path传输的起点是时钟源,达到源 寄存器,然后是实际的数据从源寄存器到目的寄存器时间;而data required path的传输起点 也是源时钟,但却是达到目的寄存器,然后再考虑目的寄存器的建立时间和保持时间要求(图 中未示意)。如图所示,对于上面所提出的data arrival path和data required path,我们做了一些喜 欢,将实际的各个路径示意了出来。 Tc2t表示时钟源到源寄存器regl所经过的时钟网络延时; Tc2r表示时钟源到目的寄存器reg2所经过的时钟网络延时; Tco表示数据在被锁存后在寄存器内所经过的延时; Tr2r表示数据从上一级寄存器(源寄存器)的输出端到下一级寄存器(目的寄存器)的 输入端所经过的延时; Tsu表示寄存器的建立时间; Th表示寄存器的保持时间。FPGA在开始这些路径关系公式的分析前,我们还需要了解Setup relationship和Holdrelationship及其与launch edge和latch edge之 间的关系。如图所示,对于一个寄存器到寄 存器的传输来说,正常情况下,各个寄存器都是在时钟的控制下,每个上升沿锁存一次数据, 那么也就意味着,两个相邻的寄存器,后一级寄存器每次锁存的数据应该是前一级寄存器 上一个时钟周期锁存过的数据。基于此,我们来讨论建立时间,即setup relationship时,源 寄存器为lauch clock,目的寄存器为latch clock,而lauch edge从时间上看就要比latch edge 早一个时钟周期,即他们之间通常是相差一个时钟周期的关系。反观保持时间则不然,即 hold relationship实际上是同一个edge,也就是说后一级寄存器的保持时间很可能遭到上一 级寄存器同一个时钟周期所传输数据的违犯。我们的hold relationship就是为了防备这种情 况的,因此launch edge和latch edge实际上是同一个时钟沿,那么他们的关系通常只是Tc2t (源时钟传输到源寄存器的时间)和Tc2r(源时钟传输的目的寄存器的时间)的时间差。Setup relationshipLaunch ClockHold r&FarionshipLatch Clock因此,如图所示,理想情况下,抛开什么时钟的抖动以及其他不确定时间,我们可以得到reg2reg传输的建立时间和保持时间余量(slack)计算公式:建立时间Setup time slack = Data Required Time - Data Arrival TimeData Arrival Time = Launch Edge + Tc2t + Tco + Tr2rData Required Time = Latch Edge + Tc2r - Tsu保持时间Hold time slack = Data Arrival Time - Data Required TimeData Arrival Time = Launch Edge + Tc2t + Tco + Tr2rData Required Time = Latch Edge + Tc2r + ThFPGA接着,我们要来实际应用这些理论,看看实际工程中如何对这些错综复杂的关系进行 分析和处理。如图所示,我们这个例程的分频计数实验中使用了一个时钟信号clk,每一次 计数都是基于这个时钟的上升沿。A module exO(clkrst n,led5 L );7| input u J. k:7 FPGA外部引入的25MHz时钟input rst_n; output led;10reg2: ent;12always (posedge clk or negedge rst_n)if(1rst_n) ent <= 24 1 d0;else ent <= cnt+11b;16assign led = ent 1:;1819endmodule这个时钟哪里来?它的时钟频率如何确定?拍脑袋随便设?非也,咱做事一定要有依 有据。如图所示,我们的SF-CY3板载了一颗25MHz的有源晶振,通过管脚分配,我们便将 这个时钟引入了设计中。因此,我们这个设计的时钟便要约束为25MHz,即40ns的时钟周 期。25MH丑的晶振连接FPGA的专用时钟输入管脚好,下面我们就动手为这个实例添加时序约束。如图所示,我们点击工具栏的一个闹钟模样 的图标便可打开Quartus II内嵌的时序设计TimeQuest,我们接下来的时钟约束设置便是在 该工具中完成的。TimeQuest的主界面如图所示,首先需要新建一个sdc文件,然后在该文件中输入时钟约束 脚本,或者使用GUI进行约束设置更新到sdc文件中。点击菜单栏NetlistaCreate Timing Netlisk,弹出的菜单中使用默认设置,点击OK便可。 接着进行时钟约束,点击菜单栏ConstraintsaCreate Clock。Clock name是我们随便给约束的 信号起的名字,没有特别限制;Period为时钟周期,我们的时钟晶振是25MHz的,即40ns; Targets选择实际被约束的时钟管脚,点击改行最后面的按钮可以选择相应的管脚信号;SDC command无须设置,自动根据前面的设置生成,Waveform edges也无须设置,我们采用默 认设置,即0ns时钟上升,20ns下降。点击Run完成约束设置。接下来,我们要依次点击主界面右下方task栏里的Update Timing Netlist和Write SDC File选 项,弹出的Write SDC File窗口如图所示,我们更改SDC file name为ex0.sdc,接着点击OK。此时,我们可以在工程目录下找到一个ex0.sdc的文件,并且这个文件里面有一条这样 的时钟约束语句:create_clock -name SYS_CLK -period 40.000 -waveform 0.000 20.000 get_ports clk。这便是我们前面所添加的约束。接着回到Quartus II,重新对工程进行编译。接着再进入TimeQuest,点击Report下的 Report All Core Timings。TasksOpen Project.J Netlist SetupA Create Timing NetlistA Read 5DC FileA Update Timing NetlistReset Design 5et Operating Conditions._J_J_J_J_I_JJ Reports5lackDatasheetDevice SpecificDiagnosticCustom ReportsMacros 司 Report All Summaries 司 Report Top Failing Paths 蜀 Report All I/O TimingsReport All Core Timings司 Create All Clock Histograms Write SDC File.在Report窗口中,出现了 Report Timing(Core)一栏,下拉后,我们便可以看到SYS_CLK 时钟的Setup和Hold路径的分析。先点击Setup 一栏,我们看到右侧齐刷刷的把所有的路 径都罗列了一通。这便是SYS_CLK时钟的所有相关Setup路径分析情况,打头第1条是Slack 最差的情况,喔,居然还有36ns多,可谓余量“富得流油”。«4lK4*O.LrtiW.WXJ呻门 呻】 Zzi7】5t5JX*rtjOwMjtu也gsnjjrErjflt.woW3JCLCWSjOKW.W0r*faIEr4?i3P Tr*<i*s( TrojMibwSuwMFV? a A |.,._1 破 *L4# J ¥*000(1 TiV4!(-C«r«!i白伊<to如iua:E * 5 Q>* *W E_E5Y5 OKA L '<IME*g 塑I阈囱 g】 N浏 E(路 «*(御再看Hold路径,如图所示,Slack最差的只有0.464ns,正应了前面所说的,Hold和Setup 是一对“鱼和熊掌”,或者更形象一点,那叫做“跷跷板的两端”。二者平衡当然是最佳状态, 可惜很多时候咱说得不算,大趋势咱改变不了,顶多小范围微调。不过,不用担心,有正余 量就OK 了,说明设计本身的时序是不存在隐患的。w A yuktR40tft« invt lAab呻EnM>* L«rchCh4j _j顷 0»OckMti4!C? c±k>wci-swclen.a.o-0.0-0.o.O.DDL呻时砂JU典】h nbEtui *3_QE呻M5«皿4yu 'F_jimisrijacDjH»<争#UfijaoaEmjiK(SrtJWtM(B<EJ1KAJWiSfljcuoxmcdto.d-CLd-CL- I w rr- 4 $ 古J RM JJ 1 1- 1 JJ -ETS CLKSrenCL>汕+P3_CW河/j5iS_Cu呻 5Jrt_Cu呻曲SfS.CLi.呻号Em好,看完宏观局势,我们再来瞄一眼微观情况。如图所示,这是一条setup路径的详 细分析。回头可以对照前面给过的公式,把这个路径里面的各个参数对应一代,还真那么回 事哦。不过有一点笔者也深感困惑,就是那个uTsu,公式里明明是“-”,而分析中却变成了 “ + ”。公式从理论上讲是肯定不会错,所以为了 “套”一下公式我们只能吧正分解为“夫妇” (负+负)了。之说以这么推测,从笔者接触Quartus II开始,大概7到现在的13,这个地 方的TimeQuest分析好像一直没有“纠正”过,那么我觉得Altera这么个大厂也不至于老犯 这么低级的错误吧,所以,这里面一定“暗藏玄机”。个人猜想,还未官方求证。待我发个 邮件有回复了再分享给大家。Data Arrival Time = Launch Edge + Tc2t + Tco + Tc2r=0 + 2.733 + 0.261 + (0.858-0.261)Data Required Time = Latch Edge + Tc2r- Tsu=40 + 2.651 - (-0.021)Setup time slack = Data Required Time - Data Arrival Time = 42.672 - 3.591 = 39.081nsT4-hi£dBCk4.9wwii bickiwjaitmw*7 例1拙th .北hLMdb An 悔日 PdOiTodn s'uhrhHFfilTM j.m富J .lie IJ七!3J.土 EATc21ei4»tWHm尚r少T乱IWOOMM CELL 2FFJI.YiOJligDIM拖a性,航cm北 CEliLLKg心i-ireeL ih*.一 TrSracmK1.Ml血项'a瑚4.151CELL1.FFJSJII血口 Im再看Hold路径的详细分析,也是对照前面的公式,我们可以一一对应。通过这种实际 分析,希望能够加深大家的理解,尤其是时序分析工具和理论之间的对照关系。Data Arrival Time = Launch Edge + Tc2t + Tco + Tr2r=0 + 2.636 + 0.261 + (0.758-0.261)Data Required Time = Latch Edge + Tc2r + Th=0 + 2.718 + 0.212Hold time slack = Data Arrival Time - Data Required Time = 3.394 - 2.930 = 0.464nsT心rT虹z.Mr.TymQuGwaUMB咬虹1我J 1 »+47M5J-W? Ml iMWIF Eo* 11W. 2丁础e4。加不叩K|&+iimCEU1vii3imM1CL迎M.4UHnCELLIFFjst jiojn

    注意事项

    本文(入门资料:FPGA时序分析基础与时钟约束实例资料.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开