当前课程知识点:IC设计与方法 > 6、Quartus工具 > g)Quartus综合及分析(4) > Video
建立时间的分析
决定了器件的最高工作频率
或者说关键路径的最大的延时
保持时间的分析决定了
器件是不是能够正常工作
如果违反保持时间的约束的话
那么这个器件完全不能工作
左边这张图
左下角这张图是保持时间分析的一个原理
那么在分析原理之前
我们再说一下建立时间和保持时间分析的
实际工程原理
刚才我们已经总结了一下
如果建立时间为例的话
那么说明
这个我们设计的芯片没办法工作到预期的
指定工作频率
但如果我们把芯片的工作频率降D
比如说我们设计目标是100M
我们把它降到50M
降到40M
降到10M
哪怕10M赫兹
这个芯片可能就能够工作起来了
对于我们实际做完的芯片
实际做完的FPA
或者可编程器件的设计
也是一样的道理
我们刚做完一个系统以后
发现它在100M的工作频率上工作不正常
我们把频率降D
降到50M 10M
甚至降到1M赫兹
这个电路能够工作了
从这个现象来看
基本上可以确定是建立时间为例
但对于保持时间来说就是另一种现象了
如果设计的是保持时间为例的话
那么不管我们怎么改变
哪怕是降到1赫兹这个芯片仍然不会工作
所以对于保持时间的分析
非常的重要
一定要确保我们的设计保持时间不能违例
左下角这张图是保持时间工作的这个时序图
我们来看一下
电路结构还是一样的结构
那么对于保持时间呢
对于它的分析
我们可以从右边这张图分析
时序图来分析
可能更清楚一点
对于左边的这个元器分析
源寄存器在时钟到来的时候
在时钟沿到来的时候
那么它会经过一个clock_out的时间
然后再经过一个组合逻辑B的时间
经过一个clock_q的时间经过组合逻辑B的时间
把新的数据产生出来
送给目标寄存器
对应的时序图的这部分
经过一个clock_q+B的时间产生新的数据
我们建立时间的分析目的是保证这段新的数据
能够在规定的时间内到达目标寄存器
那对于保存时间分析呢
要求的是这段时间
也就是说
刚才说了
经过clock_q加上B的这个时间以后
新的数据就会产生
那么在新的数据产生之前
这段时间
原来的数据
那么对于我们目标寄存器有一个保持时间的要求
也就是说在时钟沿到来之前和到来之后
到来之前是建立时间的要求
到来之后的话
应该说这一段期间内
要求数据保持不变
这是对原来的要求
如果说当我们的clock_q特别快
然后B的延时也特别小
就意味着这个数据变化会往前挪
那么如果太快的话
也就是说源寄存器里边保存的这个数据
还没有在目标寄存器的保持时间要求范围内
与上一次的数据发生变化的话
那么电路就没办法稳定工作了
所以对于保持时间要求就是说tco+B的时间不能太短
原则以上不能太短
必须要有一定的时间让这段时间超过th
那么这是一个
我们说的理想情况
理想情况这个时钟沿
目标寄存器的时钟沿跟原始时钟沿是对齐的
更恶劣的情况就是目标寄存器的
时钟沿稍微滞后了一点时间
也就是说
C这个原寄存器的这根线比较短
目标寄存器的这个线比较长
最恶劣的情况下
这个时钟沿往后挪了
本来这个目标寄存器可能只有一个比较小的时间
但加上这个时间以后
整个th时间的范围就变大
所以如果总结到公式上来说
对于保持时间的约束公试要求就是
TCO加上B要大于B减C加上TH
这就是保持时间的要求
我们在分析报告里面
同样可以去看quartus工具对保持时间分析的结果
我们在左边时序分析的结果里面
选择保持时间
然后这边
就可以在状态窗口里边列出保持时间分析的结果
我们可以看到在这个分析结果里边
所有的分析都是红的
红的就表示error
就是说
我们这个设计保持时间是为例的
那么在这里面呢
直接就可以看到出错的原因
它没有给出具体的细节
出错的原因就是clock skew比这个data delay还要大
我们回到上一节看一下
正常工作的时候
clock skew就是时钟抖动一定要小于TCU加B
在这张原始图里边
E-C一定要小于TCO+B
才可能工作
在刚才这个设计里面呢
clock skew已经大于了TCO+B
根本就不可能工作了
所以这里面整个保持分析的结果就是特别错的
我们可以打开以后看一下细节
那么在这里面我们看一下
第一部分报告的是最大的时钟抖动
是1.018纳秒
那么最大的时钟抖动是什么呢
是指的它考虑静态时序分析
考虑的是最恶劣的情况
什么是最恶劣的情况
也就是E路径最长 C路径最短
E路径最长代表的是最长的
时钟路径到目标寄存器的时钟路径是最长
C路径最短表示的是到原寄存器的路径最短
最短路径
第一个是3.5纳秒
一个是2.5纳秒
那么它们之差是1.018纳秒
也就是时钟抖动大概在1纳秒这个量级
那么我们再看一下其它的几个参数
TCO是多少
clock_q是0.099
这个1.018已经大于0.099了
所以这个电路根本就不可能稳定的工作
这个里面还给出其它的信息
比如说这个寄存器到寄存器的delay是0.6
也就是路径B的延时是0.648
然后这个最短的路径延时是0.648
每个寄存器的hold time
可编程器件里的设计比较好
所以它本身对hold time要求就没有要求
但是由于时钟抖动带来了我们这个设计为例
换句话说
对于这样情况我们怎么办
我们寄希望说
在布局布线的时候
看看有没有可能对于这条关键路径
或者特别恶化的路径
去改变一下时钟抖动
让E减C能够小于这两个值相加
这样设计就可以稳定工作了
换个角度来说
我们这样的错误
不一定去修改原始的设计
通过修改布局布线的要求
这个有可能满足我们的设计需求
让原来不能工作的芯片
能够工作起来
最关键的建立时间和保持时间分析做完了以后
我们还应该再分析一下这个输入路径和输出路径
这些也需要满足时序的一些要求
我们来看一下输入路径的分析
由于输入路径和内部的路径一样
我们同样要去分析
建立时间和保持时间
这是输入路径的模型
输入路径的模型部分
我们认为芯片外部输入的
外部给出来的数据是给到通过一个组合逻辑电路
然后给到我们内部寄存器
我们这个内部寄存器有它自己的
建立时间和保持时间的要求
那么对于外部的输出电路
它送给我们的时候
把我们整个这一块电路
整个一整块电路
包括端口进来的组合逻辑电路
包括这个D触发器和这个时钟网络的延时
整个的一大块电路
会看成一个新的D触发器
对于外部的数据源而言
那么它会把我们整个一大部分
看成是一个D触发器
所以我们要把这个虚拟的D触发器的
新的建立时间和保持时间给它计算出来
我们先来看一下建立时间
原来的这个D触发器
那么它要求在时钟的有效沿到来的时候
在TSU这个D触发器之前
这个数据是稳定的
那么现在由于这块组合逻辑电路
那么会带来一定延时
所以相当于TSU变大了
也就是说虚拟的这个D触发器的TSU是什么呢
是组合路径的延时
加上我们原来的建立时间
整个这一条延时加起来
这段时间就必须是稳定的
这就是由于我们这样一个电路结构
对外部电路它给我们数据的时候一个新的要求
就是TSU
数据路径
加上内部的TSU
那么我们在考虑时钟路径的这个影响
那么这不是一个理想时钟
而是时钟上也会有延时
相当于我们的这个D触发器它的
时钟沿被往后滞后了
那么往后滞后是一件好事
对吧
往后滞后对于数据路径来说
可以再慢一点送出来
所以时钟的delay带来的是好处
把这个时钟考虑进去以后
整个新的TSU就是data delay
这块组合逻辑电路的
数据延时减掉这个输入时钟线的延时
然后再加上内部触发器的延时
建立时间
那么对于保持时间的分析
对于这块电路的保持时间分析
那么跟刚才的建立时间是一样的
本身D触发器有一个保持时间的要求
那么由于这个数据路径的延时
数据路径的延时
带来的是恶劣的影响
数据路径会在数据上增加额外的延时
那么使原来的保持时间所要求就减小了
如果时钟延时改善的话
时钟延时会对保持时间会有一个改善
所以的话呢
在保持时间分析的时候
这个数据延时
在建立时间分析是数据延时减时钟延时
保持时间分析的时候
是时钟延时减掉数据延时
再加上内部的原来的保持时间
就是新的保持时间的结果了
我们再来看一下输出路径分析的
这个原理或者公式
那么假如我们电路的输出结构是这么一个结构
有一个D触发器
它的输出经过一个输出的组合逻辑电路
然后再送到输出端
那么我们可以看到
相对于这个D触发器而言
相对于这个D触发器而言
实际的数据输出相当于是原来的TCO
加上一个data delay
才真正的输出
也就是整个路径输出延时是这么长
如果我们把整个这一大块部分虚拟成一个新的
D触发器的话
那么它的新的D触发器的延时
内部延时加上数据延时
再看一下时钟线
在最快的情况下
时钟线会带来一个延时
也就是说
这个输出D触发器的时钟信号就比预期的
理想时钟信号到达要晚
那么时钟信号到达的晚
导致产生的数据信号更晚
对吧
所以整个新的TCU
时钟的延时加上内部D触发器的延时
加上输出组合逻辑电路的延时
这些总的延时是我们新的输出电路的延时
这样呢
就会算出在时钟沿到来之后
真正的我们的数据是要
经过这三者之和才能产生出来
那么对于后几个数据装置
那么它就按照这个数据来计算
在数据组合装置设计的时候
它应该留出多少余量
才能够让我们的整个系统正常的工作
我们下面再来看一下
对于输入和输出路径时序分析的一个结果
左边可以看到输入和输出路径结果有三条
TSU TCU和TH
TSU和TH对应的是输入路径
TCU对应的是输出路径
我们选择TSU建立时间
输入的路径建立时间看一下结果
跟前面的内部逻辑的这个方式是相类似的
软件会帮我们把所有的路径分析一遍
然后把最坏的情况放在最前边
我们看一下第一行
那么会显示出每一条路径建立的时间
大概是三个纳秒
然后这条路径是什么呢
也就是说从每一个
从哪一个输入输入管脚
我们说输入的路径都是一个pin到一个内部寄存器
所以从某个输入管脚到芯片内部的某一个寄存器
然后在这条路径它的时钟信号是相对哪个时钟信号
哪个时钟域
这个时钟域这条路径的情况下
它的建立时间是多少
我们可以看到
对于输入路径的建立时间
这种虚拟的D触发器的建立时间
要远大于内部的D触发器的建立时间
本身芯片内部的一个器件的建立时间
大概都是在0.1 0.2 0.3纳秒的量级
到了输入输出管脚以后
芯片的这个建立就变成了几个纳秒
那从这一点我们可以看到
如果我们想设计一个高性能电路的话
那么我们要尽可能把所有的数据传递路径
设计到芯片内部去
也就是说
我们的内核运算逻辑和数据保存部分
尽可能的用芯片内部的
这样呢
整体电路的性能就会很高
如果用到了芯片外部的SRAM的话
那整个芯片数据通路的性能就会大幅降D
因为io电路它的原始是非常大的
总结一下
我们这就讲完了时序分析的几个内容
包括芯片内部建立时间
芯片内部的时序分析
包括建立时间的分析和保持时间的分析
对于输入和输出路径
我们也涉及到输入路径的建立时间和保持间的分析
以及输出路径的建立时间
输出延时的分析
那么这些分析对于一个工程设计来说
非常非常重要
那么如果这些时序特性没法满足设计要求的话
一般来说我们没有必要再去做门集仿真了
必须要修改RTL级的设计
直到时序满足以后
我们才能够进入到后续的门级仿真这个过程
-软件下载说明
-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)--作业