🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
静态时序分析的简单定义如下:套用特定的时序模型,针对特定电路分析其是否违反设计者给定的时序限制。 以分析的方式区分,可分为基于路径和基于结点两种,我们采用基于路径的分析方式来说明。如图1所示,信号从A点及B点输入,经由4个逻辑闸组成的电路到达输出Y点。套用的时序模型标示在各逻辑闸上,对于所有输入端到输出端都可以找到相对应的延迟时间。而使用者给定的时序限制为: (1)信号A到达电路输入端的时刻为2(AT=2,AT为Arrival Time)。 (2)信号B到达电路输入端的时刻为5(AT=5)。 (3)信号必须在时间点10之前到达输出端 Y(RT=10,RT 为 Required Time)。 ![](https://img.kancloud.cn/7d/5c/7d5c0267b844f936e81e89e1f33b928d_600x216.png) 现在我们针对P1及P2两条路径来做分析。P1的起始点为A,信号到达时刻为2。经过第1个逻辑闸之后,由于此闸有2单位的延迟时间,所以信号到达此闸输出的时刻为4(2+2)。依此类推,信号经由P1到达输出Y的时刻为7(2+2+3)。在和上述第(3)项时序限制比对之后,我们可以得知对P1这个路径而言,时序是满足使用者要求的,能够正常工作。 ## **时序弧:** 1. 静态时序分析是基于timing arc数据的时序分析。 2. 时序弧是用来描述两个节点延时信息的数据,时序弧的信息分为连线延时和单元延时。 3. 连线延时是单元输出端口和删除网络负载之间的延时信息;单元延时是单元输入端口到输出端口的延时信息。因此一条完整路径的时序信息计算由连线延时和单元延时组成。 ![](https://img.kancloud.cn/37/af/37af5fd20600df009ee8f7298c6d383e_597x415.png) 1. 单元延时的时序弧分为基本时序弧和约束时序弧。 2. 基本时序弧包括组合时序弧、边沿时序弧、复位清零时序弧、三态使能时序弧等。 3. 约束时序弧包括建立时序弧、保持时序弧、 恢复时序弧、移除时序弧和脉冲时序弧/ 4. 组合时序弧根据单元功能逻辑的不同,分为3种: ![](https://img.kancloud.cn/92/a9/92a9e86abd2b53f03d03b50087e7c00c_644x126.png) Timing Arc 定义逻辑闸任两 个端点之间的时序关系,其种类有 Combinational Timing Arc(组合时序弧)、Setup Timing Arc(建立时序弧)、 Hold Timing Arc(保持时序弧)、Edge Timing Arc(边沿时序弧)、Preset and Clear Timing Arc(复位清零时序弧)、Recovery Timing Arc(恢复时序弧)、Removal Timing Arc(移除时序弧)、Three State Enable & Disable Timing Arc(三态使能时序弧)、Width Timing Arc。其中第 1、4、5、8 项定义时序延迟,其它各项则是定义时序检查。 ![](https://img.kancloud.cn/21/a3/21a3ca178796cce0875ddd51ad3ec3a6_711x289.png) Combinational Timing Arc 的Sense有三种,分别是**inverting**(或 negative unate),**non-inverting**(或 positive unate)以及**non-unate**。 当Timing Arc 相关之特定输出(下图Z)信号变化方向和特定输入(下图A)信号变化方向相反(如输入由0变1,输出由1变0),则此Timing Arc 为inverting sense。反之,输出输入信号变化方向一致的话,则此Timing Arc 为non-inverting sense。当特定输出无法由特定输入单独决定时,此Timing Arc 为non-unate。 ![](https://img.kancloud.cn/cb/76/cb762bff1c36824c819011e7dbf1a11b_524x252.png) **Setup Timing Arc**:定义时序组件(Sequential Cell,如Flip-Flop、Latch 等)所需的Setup Time,依据Clock上升或下降分为2类 ![](https://img.kancloud.cn/91/da/91dafe4ae64b52ada8672f3d9b29a78d_504x147.png) **Hold Timing Arc**:定义时序组件所需的 Hold Time,依据Clock 上升或下降分为2类 ![](https://img.kancloud.cn/f2/62/f262251db8d1b8c15b99c6923f25a732_433x142.png) **Edge Timing Arc**:定义时序组件Clock Active Edge 到数据输出的延迟时间,依据Clock上升或下降分为2类 ![](https://img.kancloud.cn/19/01/190157c2aceec2df2edaaef9e235c8be_472x134.png) **Preset and Clear Timing Arc**:定义时序组件清除信号(Preset或Clear发生后,数据被清除的速度,依据清除信号上升或下降及是Preset或Clear分为4类 这个Timing Arc 通常会被取消掉,因为它会造成信号路径产生回路,这对STA而言是不允许的 ![](https://img.kancloud.cn/ef/d0/efd04a2a985266ae4f99afe8e84b3fcd_485x173.png) **Recovery Timing Arc**:定义时序组件Clock Active Edge 之前,清除信号不准启动的时间,依据Clock上升或下降分为2类 ![](https://img.kancloud.cn/53/e9/53e951adb02ff3323e04f46d690c3cc9_440x152.png) **Removal Timing Arc**:定义序向组件Clock Active Edge 之后,清除信号不准启动的时间,依据Clock上升或下降分为2类 ![](https://img.kancloud.cn/5d/ea/5deab412c5aff8afe183cf520164911d_434x155.png) **Three State Enable & Disable Timing Arc**:定义 Tri-State 组件致能信号(Enable)到输出的延迟时间,依据Enable或Disable分为2类 ![](https://img.kancloud.cn/c6/5f/c65fbb2d2a22658d1a597d8dcc2b4369_451x136.png) **Width Timing Arc**:定义信号需维持稳定的最短时间,依据信号维持在0或1的位准分为2类 ![](https://img.kancloud.cn/1e/69/1e69f0bba1c3efa514d95bd860f60d0f_456x158.png) 操作环 境指的是制程(Process)、电压(Voltage)、温度(Temperature)三项因子。 这三项因子通常会被简称为 PVT,其对时序的影响可用下方线性方程式来描述。 其中 nom_process、nom_voltage 及 nom_temperature 会定义在标准组件库中, 代表建立时序表格时的操作环境 **静态时序分析技术**是一种穷尽分析方法,它提取整个电路的所有时序路径,通过计算信号沿在路径 上的延时传播找出违反时序约束的错误,主要是检查电路可以正常工作的最大频率、找到电路中的关键路 径、检查各个路径是否满足建立时间和保持时间等、计算各个节点的负载、找到电路中延时最长的连线等. 静态时序分析技术在功能上和性能上都有很大的优越性,所以现在已广泛应用于 VLSI 的时序验证。 时序路径指 的是设计中一个点(开始点)到另一个点(结束点)的序列,开始点一般是时钟端口、输入端口、或寄存器或锁 存器的数据输入引脚等,结束点一般是时钟、输出端口、或寄存器或锁存器的数据输入引脚等 时序例外是指由于某种原因不希望 PrimeTime 检查的路径. 比如,某些路径明显是伪路径,在正常工作 情况下是不可能会经过的;或者,为了加快分析的速度,有些路径我们不希望 PrimeTime 检查. 这些情况下, 我们可以通过设计时序例外来实现 ### 有三种方法可以用于定义时序例外: **set-false-path**:设置伪路径可以忽略在这些路径上进行关键路径、建立时间和保持时间等的检查. **set-case-analysis**:把某些端口或管脚设为常数,以使得某些路径不被检查. **set-disable-timing**;使得一些路径上的时序参数(timing arcs)无效,以达到不检查该路径的目的. 系统单芯片(SOC) 芯片(IC) 静态时序分析(Static Timing Analysis 简称 STA) STA 的简单定义如下:套用特定的时序模型(Timing Model),针对特定电路分析 其是否违反设计者给定的时序限制(Timing Constraint)。以分析的方式区分,可分 为 Path-Based 及 Block-Based 两种。 ## **Block-Based 的分析方式**。 此时时序信息(Timing Information)的储存 不再是以路径为单位,而是以电路节点(Node)为单位。由 Timing Constraint 我们仅 能得知 A 节点的 AT 为 2,B 节点的 AT 为 5 以及 Y 节点的 RT 为 10。Block-Based 的分析 方式会找出每个节点的 AT 和 RT,然后比对这两个数值。当 RT 的值大于 AT 时表示信号 比 Timing Constrain 中要求的时间还早到达,如此则 Timing 是满足的,反之则不满足。 ![](https://img.kancloud.cn/74/7c/747cbea9bc866504fd93b1bdad58d75b_751x287.png) ## Timing Constraints: Timing Constraint 为使用者所给定,用来检验设计电路时序的准则。其中 最重要的一项就是频率(Clock)的描述。对于一个同步电路而言,缓存器和缓 存器之间的路径延迟时间必须小于一个 Clock 周期(Period),也就是说,当我 们确认了 Clock 规格,所有缓存器间的路径的 Timing Constraint 就会自动给定 了。 ![](https://img.kancloud.cn/56/ad/56add86d93b3332c242f141997129539_563x213.png) Clock 规格包含波形、Latency 及 Uncertainty 的定义。波形定义一个 Clock 的周期及信号上升缘及下降缘的时间点。Latency 定义从 Clock 来源到序向组件 Clock 输入端的延迟时间。Uncertainty 则定义 Clock 信号到序向组件 Clock 输 入端可能早到或晚到的时间。 **正反器(Flip-Flop)** ### Path 根据起点及终点可以分为 4 种: 1. 由 Flip-Flop Clock 输入到 Flip-Flop 数据输入(图左上)。 2. 由主要输入(Primary Input,简称 PI)到 Flip-Flop 数据输入(图 右上)。 3. 由 Flip-Flop Clock 输入到主要输出(Primary Output,简称 PO)(图 左下)。 4. 由主要输入到主要输出(图右下)。 ![](https://img.kancloud.cn/69/94/6994555ef4793923f4520911671609ff_649x212.png) 我们会定义下列的 Boundary Condition: 1. Driving Cell:定义输入端点的推动能力(图十八)。 2. Input Transition Time:定义输入端点的转换时间(图十八)。 3. Output Capacitance Load:定义输出负载(图十八)。 4. Input Delay:输入端点相对于某个 Clock 领域的延迟时间。(图十九, Delayclk-Q + a) 5. Output Delay:自输出端点往外看相对于某个 Clock 领域的延迟时间。 (图十九,c) ![](https://img.kancloud.cn/ed/48/ed48a675cabb43dccdac46d0d995de97_602x404.png) 加上 Boundary Condition 后,只要 Clock 给定,所有 Path 的 Timing Constraint 就会自动给定。 由于每个 Path 都有 Timing Constraint,所以时序分析都能够进行。但在 某些情况下,有些 Path 的分析可能没有意义,因此妳会想忽略这些 Path 的分析。 或是有些 Path 分析的方式不一样,妳会想指定这些 Path 的分析方式。此时就要 设定一些 Timing Exception,如 False Path 和 Multi-cycle Path 等等来处理 非一般性的时序分析。 #### STA 的流程 ![](https://img.kancloud.cn/c2/f1/c2f15438298c267c0143a2aae6d7dd1e_659x387.png) ## Step-By-Step 的方式说明时序分析的方式 1. 首先找出所有 Timing Path,我们只列出具代表性的 3 条 Timing Path 来 加以说明。 ![](https://img.kancloud.cn/6e/75/6e753579920ba7486eeef60585e90272_611x301.png) 2. 假设输入 A 信号由 0 变 1,计算第 1 条 Path 终点信号到达的时间(Arrival Time 简称 AT)。 ![](https://img.kancloud.cn/df/2e/df2edfa562bcf551b4d6c30255ca20f6_619x323.png) 3. 假设输入 A 信号由 1 变 0,计算第 1 条 Path 终点 AT ![](https://img.kancloud.cn/4c/95/4c957fbb94931c3ae524e80c45f36f35_602x68.png) ![](https://img.kancloud.cn/d6/7c/d67c3005ce3af010af27797ae7fbc5e9_609x277.png) 4. 计算第 1 条 Path 终点的需求时间(Required Time,简称 RT) ![](https://img.kancloud.cn/8c/27/8c27f9c57cc2aa6b113d0ca0e08b0f09_669x323.png) 5. 假设输入 A 信号由 0 变 1,计算第 1 条 Path 终点的 Slack。Slack 等于 RT 和 AT 的差值,对于 Setup Time 验证来说等于 RT - AT,对于 Hold Time 验 证来说等于 AT - RT。在此 Setup Time 范例中,Slack 为正,表示信号实际 到达 Path 终点时间比必须到达的时间还早,因此 Timing 是满足的。 ![](https://img.kancloud.cn/b1/f5/b1f56249be109ff2e1115752bf73a897_594x59.png) ![](https://img.kancloud.cn/e3/73/e373366d6fa3320c14306cf888d42acd_588x221.png) 6. 假设输入 A 信号由 1 变 0,计算第 1 条Path 终点的 Slack。Slack 为正, 因此 Timing 是满足的。 ![](https://img.kancloud.cn/54/d4/54d41efb38594267417c8f986c911930_687x319.png) 7. 假设前级 Flip-Flop 的信号由 0 变 1,计算第 2 条 Path 终点的 AT ![](https://img.kancloud.cn/40/78/40782dbc8f387be0ae441398993f48b7_575x37.png) ![](https://img.kancloud.cn/17/88/17881566156bc6ae3f5faa912dcece8f_609x308.png) 8. 假设前级 Flip-Flop 的信号由 1 变 0,计算第 2 条 Path 终点的 AT。 ![](https://img.kancloud.cn/6e/a2/6ea2549a6d715da5a89da61950a0d1c8_612x348.png) 9. 计算第 2 条 Path 终点的 RT。 ![](https://img.kancloud.cn/b0/f3/b0f3fd0e5f527a9005c6b9c86eee24d2_606x50.png) ![](https://img.kancloud.cn/ba/32/ba32180ddf69a60770b619b8d9a5bfd7_607x248.png) 10. 假设前级 Flip-Flop 的信号由 0 变 1,计算第 2 条 Path 终点的 Slack。Slack 为负,因此 Timing 不满足。 ![](https://img.kancloud.cn/de/d9/ded9eb0858ea918079fd2707a244d47e_612x231.png) 11. 假设前级 Flip-Flop 的信号由 1 变 0,计算第 2 条 Path 终点的 Slack。Slack 为负,因此 Timing 不满足。 ![](https://img.kancloud.cn/3e/b1/3eb12a2983239c499346e5a65699bd5f_638x278.png) 12.假设前级 Flip-Flop 的信号由 0 变 1,计算第 3 条 Path 终点的 AT ![](https://img.kancloud.cn/d4/43/d4438f4e5277ae011677bd2e9863ea78_632x358.png) 13. 假设前级 Flip-Flop 的信号由 1 变 0,计算第 3 条 Path 终点的 AT ![](https://img.kancloud.cn/48/43/4843f4c8f5b5f5ccdd13ec72aa233c54_683x364.png) 14. 计算第 3 条 Path 终点的 RT ![](https://img.kancloud.cn/9a/65/9a6537ae664adfafb7adb371a55c4a61_623x343.png) 15. 假设前级 Flip-Flop 的信号由 0 变 1,计算第 3 条 Path 终点的 Slack。Slack 为负,因此 Timing 不满足 ![](https://img.kancloud.cn/83/ce/83ce2687b167d4df9ed7b957ecf341ef_682x232.png) 16. 假设前级 Flip-Flop 的信号由 1 变 0,计算第 3 条 Path 终点的 Slack。Slack 为负,因此 Timing 不满足。 ![](https://img.kancloud.cn/71/f6/71f6feae711b46a10734384a57ad518c_682x494.png) 综合上述分析结果,此电路的时序不符合规格,其 Critical Path 是 Path3, Slack 为-4。