集成电路设计

关键路径(critical path)

想象一场接力赛:在最慢的那名选手跑完当前这一棒之前,整个队伍都没法开始下一棒。芯片内部的逻辑也是这么运作的:每次时钟跳动时,数据从一个寄存器出发,穿过密密麻麻的一片门电路,必须赶在下一次跳动之前到达下一个寄存器。芯片能跑多快,只取决于它最慢的那次交接——所以那条最差、最慢的路径就是关键路径,时钟频率的上限完全由它一手决定。

更准确地说,关键路径是时序裕量最小的那条寄存器到寄存器的路径——也就是信号被要求到达的时刻与它实际到达的时刻之间余量最小的那条。沿途的每个门和每段连线都会增添一点延迟;把足够多的延迟串起来,总和就可能超过时钟周期(减去建立时间),意味着数据在下一个时钟边沿到来时还没稳定下来,于是被捕获的就是错误的值。静态时序分析通过在设计的时序图上传播各处延迟、并算出每个寄存器处的时序裕量来找到这条路径,然后把裕量最差(最负,或最小的正值)的那条报告为关键路径。

下面才是实践工程师真正在意的部分:关键路径就是你为了提速而要去改的那一条。把它的延迟削下来——通过简化逻辑、调整门的尺寸,或者插入一级流水线寄存器把一条长链从中砍成两半——之后第二慢的那条路径就成了你新的关键路径。加快任何其他路径对你的最高频率毫无帮助;只有瓶颈才算数。所以时序收敛本质上就是一场打地鼠游戏,反复去攻击当下戴着王冠的那条路径。

clock period ≥ critical-path delay (max register-to-register delay + setup time); critical path = the path with minimum slack

时钟周期必须能容纳最慢的那条寄存器到寄存器的延迟再加上建立时间;关键路径就是时序裕量最小的那条路径。

“关键路径”一词借自项目管理,在那里它指的是决定一个项目最早完工时间的、由相互依赖的任务构成的最长链条——道理完全一样,只不过把任务工期换成了延迟。还要注意,“最长”指的是延迟最长,而不是物理连线最长或门数最多:一条由慢门组成的短链,完全可能比一条由快门组成的长链延迟更大。

又称
longest pathworst-case pathspeed pathcritical timing path关键路径關鍵路徑