当前课程知识点:IC设计与方法 > 6、Quartus工具 > f)Quartus综合及分析(3) > Video
下面我们来看最重要的时序分析部分
那么在设计流程里面
时序分析是不可忽略的一个过程
但也往往是被很多初学者忽略的过程
时序分析结果起什么作用呢
如果一个电路时序上出了建立时间的错误
那么电路有可能说工作的慢一点
如果时序的分析结果说
有保持时间的错误
那有可能会导致这个电路完全就不能工作
所以时序分析这个过程是非常重要的
时序分析大概有以下几个方面
首先Quartus这个软件
或者说在我们这门课里边
我们只介绍标准的最简单的这个单时钟的
时序分析
然后我们来看一下
怎么去进行时序的约束
包括全局的以及局部的这个约束
后面的话我们再去看一下时序分析的模型
首先我们来回顾一下时序分析的基础
静态时序分析的基本模型
我们来看一下这些幻灯片
下面这张电路的一个时序图
我们电路通常包括四种类型的时序电路
时序路径
电路的核心部分是从一个D触发器
或者说一组D触发器的输出
经过一系列的云图送到另一组D触发器的输入
这是第一类时序路径
那么它的起点是从原D触发器
SOURCE的D触发器时钟开始
经过原D触发器的输入端输出数据
经过一堆数据云图
送到目标D触发器的数据端
这是第一条时序路径
第二类时序路径是输入路径
从芯片的输入管腿经过一系列的云图
一系列的组合逻辑电路
送到芯片内部的D触发器
这是输入路径
相类似的
还有第三类路径
就是输出路径
芯片内部的D触发器
经过在时钟的上升沿把数据送到D触发器的
输出端
然后经过组合逻辑
送到芯片的输出端
对于输入路径和输出路径
我们外部的驱动电路
以及外部接受数据的这个电路
我们都认为它跟我们内部电路共用的
是同一个时钟
所以我们外部电路
是由一个D触发器来接收数据
外部电路是由一个D触发器
输出数据给我们
所以这三条路径
内部路径 输入路径及输出路径
都是由同一个时钟源来驱动的
这是这三个路径
另外还有一个组合逻辑
有些芯片存在一条组合逻辑路径的延时
输入信号经过一系列的组合逻辑电路
没有跟时钟有任何关系
直接就送到了芯片输出
这是组合逻辑路径
我们把这四类路径归纳起来
可以看出所有的路径时序分析的时候
它的起点一定都是来自于输入管脚
或者说来自于时钟端
所有的目标输出的这个管脚
目标点一定是输出端口
或者是这个时序期间的这个数据输入端
这是四类时序路径
我们的所有分析工具
也都是针对这四类路径来进行静态时序分析
那么具体有两种方法
静态时序分析
一种是这个自动化的方法
就是傻瓜似的
我们按一下这个编译按钮
所有的综合布局布线 时序分析这个工作
软件都会帮我们去全部做了
第二种方法是我们手动的
菜单里边的某些操作
也可以启动手动的这个时序分析
我们在大型的设计里边
我们会采用手动的方式来进行
那么既可以用菜单操作来进行时序分析
也可以用一些Tcl脚本的
这种来设置怎么去进行约束
以及到底做什么样的时序分析
那么根据分析的结果
我们还可以去做一些详细的设置
包括为了改进芯片的速度
改进芯片的时序性能
我们可以选用这个更高等级的芯片
来让这个芯片工作的时序性能更好
我们来看一下时序分析的结果
我们需要关注的时序分析的结果
那么在综合
或者说报告里边
在这个编译的报告里边
有专门的时序分析结果
大概有几大类
我们需要关注的
一个是这个
我们时序分析约束的设置
我们的设置是不是正确
对于简单的设计呢
因为刚才已经说了
简单的设计
单时钟的设计
软件会自动帮我们提取出时钟相关的信息
所以连设置我们都可以不用设它会帮我们做好
那么我们要看一下Summary
看一下我们芯片报告的总结
是不是满足要求
然后详细的报告大概分为这么几个方面
有这个
我们看幻灯片左边列出来的
一个是关于内部时钟率的分析
芯片的建立时间
和保持时间的这个报告
对于输入路径的建立时间和输入路径保持时间的报告
对于输出路径
通常我们只要看这个输出的TCU
这样的一个报告就可以了
对于组合路径
有一个TPD这样一个组合路径延时报告
主要有这么几个方面的报告
对于单时钟率
或者说标准的分析
那么软件可以自动来进行
在每次编译的时候
软件就自动进行了这个时序这个分析
那么对于单时钟域
或者说这个异步时钟域
如果这些异步时钟率都是完全独立的
一些异步时钟率的话
软件可以自动的帮我们时钟率提取出来
那么对于每个异步时钟率
它当作一个单时钟域来处理
这些工作都可以去自动进行
那么软件分析的话呢
包含刚才所说的这四大类
一个是内部时序逻辑
内部路径的一个分析
第二是输入路径的分析
第三个是输出路径的分析
我们来看一下内部的时序路径的这样模型
是我们刚才前面复习模型里面更准确的
一个表述
这是我们的原触发器
内部时序路径里边的两组触发器
原触发器及目标触发器
经过一个内部的组合逻辑路径B有一个延时
从芯片外部输入的信号
clock
经过路径C的延时
物理的任何连线都可以延时
我们需要把它准确的建模出来
对于输入的路径C
有一个C的延时
那么对于目标D触发器
那么它可能会经过一个路径E的延时
由于时钟信号连接到两组D触发器的路径不同
所以这两组路径的延时C和E也有可能不同
那么下面我们把整个的时序路径给它描述一遍
时钟上升沿到来以后
数据会经过一个clock_q的延时
输入数据会被打到J端
打到D触发器的输出端
然后经过一个路径B的延时
送到目标D触发器
目标D触发器在它的时钟沿往回倒推一个建立时间
目标D触发器要求在setup时间之前
这个数据就已经是稳定的
所以的话
整个时序路径的延时
我们可以看到
是一个Clock_q的延时
加上一个数据路径的延时TCU
加上一个数据路径的延时B
然后加上一个建立时间的延时TSU
这是标准的路径延时
整个这条路径的延时不能超过时钟周期
不能超过一个时钟周期
这是我们标准的电路描述
那么如果再进一步考虑到两条时钟路径的差
那么我们可以看
如果目标路径E等于原始的这个C的这个延时的话
我们可以看出这个东西近似是一个理想的时钟网络
所有的时钟沿到达这个时刻
到达这个时刻是相等的
所以的话呢
时钟抖动
我们说这个时钟之差
甚至叫一个时钟抖动
或者说clock_q
那么它就可以忽略不计
那么如果E的延时比C的延时大
也就是说明
这个同一个时钟信号到达目标的
这个时钟要晚一点
晚一点的效果呢
相当于是拉长了时钟周期
那么这时候的话呢
对于我们这个路径的延时
就有更大的余量了
可以让路径算的更慢一点
这是比较好的情况
最坏情况呢
worst case是什么情况呢
也就是说这条E的路径啊
比C的路径短
目标继存器的时钟要比预期的提前到来
那这时候就对我们B的约束
B的延时留出更小了
所以的话呢
这个地方的clock_q的描述就应该是一个E减C
如果E比C小的话
我们的时钟路径所允许的时间周期
就更短
这就是我们时钟周期的描述
是TCO加B加TICU
再扣掉一个时钟抖动
那么我们的芯片的最高工作频率
就是时钟周期的倒数
我们来看一下建立时间setup的
分析一个报告结果
软件可以给出详细的每一条路径
所谓的静态时序分析
就是要把网表里面的每一条路径都要去算一遍
计算完了以后呢
这些路径的信息是按照一个从大到小
这个方式给他列出来的
因为我们关注的
首先关注的是worst case
就是最长的那条路径
最坏的那个路径
那么我看一下
这个报告结果里面有这么多列
我们显示的是建立时间的这个报表
时序分析的建立时间的报表
第一列是延时
最长的关键路径大概是八个纳秒的延时
对应的倒数以后芯片的工作频率
大概是150M
125M赫兹左右
另外呢
还给出了这条延时路径的详细信息
是从哪个节点到哪个节点的这个延时路径
那么这里面呢
给出了原节点
目标节点的信息比较清楚
它会给出目标节点的详细的这个信息
包括是哪个设计层次
从顶层再往下一步一步的往下底层层次的
某个节点的某个管脚
详细的信息都可以给我们列出来
这样的话
我们可以进一步的分析
这条路径到底是我们设计里面的哪一条路径
然后我们怎么去对设计进行优化
我们下面来详细的看一下这条路径
那么在这张图里边
我们可以看到
我们的最坏路径是这么一个路径
我们可以用
相应的操作列出这条路径相关的详细信息
我们先在这个状态窗口里面去观测一下这条信息
这是我们列出来的关于这条路径的详细信息
我们左下角是刚才所看到的
时序分析的一个模型图
我们要对照这个模型图里面去看一下CEB
TCU
以及TICU都是什么信息
我们看一下
首先在第一行列出了我们这条路径的
这个最长的继存器到继存器之间的延时
也就是B里面的延时
大概是7.445纳秒之间
然后下面我们列出了最短的
从时钟的最短的时钟路径
对于E
我们关心的是最短的
然后对于
这是目标继存器
对于原继存器C来说
我们关心的是最长的longest时钟路径
是3.7
那么因为我们这里面芯片非常小
我们设计非常小
所以原路径和目标路径
它的延时几乎是相等的
所以的话时钟抖动为0
可以忽略不计
然后我们关心的是TCU和clock
TCU大概是0.384个纳秒
最终芯片的建立时间
D触发器的建立时间TCU是0.18个纳秒
所以在这条信息里边
可以给出详细的这些值
那么根据咱们的公式
把所有这些值加起来
然后也就是
路径的延时加起来就是我们这个芯片的
或者这条路径所决定出来的芯片最高工作频率
我们还可以把刚才的
B这条路径的更详细的信息全部列出来
列出B路径
把刚才前面的加号点开以后
可以把路径的详细信息都看出来
那么路径的延时呢
包含两部分延时
一个是互连线的延时
第一列是互连线的延时
第二部分是单元的这个延时
根据这两部分延时可以算出每一个元器件
这条时序路径B上的每一个元器件的
总延时是多少都可以看出来
另外的话还给出了这个元器件它的扇出系数
我们都知道
当一个器件的扇出越大的时候
它所对应的延时也就越大
对应的还有节点相关信息
它的目标节点
它的原节点及连接到下一个目标节点的名字
都可以列出来
我们可以去关注
就像我们在S综合的时候
我们可以把这条路径在图形的方式全部给它
在图形的方式全部列出这条路径的情况
我们会看怎么去用图形的方式列出来
然后去观测
是因为穿越设计的层次太多了
还是说路径太长了
还是具体是什么情况
从而决定我们怎么去优化
最后一部分给出一个总的报告
在这条路径里边
互连线的延时是多少
总的互连线的延时
以及总的cell的延时是多少
然后给出相关的这个比例
那么这样的话
我们就可以看出这条关键路径B里边
是由于互连线太长了造成的延时太大了
还是说我们的逻辑太复杂了
造成的延时太大
给出这些信息以后
去进一步优化我们设计
我们可以用相关的菜单操作方式
用Technology viewer方式里边去显示出
我们这条路径
这是Technology viewer的用处
前面我们会讲
在这儿详细的去看一下
那么这里面我们给出了路径B的
worst case这条B路径的路径图
或者详细的结构图
我们可以看出
在这个路径里边它是经过一个什么样的
一条路径
经过了十多个单元
才从输入的D触发器传递到输出的D触发器
这个逻辑偏复杂
有一点复杂
然后我们在定位到具体的每一个元器件
我们可以看到这个元器件具体是什么信号
什么类型的元器件
以及这个元器件相应带来的延时是多少
从而通过这种方式我们可以去关注
这条关键路径是怎么产生的
我们就可以决定
如果说关键路径的长度太长的话
我们就应该采用适当的手段把关键路径打断
如果关键路径的逻辑太复杂的话
我们也要通过相应的逻辑优化的方式
采用更简单的逻辑去设计这条关键路径
-软件下载说明
-a) 集成电路的应用及市场
-a) 集成电路的应用及市场--作业
-b)集成电路的制造过程
-b)集成电路的制造过程--作业
-c)从CPU的发展看IC的进展
-c)从CPU的发展看IC的进展--作业
-d)从行业的发展看IC的进展
--Video
-d)从行业的发展看IC的进展--作业
-e)从ISSCC看IC的发展方向
--讲课视频
-e)从ISSCC看IC的发展方向--作业
-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)
--讲课视频
-a)数字系统的实现方法 (ASSP/FPGA/ASIC的对比)
-b)组合逻辑电路
--Video
-2、数字集成电路设计方法--b)组合逻辑电路
-c)时序逻辑电路(1)
-d)时序逻辑电路(2)
-2、数字集成电路设计方法--d)时序逻辑电路(2)
-a)Verilog的历史和学习要点
--讲课视频
-b)端口、信号及数据类型
--讲课视频
-b)端口、信号及数据类型--作业
-c)逻辑电平及数据操作
--讲课视频
-3、Verilog语法--c)逻辑电平及数据操作
-d)Assign 语句
-e)Assign 举例
-f)Always
-f)Always--作业
-g)阻塞与非阻塞赋值
--Video
-3、Verilog语法--g)阻塞与非阻塞赋值
-h)D触发器的描述
--Video
-i)时序电路的设计
--Video
-i)时序电路的设计--作业
-j) 面向测试的Verilog语法(1)
-k) 面向测试的Verilog语法(2)
-k) 面向测试的Verilog语法(2)--作业
-a)电路设计实例1
--Video
-b)电路设计实例2
--讲课视频
-b)电路设计实例2--作业
-c)电路设计实例3
--讲课视频
-Modelsim仿真
-a)综合及相关基本概念
--Video
-a)综合及相关基本概念--作业
-b)综合及优化
--Video
-c)门级仿真
--门级仿真
-d)Quartus综合及分析(1)
--讲课视频
-e)Quartus综合及分析(2)
--讲课视频
-e)Quartus综合及分析(2)--作业
-f)Quartus综合及分析(3)
--Video
-g)Quartus综合及分析(4)
--Video
-g)Quartus综合及分析(4)--作业