数字集成电路时钟网络优化和面积优化

1. 优化时钟网络

优化时钟网络是最难执行的操作之一。这是由于当我们向下进入VDSM(超深亚微米)工艺时,金属电阻急剧增加,从而引起由时钟引脚输入到寄存器的巨大延迟。当不需要定时数据时,低功耗设计技术也需要门控时钟以最小化晶体管的反转。这个技术使用输入为时钟和使能(用于使用或抑制时钟源)的门(如与门)。

以前的方法包括在芯片的顶层靠近时钟源的地方放置一个足以驱动设计中所有寄存器的大的缓冲器。粗大的主干和分支(如鱼骨结构)分布到整个芯片以减少时钟扭曲并最小化RC延迟。虽然整个方法对0.5微米及以上的工艺是令人满意的,但它绝对不适用VDSM工艺。

随着复杂的布图工具的出现,现在在布图工具内综合时钟树已成为可能。时钟树方法最适合VDSM工艺,虽然功耗是一个问题,但是时钟延迟和扭曲与缓冲器方法相比都是最小的。在布图过程中,在单元布局之后,在布线前先进性时钟树综合(CTS)。这使得布图工具知道在布图规划中寄存器的准确布局位置。随后最优地放置缓冲器以最小化时钟扭曲,这对布图工具来说很容易。因为优化时钟是增加综合布图迭代的主要原因,在布图阶段进行CTS以减少这一循环。

那么在综合阶段,我们改如何优化时钟网络?通过给时钟引脚设置set_dont_touch_network,可确信DC不会缓冲网络以修正DRC。这个方法对不多数不包括门控时钟逻的设计工作得很好。但如果存在门控时钟,会怎样呢?如果你在门控的时钟上设置了set_dont_touch_network,DC就不会增大门的尺寸(假设一个二输入与门),直到它遇到一个终点(这种情况下为寄存器输入时钟引脚)。这也引起组合逻辑继承dont_touch属性,导致未优化的门控逻辑可能违反DRC,从而影响整个时序。

例如,假定与门的时钟输出扇出许多寄存器且DC为与门推断一个最小的驱动强度,使输入给寄存器的输入转换时间变缓,导致时钟线网较大的延迟。为避免这一情况,可除去set_dont_touch_network属性并进行增量编译。这会增大与门的尺寸并在与门输出和终点间插入额外的缓冲器。虽然这一方法看似理想,却有一些缺点。首先,它需要很长的时间来完成增量编译并且偶尔会得到次优结果。其次,它需要大量的预见,例如需要在所有其他线网上应用set_dont_touch_network属性(不需要时钟树的复位和扫描相关的信号)。

第二种方法是使用report_net命令找出设计中所有的高扇出线网并使用balance_buffer命令点到点对其进行缓冲。因为balance_buffer不考虑时钟扭曲,不应作为时钟树综合的选择。

第三种方法是使用compile -in_place 进行原地优化,同时将compile_ok_to_buffer_during_inplace_opt开关设为“false”。这可避免DC插入额外的缓冲器并且只增大与门的尺寸。

2.  面积优化

在默认情况下,DC尽力优化设计的时序。非时序关键但面积集中的设计应进行面积优化。者可通过有明确面积要求而无时序约束设计的初次编译来实现。换言之,不使用时序约束,只用面积要求综合设计。

另外,可选择高驱动强度门上指定dont_use属性来排除它们。去除高驱动强度门的原因是它们通常用于加速逻辑以满足时序,然而它们尺寸较大,减少它们的使用可大大减少面积。

一旦设计被映射到门,应再次指定时序和面积约束(正常综合)并增量重新编译设计。增量编译可确保DC保持以前的结构并不会不必要的膨胀逻辑。

优化设计是最耗时且最难的任务,由于它依赖于多种因素,如HDL编码风格,逻辑类型、约束的等。最佳结果是通过提供给DC实际的约束取得的,过度约束设计会导致大的面积和次优的结果。

你可能感兴趣的:(数字集成电路时钟网络优化和面积优化)