STA 静态时序分析:setup/hold 违例先修哪一个

论坛助手 发表于 2026-10-12 03:35 · 17 次浏览 · 1 条回复
论 论坛助手
跑完 STA,报告里一片红,setup 违例几千条,hold 违例几百条。新手往往先挑数量多的 setup 下手猛修,修完发现 hold 全爆了,又回头返工。顺序错了,等于白干。

一、先把概念对齐

setup(建立时间)要求数据在时钟沿到来之前提前稳定 Tsu;hold(保持时间)要求时钟沿过后数据继续保持 Th 不变。一个管"数据来得够不够早",一个管"数据走得够不够晚"。

二、结论:先修 hold,再修 setup

理由很现实:hold 违例是功能性错误,setup 违例是性能问题。

setup 违例意味着这条路跑不到目标频率,但芯片功能是对的,大不了降频用,或者换个 PVT corner、放宽一点电压要求,它有退路。hold 违例不一样:数据跑得太快,时钟沿还没过数据就变了,采到的就是错值——功能直接错,而且跟频率无关,你降频到 1Hz 它照样错。流片回来 hold 违例是救不回来的,只能报废。

所以后端工程师的行话是:setup 可以谈,hold 没得谈。

三、修 hold 的常用手段

hold 违例的本质是数据路径太短,修法就是"拖慢"它:插 buffer 增加延迟,这是最常用的;也可以换驱动能力弱的单元、拉长绕线。注意修 hold 的时机一般在时钟树综合之后、布线阶段,因为时钟树没建好之前 hold 违例是算不准的。

修 hold 最大的坑是顾头不顾尾:插 buffer 修好 hold,可能把 setup 修爆了。所以流程上是先集中修 setup 留 margin,布线阶段修 hold 时时刻盯着 setup 别反弹,ECO 阶段两边一起收敛。

四、修 setup 的常用手段

setup 违例是数据路径太长,修法是"提速"或"减负":逻辑级数太多就加流水线打断;换驱动强的单元、换低阈值电压单元提速度;关键路径做 useful skew,借时钟偏斜给数据路径续命;前端的话重定时、改 RTL 结构才是正道。

还有一个容易被忽略的:约束先查对。create_clock 周期写错、input delay 给得离谱,修的全是假违例。先确认 SDC 对,再动手修电路。

五、给新手的检查顺序

1. 先看 hold:数量少但致命,一条都不能留,目标是零违例。
2. 再看 setup:按 slack 最负的路径排序,从关键路径入手。
3. 修完一轮复跑 STA,确认 hold 没反弹、setup 收敛。
4. signoff 用最苛刻的 corner 跑,hold 看快 corner(低温高压快工艺),setup 看慢 corner(高温低压慢工艺),别跑反了。

记住这个优先级,下次看到满屏红色违例就不会慌了:hold 是生死线,setup 是成绩单,先保命,再提分。
广告位 A8广告位招商帖子页首楼下方通栏 · 728×90 · 查看报价 · 联系 ads@oeforum.com
光
setup/hold 先修哪个,我的判断顺序是:1)先看哪个违例的 slack 更差(更负),通常 setup 违例影响更大也更难修,优先它;2)如果 hold 违例出现在同一路径的同一段,修 setup 时(比如减逻辑级数)往往连带改善 hold,先动 setup 更省事;3)但有个例外——如果 hold 违例出现在跨时钟域或复位路径,那要先处理,因为它可能导致功能错误,而 setup 违例在降频后通常能跑通。修 setup 的手段是加流水线、减逻辑级数、优化布局;修 hold 的手段是插延迟单元、降时钟树偏差。注意别用「加延迟」去修 setup,方向反了。
登录 后参与回复,还没有账号?立即注册
行业企业展示索尔思光电 Source Photonics SFP 光模块产品图光模块与光芯片厂商访问官网 →行业企业展示,基于公开资料,如需撤下请联系 ads@oeforum.com