要理解这个问题,首先需要明白OCV(片上工艺偏差)和STA(静态时序分析)的基本逻辑。
简单来说,-early和-late是OCV分析中用来模拟芯片上不同区域工艺偏差的两种“滤镜”:
-late:让路径变慢(延迟变大)。
-early:让路径变快(延迟变小)。
OCV分析的核心思想,就是同时考虑最坏和最好的情况,来模拟现实中的不确定性。
-late?建立时间(Setup Time)检查,是要确保信号不能到达得太晚,否则时钟沿就抓不到了。
为了抓住最极端、最容易出错的“晚到”情况,OCV分析会构造一个对Setup最不利的场景:
让信号(Launch Clock & Data)尽量“晚”:这是为了模拟信号在传输过程中可能遭遇的最慢路径。因此,发射时钟路径(Launch Clock Path)和数据路径(Data Path)都会使用 -late 来分析。
让采样时钟(Capture Clock)尽量“早”:这是为了模拟采样时钟可能最快到达,从而“不等”信号的情况。因此,捕获时钟路径(Capture Clock Path)会使用 -early 来分析。
这样一来,信号到达时间(Arrival Time)被放大了(慢),而采样信号要求时间(Required Time)被缩小了(快)。整个分析的裕量(Slack)会变小,从而暴露出最坏的Setup违例。
-early?保持时间(Hold Time)检查,是要确保信号不能到达得太早,否则会冲掉上一拍的数据。
为了抓住最极端、最容易出错的“早到”情况,OCV分析会构造一个对Hold最不利的场景:
让信号(Launch Clock & Data)尽量“早”:这是为了模拟信号可能以最快速度冲过来的情况。因此,发射时钟路径(Launch Clock Path)和数据路径(Data Path)都会使用 -early 来分析。
让采样时钟(Capture Clock)尽量“晚”:这是为了模拟采样时钟可能最晚才到,从而更“慢”地锁存住数据,让早到的信号有机会造成破坏。因此,捕获时钟路径(Capture Clock Path)会使用 -late 来分析。
这样一来,信号到达时间(Arrival Time)被缩小了(快),而采样信号要求时间(Required Time)被放大了(慢)。同样,分析的裕量会变小,从而暴露出最坏的Hold违例。
为了让你更清晰地对比,我把两种检查的路径配置整理如下:
| 时序检查 | 发射时钟路径 (Launch Clock) | 数据路径 (Data Path) | 捕获时钟路径 (Capture Clock) |
|---|---|---|---|
| 建立时间 (Setup) | -late (变慢) | -late (变慢) | -early (变快) |
| 保持时间 (Hold) | -early (变快) | -early (变快) | -late (变慢) |
这个配置表清晰地展示了OCV分析的“悲观”思想:它总是把对检查不利的因素放大。对于Setup,就放大“慢”的因素;对于Hold,就放大“快”的因素。通过这种方式,STA工具可以确保你的设计在各种工艺偏差下都能稳定工作。