6.2 静态时序分析:约束、路径与余量


6.2 静态时序分析:约束、路径与余量

版图连好后要回答一个致命问题:信号在每条路径上到底来不来得及。回答它的裁判是静态时序分析——它不看任何激励,把电路里所有时序路径穷举一遍、逐条算账。上一章 5.3 节我们从排错视角见过它的威力,本节正面拆解它的原理、报告与余量管理。读完你应当能独立解读一份时序报告,判断违例的轻重缓急,并掌握余量管理这门"给未来留余地"的手艺。

不靠激励的时序裁判

动态仿真验证时序的方式是"跑激励看行为",天生有两个盲区:激励没覆盖的路径不检查,激励里的功能正确会掩盖边沿上的竞态。静态分析换了思路:电路是有限路径的集合,那就把每条路径抽象成延迟账目,逐条与时钟周期比对。激励不必存在,覆盖率天然是百分之百——这正是它能当签核裁判的原因。

裁判检查两类账。建立检查(数据要在时钟沿前到达并稳定):数据从起点触发器出发,穿过组合逻辑与连线,必须在捕获沿之前足够早地到达下一个触发器;到得太晚就是建立违例,表现为频率上不去。保持检查(新数据不能来得太早,免得冲掉旧数据):同一拍内,数据最快也不能在捕获触发器的保持窗口内就翻面;到得太早是保持违例,表现为任何频率下都出错——与频率无关是保持违例的识别特征,也是它更危险的原因:降频救不了它。

每条路径的账目分三段:起点触发器的时钟到输出延迟、组合与连线延迟(连线延迟来自 6.1 节布线的真实几何)、终点触发器的建立要求;时钟本身从时钟根分发到两端还有各自的偏斜与延迟,要计入比较基准。分析工具穷举所有起点到终点的组合(约束文件里的例外条款除外——5.3 节的教训:每条豁免都要经得起核对),算出每条路径的余量:正余量是安全垫,负余量是违例。

图:一条时序路径的分段账目与两种检查

图:一条时序路径的分段账目与两种检查

报告解读与违例修复的工具箱

读报告的纪律是"先统计、后明细"。全局统计给你病栋分布:最差余量多少、负余量路径有多少条、集中在哪些时钟组与模块——个位数违例集中在一片区域,通常是局部布线问题;成片违例均匀散布,多半是约束或架构级别的病。明细逐条读五要素:起点、终点、需求与到达时间、余量、分段延迟——分段延迟会直接告诉你是逻辑级数太多(综合的病)还是绕线太长(布线的病),对应的修复科室完全不同。

修复工具箱按代价从低到高排。缓冲插入:给长线或高扇出路径补驱动,物理工具自动完成,代价是面积与功耗微涨。单元尺寸调整:关键路径换驱动强的单元、非关键路径换驱动弱的,工具在时序与功耗间自动腾挪。逻辑重组:把关键路径上的深层逻辑拆拍(多花一拍换深度减半),要动 RTL,走验证回归。架构置换:流水线加级、并行化、位宽重划,动架构,回到第四章重来。与 4.3 节的收敛谈判同一条铁律:先便宜的,后结构性的;每次修复后重跑分析确认无副作用。

保持违例的修复是特例:它通常出现在快角,修法是给路径加延迟(专用延迟单元),不会伤建立——两种检查在修复上是"一头松一头紧"的跷跷板,成熟的流程会同时核算两角,避免按下葫芦起了瓢。

案例复盘:签核周的保持违例风暴

背景:CK770 第三轮布线后的签核前分析,快角报告突然冒出数百条保持违例,集中在时钟树重长过的外设域。距流片窗口还有一周,团队进入签核周的节奏。

操作。 先按"先统计后明细"定病栋:违例集中在外设域的寄存器到寄存器短路径,最差余量为负但幅度都不深——这是典型的"时钟树偏斜吃掉保持余量"形态:外设域时钟树重长后,相邻触发器的时钟到达差变大,短路径的保持账立刻紧张。修复方案分两档:深违例路径插入延迟单元;浅违例路径交回布线工具做"保持修复"自动微调(在短路径上绕出一点延迟)。两档并行,当晚重跑快角分析。

结果。 一轮修复后违例数量下降九成,残余深违例七条——全部指向同一个时钟缓冲单元的驱动选择,换档后清零。建立检查的慢角全程未受伤(延迟单元只加在快角敏感的短路径上)。签核报告两项检查全绿,按期放行流片。回片点亮后,外设域在实际硅片上的表现与签核模型一致,没有出现任何时序类异常。

解读。 这场风暴的两个教学点。其一,时钟树一动,保持先炸:保持余量对时钟偏斜极其敏感,这是"时钟树综合必须单独验收"(6.1 节)的后半句理由——验收不只看偏斜数字,还要看它对短路径保持账的挤压。其二,保持修复不伤建立的对称性是敢在一周窗口里放手修的底气:两种检查的工艺角与修复手段天然分离,流程熟了就能并行推进。若是建立违例风暴,一周窗口大概率保不住——修复要动逻辑,验证回归的周期省不掉,这再次印证 6.1 节那句"圈数由前端余量决定"。

变式。若违例分布在多个时钟域交界处,先回 5.3 节核对约束的跨域表达(伪路径、多周期)是否正确——域间违例多数是约束病不是物理病;若慢角建立违例成片且集中在互连矩阵,那要回到 2.3 节谈拓扑置换,物理工具已经无能为力。

例外约束里最考验功力的是多周期路径的表达。某些设计里数据天然允许两拍以上到达(低速外设寄存器、分频接口),正确的表达是"多周期"声明——告诉工具按两个周期的窗口检查建立关系;错误的表达是图省事标成伪路径,检查直接归零。两者的差别在 5.3 节的事故二里已经付过学费:多周期是"放宽尺度仍受检",伪路径是"免检",把该放宽的写成免检,等于把可查的病推给无人区。写例外约束时的自检口诀就一句:这次豁免之后,还有谁在看这条路径?

常见问题辨析

问:余量为正就安全吗?要留多少余量才够?

余量为正只代表"在当前分析条件下合格",而分析条件本身有不确定性:提取的寄生参数是近似值、工艺批次有波动、芯片会老化、温度电压会漂移。所以签核的余量是"正且留白"——各工艺角全正之外,对时序敏感路径还要求一个最小正余量(行业习惯从几十皮秒到上百皮秒,按节点与置信度定),专门吸收提取误差与批间漂移。零余量放行的项目,量产批次里总有那么几颗在温度极限下现出原形。

一份违例明细读起来是这个样子(示意,数字为虚构量级):

路径起止:互连矩阵仲裁器 到 存储控制器队列 到达时间 1962ps 需求时间 2000ps 余量 +38ps 分段:时钟到输出 118ps | 组合逻辑 640ps | 连线延迟 1120ps | 检查窗口 84ps 结论:余量为正但偏薄,连线占比过半,下一轮布线优先照顾该段

问:为什么建立检查盯着慢角,保持检查却盯着快角?

因为两种检查防的是相反方向的意外。建立检查怕数据迟到,而让电路变慢的因素(低电压、高温、慢工艺批次)在最坏角上叠满——工具取慢角核算,是替"最倒霉的一颗芯片"做体检。保持检查怕数据早到,让电路变快的因素(高电压、低温、快工艺批次)在最坏快角上凑齐——同一颗设计,快角下的路径短得可能不够维持保持窗口。两头各取最坏,中间的万千组合才有信心。这个"各盯一头"的结构也解释了 6.1 节那条跷跷板:把快角修好的手段(加延迟)天然不伤慢角,因为慢角根本不在乎路径再长那一点点。

本节要点回顾

  • 静态分析的价值在穷举:不靠激励、天然全覆盖,因此有资格当签核裁判;它的边界是约束,覆盖率先于结果核对。
  • 两种检查一对跷跷板:建立看慢角怕迟到,保持看快角怕早到;保持违例与频率无关、更危险,降频救不了。
  • 修复工具箱按代价升序:缓冲、调尺寸、拆拍、动架构;保持修复与建立修复工艺角分离,可并行推进。
  • 时钟树一动保持先炸——6.1 节"时钟树单独验收"的后半句理由在本案例兑现。

时序达标只是放行的必要条件之一,还不是全部。下一节清点流片前的最后一套证据:物理验证与签核的全部科目。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U