1. 延迟基础概念:传播延迟、传输延迟、时序余量、时钟偏斜、时钟抖动
各位同学,咱们今天聊聊延迟。说实话,延迟这东西,是芯片设计里最绕不开的话题。你想想看,一个信号从A点走到B点,到底花了多少时间?这时间够不够用?差那么一丁点,芯片可能就罢工了。
我刚开始做后端设计那会儿,总觉得时序分析是后端的事,跟我前端写RTL的没啥关系。直到有一次,我写了个挺复杂的流水线,综合后时序报告一片红……嗯,从那以后,我再也不敢小看这些基础概念了。
咱们今天就把这五个概念掰开揉碎了讲清楚。它们分别是:传播延迟、传输延迟、时序余量、时钟偏斜、时钟抖动。
核心一句话:延迟不是单一的数字,而是一整套“时间账本”。你算得清,芯片就能跑得快;你算不清,流片回来就是一堆废硅。
1.1 传播延迟(Propagation Delay)
传播延迟,说白了就是信号从输入端走到输出端,经过逻辑门所花的时间。比如一个反相器,输入从0变1,输出不会立刻从1变0——它需要一点时间。这个时间,就是传播延迟。
我在项目中遇到过这样的情况:一个加法器链,每一级都有几十皮秒的传播延迟。你以为加起来没多少?但五级、十级累加下来,一个时钟周期就被吃掉了一大半。所以,传播延迟是路径延迟的“地基”。
| 门类型 | 典型传播延迟(28nm工艺) | 影响因素 |
|---|---|---|
| 反相器 | 5~10 ps | 负载电容、输入斜率 |
| 与非门 | 10~20 ps | 扇出、工艺角 |
| 多路选择器 | 15~30 ps | 晶体管尺寸、布线 |
我的小技巧:在做RTL设计时,尽量少用深层次的组合逻辑链。比如一个32位的加法器,拆成两级流水,传播延迟能降一半。我吃过这个亏,后来学乖了。
1.2 传输延迟(Transport Delay)
传输延迟,指的是信号在连线上传播的时间。注意,它跟传播延迟不一样——传播延迟是“门”的事,传输延迟是“线”的事。
你想想看,现在的芯片动辄几亿个晶体管,连线长度加起来能绕地球好几圈。信号在金属线上跑,速度大约是光速的一半。但别高兴太早,因为RC延迟会让它慢得多。
我记得有一次做28nm芯片,一条长走线从芯片这头跑到那头,传输延迟竟然超过了200ps。当时我整个人都不好了——这都快赶上半个时钟周期了!
关键公式:传输延迟 ≈ RC × L²,其中R是单位长度电阻,C是单位长度电容,L是线长。注意,它是平方关系——线长翻倍,延迟翻四倍!
1.3 时序余量(Slack / Timing Margin)
时序余量,就是你的路径“还剩多少时间”。公式很简单:
Slack = 要求时间 - 实际到达时间
如果Slack是正数,说明路径时序满足要求。如果是负数……恭喜你,这条路径“红了”,需要优化。
我个人习惯在项目初期就把时序余量留足。比如目标频率是1GHz,我设计时按1.2GHz去约束。为什么?因为后期还有时钟偏斜、抖动这些“隐形杀手”等着你。
避坑指南:我曾经在一条路径上看到Slack只有5ps,觉得“差不多够了”。结果流片回来,温度一高,时序直接崩了。从那以后,我给自己定了个规矩:至少留10%的余量。
1.4 时钟偏斜(Clock Skew)
时钟偏斜,指的是同一个时钟信号到达不同寄存器的时间差。为什么会这样?因为时钟树不是完美的——走线长度不同、负载不同、工艺偏差,都会导致偏斜。
时钟偏斜分两种:
- 正偏斜(Positive Skew):目标寄存器的时钟晚到。这其实对建立时间有利,但对保持时间不利。
- 负偏斜(Negative Skew):目标寄存器的时钟早到。这正好相反。
你可能会问:“那能不能让偏斜为零?”理论上可以,但实际做不到。我见过最牛的时钟树综合,也只能把偏斜控制在几十皮秒以内。
我的经验:在做时钟树综合时,我会特别关注“同一条路径上的偏斜”。比如两个寄存器之间有数据交互,它们的时钟偏斜必须严格控制。否则,数据可能还没到,时钟就已经采了——这就是setup violation。
1.5 时钟抖动(Clock Jitter)
时钟抖动,是时钟周期的不确定性。说白了,就是时钟边沿在时间轴上的“晃动”。
抖动分为两种:
- 周期抖动(Cycle-to-Cycle Jitter):相邻两个时钟周期的差异。
- 长期抖动(Long-Term Jitter):经过很多个周期后,时钟边沿的累积偏移。
我记得有一次做高速SerDes设计,PLL输出的时钟抖动有3ps。当时觉得“才3ps,毛毛雨啦”。结果算上数据眼图的裕量,3ps的抖动直接吃掉了我20%的时序预算。嗯,从那以后我再也不敢小看抖动了。
| 抖动类型 | 典型值(1GHz时钟) | 来源 |
|---|---|---|
| 周期抖动 | 1~5 ps | PLL噪声、电源噪声 |
| 长期抖动 | 5~20 ps | 热噪声、衬底噪声 |
总结一下:传播延迟是“门的事”,传输延迟是“线的事”,时序余量是“算账的事”,时钟偏斜是“时钟树的事”,时钟抖动是“时钟源的事”。五个概念,五个维度,缺一不可。
好了,这一章的内容就到这里。记住,延迟优化不是一蹴而就的,它需要你在每个环节都精打细算。下一章咱们聊聊更具体的优化方法,到时候见。
公众号:蓝海资料掘金营,微信deep3321