【数字IC基础】时序违例的修复

时序违例的修复

  • 建立时间违例
  • 保持时间违例
  • Buffer 插入位置
  • 参考资料

建立时间违例

基本思路是减少数据线的延时、减少 Launch clock line 的延时、增加capture clock line的delay

  1. 加强约束,重新进行综合,对违规的路径进行进一步的优化,但是一般效果可能不是很明显降低时钟的频率,但是这个一般是在项目最初的时候决定的,这个时候很难再改变

  2. 拆分组合逻辑,插入寄存器,增加流水线,这个是常用的方法

  3. 优化布局布线,减小传输的延时

后端的一些具体方法有:

1)换速度更快的cell

对绝大多数工艺,任何一种标准单元(standardcell)都有不同种速度的Library,也就是常说的不同Vt的cell,比如HVT, RVT, LVT或者SLVT。其中HVT cell速度最慢,SLVT速度最快。而减少data line delay最常用的方法就是更换不同Vt的cell,比如HVT的cell换成RVT, LVT或者SLVT

2)更换驱动能力更强的cell

在某些timing path中,可能会出现因为cell的驱动能力比较弱而产生比较大的delay。这时就可以将这种cell更换成驱动能力更强的cell。比如X2倍的cell更换成X4或者X6的cell。

3)将net的layer更换成阻值更低的金属层以减小cell的load和net delay

4)useful skew 的方法。实际操作很简单,就是在capture register的CK pin插入buffer或者inverter以增加capture clock delay。

保持时间违例

保持时间裕量与建立时间裕量是一对互斥的关系,上述可以用于优化建立时间裕量的方法,都不能用于优化保持时间裕量,大家要注意。

保持时间违例可以通过如下方式解决:

  1. 在组合逻辑中插入延时buffer,或者链路拉长,使得数据传输延时变大。

  2. 可以在后端调整时钟SKEW,使得违例寄存器的时钟SKEW变得更小(相对于正SKEW)

Buffer 插入位置

修复 hold violations 时,插入 buffer 或者 delay cell 的位置,是靠近launch端还是capture端,还是并无任何要求呢?

在逻辑和物理上都应该尽量靠近capture端,也就是endpoint。在逻辑上更靠近endpoint能够保证插入的cells只会影响到有violation的path,物理上更靠近endpoint能够有效避免 DRV,因为修hold时加入的cell普遍驱动能力较弱。

参考资料

  1. STA

你可能感兴趣的:(数字IC,数字电路基础)