设计那些事儿【静态时序分析】

本系列文章从秋招高频问题入手,深度剖析静态时序分析,如有错误之处,欢迎批评指正!

联系邮箱:zhangshaopu@ufl.edu

高频问题 1:STA 针对什么类型的电路?使用什么工具做 STA?

STA 针对的是同步电路,常见的工具是 Synopsys 公司的 PrimeTime

高频问题 2:建立时间和保持时间的概念

2.1 基本概念

建立时间 / setup time / Tsu

  • 触发器在时钟沿到来之前,其输入端信号必须保持稳定的时间

  • 换句话说:D 需要提前 CLK_EDGE 多长时间到来,D 的采集才不会出错

保持时间 / hold time / Thold

  • 触发器在时钟沿到来之后,其输入端信号必须保持稳定的时间

  • 换句话说:CLK_EDGE  到来后,D 还需要维持多长时间不变,才不会影响 Q

输出延时 / Tcq

  • CLK_EDGE 到来多久后,D 才能到达到 Q

2.2 建立时间的检查和修复

建立时间决定了该【触发器】与【前级逻辑】之间的 组合逻辑最大延迟

T_{\text{launch}} + T_{\text{c2q}} + T_{\text{dp}}{max} < T_{\text{capture}} + T_{\text{cycle}} - T_{\text{setup}}

如何修复建立时间违例?核心在于:调整上述公式中的变量,保持左侧小于右侧

Tlaunch 和 Tcapture

增大 Tcapture

减少 Tlaunch

方式一:通过 时钟树平衡 完成

方式二:在时钟路径上 插 buffer

Tc2q 和 Tsetup无法调整这部分的调整需要 更换工艺库
Tdp

优化组合逻辑

减少 Tdp

方式一:减少【逻辑门的数量】【调整逻辑结构】

方式二:使用【速度更快的单元】替换【速度较慢的单元】

Tcycle增大 Tcycle

不推荐降频,会降低电路整体的性能

2.3 保持时间的检查和修复

保持时间决定了该【触发器】之与【前级逻辑】之间的 组合逻辑最小延迟

T_{\text{launch}} + T_{\text{c2q}} + T_{\text{dp}}{min} > T_{\text{capture}}+ T_{\text{hold}}

如何修复保持时间违例?核心在于:调整上述公式中的变量,保持左侧大于右侧

Tlaunch 和 Tcapture

减少 Tcapture

增大 Tlaunch

方式一:通过 时钟树平衡 完成

方式二:在时钟路径上 插 buffer

Tc2q 和 Tsetup无法调整这部分的调整需要 更换工艺库
Tdp

优化组合逻辑

增大 Tdp

在组合路径上 插 buffer

使用这个方法一定要注意:不能让 setup time 因此违例!

高频问题 3:Recovery Time & Removal Time

3.1 Recovery Time

(类比 setup time)有效时钟沿来临之前,异步控制信号 释放后必须保持稳定的时间

如图所示:如果 rst_n 不满足 recovery time,可能导致 下个时钟沿 无法正确采样 rst_n 信号

3.2 Removal Time

(类比 hold time)有效时钟沿来临之后,异步控制信号 必须保持稳定的时间

如图所示:如果 rst_n 不满足 removal time,可能导致 本次时钟沿 无法正确采样 rst_n 信号

高频问题 4:时序路径有哪些?

起点/终点d pinoutput port
clk pin(最常见的一种)path 2path 3
input portpath 1path 4

高频问题 5:多周期路径、半周期路径、伪路径?

5.1 多周期路径 Multi-Cycle-Path

默认情况 下,综合工具会把每条路径定义为 单周期路径,即在 源 DFF 的时钟沿 launch 的数据都应该在 目的 DFF 的下一时钟沿 capture。

但有的设计会存在例外:数据【从起点到终点的传输时间】需要【一个时钟周期以上】才能稳定的路径,这类路径被称为多周期路径

解决方案方案特点
插入 buffer 使得组合逻辑打散频率快吞吐量大,但是 增加了面积和功耗

设置 multi-cycle path 约束

在 STA 中指定若干个时钟周期后的上升沿去 capture 数据

允许复杂的逻辑(如乘法、除法或其他复杂的组合逻辑运算)多周期实现,减少时钟频率的要求适用于低功耗设计

牺牲了吞吐量

在设置了多周期约束后,核心问题在于:如何检查建立时间和保持时间?

建立时间的检查较为简单:假设多周期数量为 X,setup time 检查的时钟沿是 在 launch 时钟沿的 X 个周期之后

但是保持时间的检查就复杂了,因为按照单周期的做法,hold time 的检查时钟沿是 setup time 的前一个时钟沿,以下图为例,那么 hold time 的检查时钟沿是 2nd edge

这样就要求数据需要保持到 2nd edge 之后才能变化,这显然是不现实的,因此 hold time 的检查时钟沿需要提前到 launch 时钟沿,以下图为例,那么 hold time 的检查时钟沿是最左侧的沿

5.2 半周期路径 Half-Cycle-Path

如果在设计中,同时存在上升沿触发的 DFF,以及下降沿触发的 DFF,则设计中大概率存在半周期路径

如图所示:UFF 5 是下降沿触发,UFF 3 是上升沿触发

在设置了半周期约束后,还是这个核心问题:如何检查建立时间和保持时间?

时序路径中仅有 半个时钟周期 来进行建立时间检查,因此:建立时间检查更加严苛

时序路径中有 额外的半个时钟周期 来进行保持时间检查,因此:保持时间检查更加宽松

5.3 伪路径 False-Path

当电路运行的时候,某些时序路径并不会被激活,这些路径被定义为伪路径

这些路径 不需要满足特定的时序约束;因此,设置伪路径可以让 STA 工具忽略这些路径,更专注于分析真实的时序路径,提高 STA 的效率;但是,设置过多的伪路径会降低分析的效率,反而使分析速度减慢。

类别描述例子
测试逻辑

用于测试和验证目的的逻辑部分

正常运行时不参与主要功能

JTAG调试模块

内建自测试(BIST)模块

静态逻辑在大部分时间内保持不变的逻辑状态使能信号、固定配置寄存器
准静态逻辑偶尔会改变,但在大多数操作时间内保持静止

配置或状态寄存器

(仅在系统启动或特定条件下更新)

跨时钟域信号涉及不同时钟域的信号路径通常涉及数据同步和缓冲机制

高频问题 6:STA 的工作状态?

STA 的工作状态和三个参数有关:制程(Process)电压(Voltage)温度(Temperature)

,它们合称 PVT。其中,每个参数包含三个典型值:

制程(process)slow / typical / fast
电压(Voltage)min / normal / max
温度(Temperature)

min / normal / max

参数的不同,对应于延迟的不同,如下图所示:

通过搭配参数,我们可以得到最常见的工作状态

ConditionProcessVoltageTemperature
WCS (Worst-case Slow)slowlowhigh
TYP (Typical)typicalnormalnormal
BCF (Best-case Fast)fasthighlow

在实际工作中,制程往往是保持不变的,因此:高温低电压Delay 最大,用于 分析 setup time低温高电压Delay 最小,用于 分析 hold time

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值