FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇

FPGA时序分析工具上手

今天课程主体:完成时序分析和约束的基本流程,认识用到的工具和软件。

1.利用Quartus II 查看运行最高频率

  • 对于一个代码,问:
    • 这个代码能够运行在多高的时钟频率。
    • 这个代码所描述的逻辑电路最高运行在多少频率的时钟
    • 这个代码所描述的逻辑电路在Cyclone IV E(65nm) 这个系列器件上能最高运行在多少频率的时钟
    • 这个代码所描述的逻辑电路在Cyclone IV E的EP4CE10F17C8(65nm) 这个器件上能最高运行在多少频率的时钟?
  • 可有时序分析软件告知答案(问题以最后一个为标准) TimeQuest Timing Analyzer

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第1张图片

图1 TimeQuest时序分析工具
  • 时序分析一定是基于某个逻辑设计特定器件(该器件需要具体到一个特定型号的特定速度等级)上经过布局布线之后的网表(该网表包含了设计中每一个逻辑具体在该器件的什么资源上实现,而且还包括该资源在器件内的具体位置,还包含信号从每个节点传输到下一个节点的具体延迟时间)
  • 时序分析不是对代码进行分析,而是对真实的门级传输路径进行分析

  再由目的寄存器能够正确的接收源寄存器发射过来的数据条件:Slack = Tclk + Tskew - Tsu - Tco - Tdata >= 0可知,当数据传输时间不变时,Tclk越小,即*时钟频率越高,时钟周期就越小,则Slack越容易接近零,甚至小于零。总存在一个零界点使得Slack等于零。此时对应的Tclk就是最高频率

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第2张图片

图2 时序分析最高频率

  Clocks: 这一项是显示当前的设计中有哪些时钟。由图二右侧界面可知,此例中时钟约束频率为1GHZ(但是实际你可能只会给他50MHZ,这是软件报告的设计中的时钟信号的约束频率),则是因为如果用户没有对时钟信号加约束,软件就会自动和对分析出的是时钟信号加约束,这个约束会按照最大的可能来约束(应该就是最大时钟频率),也就是设置时钟频率为1GHZ。会用1GHZ来对此例中的逻辑电路进行分析。

2.三种时序模型

  • 由图二左侧中时序分析的列表还可知:
    • Slow 1200mV 85C Model:芯片内核供电电压1200mV,工作温度85度情况下的慢速传输模型。
    • Slow 1200mV 0C Model:芯片内核供电电压1200mV,工作温度0度情况下的慢速传输模型。
    • Fast 1200mV 0C Model:芯片内核供电电压1200mV,工作温度0度情况下的快速传输模型。
  • 传输指的是数据传输速率,比如Tdata,Tco。所以高速传输时序更好(但是当传输速度变快是,这时候就要考虑另一个问题——保持时间余量)。

2.1 Slow 1200mV 85C Model

  当分析建立时间余量的时候,使用Slow 1200mV 85C Model模型来分析。

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第3张图片

图3 第一种时序模型

  由图3右侧结果可知,Fmax=242.42MHZ。这说明这个代码所描述的逻辑电路在Cyclone IV E EP4CE10F17C8(65nm) 这个器件以及芯片内核供电电压1200mV,工作温度85度情况下的慢速传输模型下能最高运行的时钟为242.42MHZ。这说明如果我们实际输入时钟频率为50MHZ,在这种情况下,输入时钟频率是满足条件的。

  但是!软件并不知道我们实际的输入时钟(如果你没给软件约束),它会认为实际输入的时钟频率为Clocks中约束的频率1GHZ。所以它认为这种情况下不满足时钟输入条件,1GHZ>Fmax=242.42MMHZ,因此这一项报错(变红)。

那么软件是如何判断此情况下的最高时钟频率呢???

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第4张图片

图4 路径分析

  先看图4,途中共有4条寄存器路径。分析设计的时序路径的时候,一般是以寄存器到寄存器分析的,不跨寄存器分析。不然图中应有5条寄存器路径。再从四条路经中选出最长的路径,假设是从上到下的第二条,那么这条路径在途中这个逻辑电路中,就是属于最坏路径。因为它Tdata最长,最容易坏事,导致Slack不足。

2.1.1 最坏路径

  软件计算最高时钟频率的时候,是根据最坏路径的建立时间余量来计算的。
FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第5张图片

图5 最坏时序路径分析

  点击图5界面左侧的Worst—Case Timing Paths(最坏时序路径),由界面右侧可知,里面都是在此情况下,并且输入的时钟频率(软件认为他是1GHZ)的情况下,有这么多条会导师Slack小于零的情况,其中最坏路径就是第一条(红色矩形框框住的),这就是此模型情况下的最坏路径。软件也正是根据这条路径才算出了此情况下Fmax的值(此时最坏路径也能刚好满足数据传输条件Slack=0)。

2.1.2 时钟约束

但是因为实际输入时钟可能只有50MHZ,现在软件却用1GHZ来分析,分析的结果也没啥意义。那我们就希望软件用输入频率50MHZ来分析,这该怎么办?这时候就需要用到时钟约束了

  1. 首先打开Tools栏中的TimeQuest Timing Analyzer。即打开TTA软件。

  2. 创建时序网表,Tasks 中的Create Timing Netlist 按钮。

  3. 读取SDC文件。Synopsys Design Constrains File

  4. 可以看报告,如图6所示。也可以加入约束。

  5. 加入时钟约束,点击上栏中“Constraints”中的“create Clock”,结果如图7所示。只是为了告知软件输入频率值,软件再用这个值软件去做时序分析,但是我们实际输入不受限制。图7中各名称介绍

    • Clock name : 被创建约束的时钟代号
    • Period:时钟信号的周期,如50MHZ,对应20ns
    • Rising:时钟上升沿起点时间
    • Falling:时钟下降沿起点时间,空白默认百分之五十占空比
    • Targets:这个代号时钟对应的实际逻辑电路中那个具体时钟,点击右侧…进行选择,如图8所示。
  6. 对于系统已经约束了的时钟,比如CLK50M,系统自动约束到了1GHZ,此时我们自己再执行第5步是执行不通的,此时钟的约束不会按照我们的约束变化,这时候就直接对CLK50M信号进行改动l,右键Base,如图9所示。结果如图10所示。注意,图10中不能修改Clock name的名称,否则此次修改仍然无效。

    注意,每在TTA中执行一个操作后,都需要留意console窗口中的报告,看此次操作是否执行成功

  7. 所有的约束操作完成后,需要执行写SDC文件的操作,这个操作会生成包含所有约束的SDC文件。即双击“Write SDC File ”如图11所示。SDC文件内部如图12所示。红色方框内代表创建了一个代号为CLk50M的约束时钟,周期为20ns,上升沿从0ns开始,下降沿从10ns开始,占空比也就是百分之五十,映射的实际逻辑代码端口为CLK50M。

  8. 加入约束时钟后的模型分析结果如图13所示。

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第6张图片

图6 使用TTA查看报告

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第7张图片

图7 创建时钟约束

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第8张图片

图8 Target映射

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第9张图片

图9 右击Base

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第10张图片

图10 直接修改界面
![在这里插入图片描述](https://img-blog.csdnimg.cn/ff1cb3e1f9e1456a97b34f7785f6daf8.png#pic_center)

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第11张图片

图11 写SDC文件

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第12张图片

图12 SDC文件内部

FPGA时序约束之Quarters_TimeQuest Timing Analyzer 初篇_第13张图片

图13加入约束后的结果

  Fmax = 199.88HZ,相比图3中的结果,此优化的最高频率降低了。说明EDA软件仅会根据约束需求去布局布线以达到约束要求,但是每次不会以最优的情况去编译。主要是因为全局资源有限,在满足约束条件下,需要空出资源给别的逻辑电路满足约束条件,见《FPGA时序约束与分析》1.2节

  所以在设计中一定要最起码加入合理的时钟约束。否则若有部分资源过约束(可能是FPGA自动约束或你自己约束的,花费了大量资源,实际可以不必),那么可能导致你本来应该实际输入50MHZ的时钟,但是由于资源不够,它的最高频率只能为48MHZ,这样就不满足实际条件,特别是在逻辑比较复杂情况下。而如果你进行合理约束的话,FPGA就能空出更多资源给此时钟布局布线,或许就能满足此条件。

  • 约束的作用:
    • 指导EDA软件对设计的布局布线进行合理优化以尽量满足约束需求。(否则FPGA将会根据逻辑电路图随意的布局布线(如FPGA三要素中,内部互联线将各个可编程逻辑器件连接起来)
    • 给时序分析工具提供一个分析时序的参考。

你可能感兴趣的:(小梅哥FPGA时序约束与分析,fpga开发)