logo资料库

Timequest就一定要搞定完整版.pdf

第1页 / 共40页
第2页 / 共40页
第3页 / 共40页
第4页 / 共40页
第5页 / 共40页
第6页 / 共40页
第7页 / 共40页
第8页 / 共40页
资料共40页,剩余部分请下载后查看
一一一一、、、、为什么一定要搞定 为什么一定要搞定 为什么一定要搞定 为什么一定要搞定 时序分析在 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 registerrrr----totototo----register paths 内部寄存器到寄存器的路径((((internal registe 内部寄存器到寄存器的路径 register paths)))) register paths internal registe 内部寄存器到寄存器的路径 内部寄存器到寄存器的路径 internal registe 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 从外部输入引脚到内部寄存器 path from an input port to a internal register)))) path from an input port to a internal register 从外部输入引脚到内部寄存器 从外部输入引脚到内部寄存器 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. from an internal register to an output port path from 从内部寄存器到输出输出输出输出引脚引脚引脚引脚((((path 从内部寄存器到 an internal register to an output port)))) an internal register to an output port fromfrom path 从内部寄存器到 从内部寄存器到 path 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)检查:
遵循的原则是信号从 Launch edge 开始计时,经过一系列的时序路径,到达后级寄存 器的数据输入 Pin 的速度不能太慢,时间不能太长,否则会侵占后级寄存器数据输入 Pin 相对于 Latch edge 的建立时间。刚好满足后级寄存器建立时间的数据到达时间是 Data Required Time(相对于 Latch edge 计算),实际的数据到达时间是 Data Arrival Time(相 对于 Launch edge 计算)。显然,在建立时间检查中,Data Arrival Time 要小于 Data Required Time,否则就会造成建立时间违规。也就是说,Data Required Time 是 Data Arrival Time 的最大值。二者之差就是建立时间的时序余量。 1)寄存器-寄存器(Register-to-Register)路径检查: Clock Setup Slack = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay Source Register +μtco + Register-to-Register Delay Data Required Time = Clock Arrival Time – μtsu – Setup Uncertainty Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register 2)输入引脚-寄存器(Pin-to-Register)路径检查: Clock Setup Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + Input Maximum Delay of Pin + Pin-to-Register Delay Data Required Time = Clock Arrival Time – μtsu Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register 3) 寄存器-输出引脚(Register-to-Pin)路径检查:
Clock Setup Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = Launch Edge + Clock Network Delay to Source Register + μ tco + Register-to-Pin Delay Data Required Time = Clock Arrival Time – Output Maximum Delay of Pin Clock Arrival Time = Latch Edge + Clock Network Delay to Destination Register 从上面三组公式可以看出:Data Arrival Time 的前两项是相同的;Data Required Time 的第一项是相同的;Clock Arrival Time 的公式是相同的。 所以,第一组公式可以归纳如下: Clock Setup Slack Time = Data Required Time – Data Arrival Time Data Arrival Time = 时钟到达前级寄存器的时刻 + 前级寄存器时钟到后级寄存器数 据输入的延迟 Data Required Time = 时钟到达后级寄存器的时刻 – 后级寄存器的建立时间 其中,后两个公式的第二项在其他情况下适当修改即可。 这就和一些书中讲到时序分析时采用的公式一致了。
report_timing -from [get_registers reg1] -to [get_registers reg2] -setup -npaths 1 -panel_name "Report Timing" 二、 保持时间(Hold Time)检查: 遵循的原则是信号从 Launch edge 开始计时,经过一系列的时序路径,到达后级寄存 器的数据输入 Pin 的速度不能太快,时间不能太短,否则会侵占后级寄存器数据输入 Pin 相对于上一个 Latch edge 的保持时间。刚好满足后级寄存器保持时间的数据到达时间是 Data Required Time(相对于 Latch edge 计算),实际的数据到达时间是 Data Arrival Time (相对于 Launch edge 计算)。显然,在保持时间检查中,Data Arrival Time 要大于 Data Required Time,否则就会造成保持时间违规。也就是说,Data Required Time 是 Data Arrival Time 的最小值。二者之差就是保持时间的时序余量。
分享到:
收藏