基于TimeQuest Timing Analyzer的时序分析笔记(三)
本篇内容在前篇基础上介绍优化,并介绍基于chip planner查看更实际的逻辑连接。
上一篇是对时钟进行了设置,在时序优化时通常采用加约束或者修改代码插入寄存器方法,改为流水线结构;优化代码最主要方法就是优化关键路径。
首先声明:内容只是简单介绍时序优化中的方法流程,工具使用及查看时序报告,介绍层面没有深入,需要更多学习的还需多搜集资料加以研究。也可以观看小梅哥时序视频学习
下面来简单介绍
(一)优化介绍
对代码进行全编译,查看时序报告中Worst-Case Timing Paths中最差路径
右键locate定位到代码中,说明该部分代码需要优化
我们首先简单画出本部分代码所表示的逻辑电路
同时查看此时Fmax为326.58
接下来插入寄存器,因为寄存器与寄存器之间逻辑组合延时大,在此插入一级寄存器对hcount_ov信号进行时序处理
代码修改如下,把assign修改为时序逻辑,因为加了一级寄存器延时一拍输出,因此最大计数值减一。
保存,再次全编译,查看报告刚才的路径已解决,最高频率大概提升了6Mz左右。再次对此时的最差路径先定位到代码中位置
与刚才是同样的问题
代码修改同上,逻辑电路图如下所示,请结合代码理解
再次全编译之后如下图,此时根据我所接受的知识以下路径设计到计数器方面的优化,暂时力所不能及。
自此总结未优化时Fmax为320M,优化了hcount_r到vcount_r路径之后,频率提升到326M;再次优化vcount_r到vcount_r路径之后,频率提升到393M。因此通过插入寄存器方法可以对时序进行适当优化。
(二)查看实际逻辑通路
上一篇中我们看到的是waveform形式,我们看到其旁边就是data path选项,可以查看每一层级的通路。如下图所示,其中Incr为延时时间,Type为信号经过的路径类型(ic为连线,cell一般指经过的物理器件),Location为实际电路中所在的位置(可以通过chip planner查看,后续介绍)
下图为根据上图未进行优化的路径通路及各级延时信息所画,从中我们知道时钟部分会经过buffer和一个时钟控制器;同时注意寄存器部分比较特殊,输入输出端都会有一个延时,此处可能跟寄存器结构有关,在chip planner中查看如下所示,鼠标定位到路径之后,该路径颜色为黄色
(三)chip planner简单介绍
在此借公众号达尔文说其中一篇先简单介绍chip planner中结构
打开FPGA设计工程后,点击“Chip Planner”来查看这款FPGA芯片的版图模型。
打开后的版图模型如下所示,左边是未进行布局布线的图,因为资源未被使用所以都是浅色。右边是已经布局布线后的图,也就是已经将使用的资源映射到了版图模型上(只有全编译后才能看到映射效果),其中深色表示该资源已经被使用,而颜色越深的地方表示资源利用率越高。黑色区域为一些固定功能的资源或没有资源,用户不可对其进行任意配置。
(1)逻辑阵列块(Logic Array Block,LAB):每个LAB由16个LE(Logic Element)组成,下图是两个已经映射资源后的LAB,资源利用率不同的LAB其颜色深浅也有所差异(左边使用的资源少,颜色就浅;右边使用的资源多,颜色就深)。
放大后的LE如下图所示,每个LE主要由左边一个蓝色的查找表和右边一个红色的寄存器组成。整个芯片中共有10320个LE。
双击其中一个LE可以观察到其大致的内部结构(内部结构只有被使用才能够双击打开查看),我们可以看到主要的两个部分,一是左边的4输入查找表,另一个是可编程寄存器,还包括:数据选择器、进位链等。查找表和多路选择器完成组合逻辑功能,寄存器完成时序逻辑功能。(蓝色高亮的部分是已经使用的资源,未高亮灰色的部分是未被使用的资源)。
这里的输入查找表类似于一个容量为16 bits 的 ROM(2^4 = 16)(工艺上是珍贵的 SRAM 资源),4表示地址输入位宽为4 bits,存储的内容作为输入对应的输出结果的逻辑运算,并在 FPGA 配置时载入。
上图红色①标注处为查找表:目前主流 FPGA 都采用了基于 SRAM 工艺的查找表结构。查找表本质上就是一个 RAM。当用户通过原理图或 HDL 语言描述了一个逻辑电路以后,FPGA 开发软件会自动计算逻辑电路的所有可能结果,列成一个真值表的形式,并把真值表(即输入对应的输出逻辑)事先写入RAM,这样每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。目前FPGA中多使用4输入的查找表,所以每一个查找表可以看成一个有4位地址线的RAM。
上图红色②标注处为寄存器:可以配置成多种工作方式,比如触发器或锁存器,同步复位或异步复位、复位高有效或低有效。
上图红色③标注处为进位链:超前进位加法器,方便加法器的实现,加快复杂加法的运算。
上图红色④标注处为数据选择器:数据选择器一般在 FPGA 配置后固定下来。
(2)互连线资源(Interconnect):布线资源连通 FPGA 内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA 芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为 4 类不同的类别:第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用于完成芯片 Bank 间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。下图中中蓝色高亮的连线为由LAB中的LE中的寄存器连接到IOE中的互连线。
(3)锁相环(Phase Lock Loop,PLL):锁相环路是一种反馈控制电路,简称锁相环。锁相环的特点是利用外部输入的参考信号控制环路内部振荡信号的频率和相位。因锁相环可以实现输出信号频率对输入信号频率的自动跟踪,所以锁相环通常用于闭环跟踪电路。锁相环在工作的过程中,当输出信号的频率与输入信号的频率相等时,输出电压与输入电压保持固定的相位差值,即输出电压与输入电压的相位被锁住,这就是锁相环名称的由来。该芯片一共有两个锁相环,一个在右上角处附近,一个在左下角附近。
PLL的参考时钟输入都是由专用时钟管脚上的晶振进来的,用于时钟的倍频、分频,以及相位、占空比调制。PLL出来的时钟都会连接到全局时钟网络上,如下图所示就是通过全局时钟网络扇出到每个寄存器上的时钟线,全局时钟网络保证时钟的质量,减小时钟偏斜(Skew)和抖动(Jitter)
其余相关配置请移步公众号内容https://mp.weixin.qq.com/s/Za2ieZ7DZ8f2iKGz2qORjg
(四)基于chip planner查看实际逻辑通路
在data path页面右击选择locate到chip planner
进入如下界面,最下方为路径的各项信息,Ctrl+滚轮可放大缩小区域
时钟路径
数据到达路径,此时可以看到未优化前路径跨LAB,自然延时就大了
优化后在同一个LAB内
实际每一步通路都可以仔细查看,基于此我们可以对代码在实际芯片内部通路可以有一个清晰的认识。
总结:chip planner
内部LUT有输入输出,D触发器也一样
内部连线长度不一样,延迟也不一样
LUT和DFF位于同一个LE内,可以降低走线延迟
总结:本篇暂时结束,主要内容还是在于对基本的方法介绍以及相关工具的查看了解,深入学习还需对应实际项目多练习。