拓冰建站拓冰建站
首页 / 资讯中心 / 正文

[第一章]入门:STA 到底在检查什么?

入门STA 到底在检查什么参考资料Static Timing Analysis for Nanometer Designs: A Practical Approach汉化版。关于作者一天三顿饭22 岁芯片实现工程师。如果你翻我的履历大概会觉得这人不太安分画过歌手专辑封面做过仿生人碰过脑机接口写过股票量化交易系统打过电赛搞过全栈开发给剧团设计过机器人。然后 22 岁这年跑来做了芯片。不是心血来潮。上面每一件事起因都是同一句“这东西怎么工作的我想搞明白。”芯片是目前为止最难、也最让我上头的一件事。这个系列是我读Static Timing Analysis for Nanometer Designs的学习笔记。不逐章翻译不搬运图表用我自己的案例和理解把 STA 讲清楚。因为我也在学所以我知道哪里最容易卡住。目标读者是刚接触数字后端、STA 或 SDC 的学生和初级工程师。默认读者知道什么是时钟、触发器、组合逻辑但不清楚 STA 工具运行后到底做了什么、报告中的数字代表什么含义。STA 不检查逻辑功能你写了一段 Verilog功能仿真全绿综合布线一把过烧到板子上——电路行为时好时坏有时候正常有时候莫名其妙出错。不是你逻辑写错了。是时序没对上。STA全称 Static Timing Analysis检查的就是这件事数据能否在触发器要求的时间窗口内稳定到达并被可靠采样。注意 STA不检查的事加法器算没算错、状态机跳没跳对——这些逻辑功能对不对归仿真和形式验证管。STA 只管一件事逻辑结果有没有按时送到下一级。可以把 STA 理解成一个只认时间的交通警察他不关心你开的是什么车、里面坐了什么人他只问你有没有在绿灯亮起之前停到指定位置。为什么叫“静态”时序分析这里的“静态”不是说电路不工作也不是说时钟不跳变。它指的是STA不需要向设计施加一组具体输入激励也不需要让信号随仿真时间逐周期推进。STA 读取门级网表、标准单元库、寄生参数和 SDC 约束后直接沿着所有相关时序路径计算数据最早和最晚的到达时间再完成 setup、hold 等检查。它分析的是电路的结构和时序模型而不是某一组测试向量下的波形。与之相对时序仿真需要输入测试向量先施加一组激励观察电路响应再换一组激励继续观察。它能同时验证功能和被激活路径的时序但覆盖范围取决于测试向量是否足够全面。一句话概括时序仿真是在“播放”电路的行为STA 是根据电路结构和约束直接推导相关路径能否按时工作。从一条最简单的路径开始考虑下面这条同步时序路径FF1发射数据经过组合逻辑和连线到达FF2。两个触发器由同一个时钟驱动。在某个时钟沿FF1发射数据。数据经过FF1的 clock-to-Q 延迟、组合逻辑和连线最后到达FF2.D。下一个采样时钟沿到来时FF2要把 D 端的数据锁存下来。这里的FF1称为 launch flip-flopFF2称为 capture flip-flop。STA 的工作就是对这样的路径计算数据到达时间并和接收端允许的时间进行比较。数据不能太晚setup 检查触发器在采样沿到来之前需要数据已经稳定一小段时间这段时间叫 setup time。打个比方考试 9:00 开始但要求提前 10 分钟进场。你 8:55 到了没问题你 9:05 才到对不起考场不让进了。setup time 就是这提前 10 分钟——数据必须在时钟沿到来之前稳定下来晚了这一拍的数据就丢了。数据太晚到达接收触发器就可能错过本周期应采集的数据。假设时钟周期为2.00 nsFF2的 setup time 为0.10 nsFF1的 clock-to-Q 延迟为0.15 ns组合逻辑和连线延迟为1.60 ns先忽略时钟偏斜和不确定度。数据到达时间为arrival time 0.15 1.60 1.75 ns数据最晚允许到达的时间为required time 2.00 - 0.10 1.90 ns所以 setup slack 为setup slack required time - arrival time 1.90 - 1.75 0.15 nsslack 大于等于 0说明满足 setupslack 小于 0说明数据来晚了发生 setup 违例。setup 分析因此要使用数据路径的最大延迟。把上面这些关系画在一张时序波形图上就是下面这样——setup 和 hold 的窗口、arrival time 和 required time 的关系一目了然数据也不能太早hold 检查另一个常见误区是只要数据越快到达越好。实际上数据也不能在采样沿后过早变化。采样沿到来后触发器内部还要完成锁存和状态再生的过程。若 D 端立即发生变化内部电路可能难以确定应锁存旧值还是新值严重时会进入亚稳态。因此采样沿之后数据仍需保持稳定至少一个 hold time。还是考试那个比方9:00 开考但交卷铃响之后你不能立刻冲出教室——老师得把卷子收走、确认无误。你提前跑了卷子可能被风吹掉等于白考。hold time 就是这个收卷时间——时钟沿之后数据必须再稳一会儿不能马上变。假设FF1的最小 clock-to-Q 延迟为0.05 ns数据路径最小延迟为0.03 nsFF2的 hold time 为0.10 ns则数据最早到达时间为earliest arrival time 0.05 0.03 0.08 ns hold slack 0.08 - 0.10 -0.02 ns这里的 hold slack 是-0.02 ns也就是 20 ps 的 hold 违例。任何负 slack 都表示不满足时序项目可能会有额外裕量或报告显示精度的约定但不能把小的负值当作 STA 已通过。hold 分析要使用数据路径的最小延迟因为跑得最快的数据最容易破坏采样沿刚刚锁存的旧数据。STA 依据什么做判断要完成上述计算STA 至少需要四类输入门级网表定义有哪些单元以及单元之间如何连接。标准单元库.lib提供单元延迟、压摆、setup、hold 等模型。寄生参数.spef描述布局布线后的电阻、电容决定连线延迟。时序约束SDC定义时钟、IO 延迟、时钟关系和路径例外。可以把它记成一句话网表定义路径库定义单元SPEF 定义连线SDC 定义检查规则。小结带走三句话STA 不查逻辑对错只查数据有没有按时送到。晚了查 setup关注最慢路径早了查 hold关注最快路径。数据不能迟到也不能早退。slack 为正 时序过slack 为负 有违例。负 0.01 ps 也是负不通过就是不通过。后面的文章会在这条FF1 → FF2路径上逐步叠加时钟偏斜、PVT、OCV、SDC——每加一层都是对这套基本计算规则的扩展。下一篇为什么 STA 不能替代仿真你可能会想既然 STA 又快又全是不是可以不用跑仿真了错了。真的有人这样干过然后芯片回片后发现复位顺序是错的跨时钟域的数据丢了一地不定态 X 在电路里到处传播——这些 STA 统统看不见。下一篇就讲清楚STA 的边界在哪里哪些问题你必须靠仿真来兜底。”以为 STA 过了就能流片”是新人最容易踩的坑下一篇帮你绕过去。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门