没有合适的资源?快使用搜索试试~ 我知道了~
好的时序约束可以指导布局布线工具进行权衡,获得最优的器件性能,使设计代码最大可能的反映设计者的设计意图。
资源推荐
资源详情
资源评论
一、为什么一定要搞定
时序分析在 ASIC 设计中的重要性毋须多说(我也不甚了解)。在 FPGA 设计中,很少
进行细致全面的时序约束和分析,Fmax 是最常见也往往是一个设计唯一的约束。这一方面
是由 FPGA 的特殊结构决定的,另一方面也是由于缺乏好用的工具造成的。好的时序约束可
以指导布局布线工具进行权衡,获得最优的器件性能,使设计代码最大可能的反映设计者的
设计意图。
花些功夫在静态时序分析上既可以保证设计质量,也可以促使设计者再认识自己的代
码。这后一点,对于我们这些逻辑设计初学者来说,尤为重要。从门级(在 Altera 的 FPGA
器件中是 LE 级)再认识自己的代码,可以更深入地体会语言的特点,也可以更深入地理解
综合工具对语言的处理,对于设计能力的提高帮助很大。
TimeQuest 是 Altera 在 6.0 版的软件中加入的具备 ASIC 设计风格的静态时序分析
(STA)工具。通过初步试用和观看网络教程,我感觉 TimeQuest 确实比 Timng Analyzer
功能强大一些,而且使用界面比较友好,易于进行深入的时序约束和结果分析。
TimeQuest 采用 Synopsys Design Constraints(SDC)文件格式作为时序约束输入,
不同于 Timing Analyzer 采用的 Quartus Settings File(QSF)约束文件。这正是 TimeQuest
的优点:采用行业通用的约束语言而不是专有语言,有利于设计约束从 FPGA 向 ASIC 设计流
程迁移;有利于创建更细致深入的约束条件。
二、时序分析基本概念
以下内容译自 Quartus II Version 10.0 Handbook, Volume 3:Verification 的
SectionII 7.3:Timing Analysis Overview 部分。
TimeQuest 需要读入布局布线后的网表才能进行时序分析。读入的网表是由以下一系列
的基本单元构成的:
1. Cells:Altera 器件中的基本结构单元(例如,查找表、寄存器、IO 单元、PLL、存
储器块等)。LE 可以看作是 Cell。
2. Pins:Cell 的输入输出端口。可以认为是 LE 的输入输出端口。注意:这里的 Pins
不包括器件的输入输出引脚,代之以输入引脚对应 LE 的输出端口和输出引脚对应 LE 的输入
端口。
3. Nets:同一个 Cell 中,从输入 Pin 到输出 Pin 经过的逻辑。特别注意:网表中连
接两个相邻 Cell 的连线不被看作 Net,被看作同一个点,等价于 Cell 的 Pin。还要注意:
虽然连接两个相邻 Cell 的连线不被看作 Net,但是这个连线还是有其物理意义的,等价于
Altera 器件中一段布线逻辑,会引入一定的延迟(IC,Inter-Cell)。
4. Ports:顶层逻辑的输入输出端口。对应已经分配的器件引脚。
5. Clocks:约束文件中指定的时钟类型的 Pin。不仅指时钟输入引脚。
6. Keepers:泛指 Port 和寄存器类型的 Cell。
7. Nodes:范围更大的一个概念,可能是上述几种类型的组合,还可能不能穷尽上述
几种类型。
下面这幅图给出了一个时序网表的示例,展示了基本单元中的一部分。
有了网表的 基本单元,我们就可以描述 TimeQuest 进行时序分析的对象:Edges。
Edges:Port-Pin,Pin-Pin,Pin-Port 的连接关系都是 Edges。注意,这里的 Pin-Pin
连接关系既包括 Cell 内部的连接(Net),也包括相邻 Cell 外部的 Pin-Pin 连接。
Edges 根据起止路径分为三类。
1. Clock paths:从 Clock Port 或内部生成的 clock Pin 到寄存器 Cell 的时钟输入
Pin。
2. Data paths:从输入 Port 到寄存器 Cell 的数据输入 Pin,或从寄存器 Cell 的数
据输出 Pin 到另一个寄存器 Cell 的数据输入 Pin。
3. Asynchronous paths:从输入 Port 到寄存器 Cell 的异步输入 Pin,或从寄存器
Cell 的数据输出 Pin 到另一个寄存器 Cell 的异步输入 Pin。
下面这幅图给出了三种不同的 Edges。
还要注意这样一组概念,这里的 edge 指的是时钟沿:
1. Launch Edge:前级寄存器发送数据对应的时钟沿,是时序分析的起点。
2. Latch Edge:后级寄存器捕获数据对应的时钟沿,是时序分析的终点。
下面这幅图给出了发送、捕获时钟沿的示意图。本例在 launch edge(0 ns)时寄存器
reg1 发送数据,在 latch(5 ns)时寄存器 reg2 捕获数据。
时序分析公式的基本公式:
内部寄存器到寄存器的路径(internal register-to-register paths)
(1)Data Arrival Time:Launch Edge + 前级寄存器 Clock path 的延时 + 前级寄存器
Cell 从时钟 Pin 到数据输出 Pin 的 Net 延时(uTco) + Data path 的延时。
(2)Data Required Time:Latch Edge + 后级寄存器 Clock path 的延时 (+ uTh)或(-
uTsu)。
(3)Clock Arrival Time:Latch Edge + 后级寄存器 Clock path 的延时。
(4)Clock Setup Slack = Data Required Time – Data Arrival Time
从外部输入引脚到内部寄存器(path from an input port to a internal register)
(1)Clock Setup Slack = Data Required Time – Data Arrival Time
(2)Data Arrival Time = Launch Edge + Clock Network Delay +Input Maximum Delay +
Pin-to-Register Delay
(3)Data Required Time = Latch Edge + Clock Network Delay to Destination Register
– μ tSU.
从内部寄存器到输出引脚(path from an internal register to an output port)
(1)Clock Setup Slack = Data Required Time – Data Arrival Time
(2)Data Arrival Time = Launch Edge + Clock Network Delay to Source Register +
μ tCO + Register-to-Pin Delay
(3)Data Required Time = Latch Edge + Clock Network Delay – Output Maximum Delay
of Pin
在下一篇分析建立时间和保持时间时,就必须用到上述三个概念。
三、时序分析基本公式
以下内容译自 Quartus II Version 7.0 Handbook, Volume 3:Verification 的 6-28:
Clock Analysis 部分。
TimeQuest 静态时序分析的对象包括:寄存器和寄存器之间的路径、I/O 之间、I/O 和
寄存器之间的路径、异步复位和寄存器之间的路径。TimeQuest 根据 Data Arrival Time 和
Data Required Time 计算出时序余量(Slack)。当时序余量为负值时,就发生了时序违规
(Timing Violation)。
需要特别指出的一点是:由于时序分析是针对时钟驱动的电路进行的,所以分析的对
象一定是“寄存器-寄存器”对。在分析涉及到 I/O 的时序关系对时,看似缺少一个寄存器
分析对象,构不成“寄存器-寄存器” 对,其实是穿过 FPGA 的 I/O 引脚,在 FPGA 外部虚拟
了一个寄存器作为分析对象。
一、 建立时间(Setup Time)检查:
剩余39页未读,继续阅读
资源评论
za1905
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功