模块门控时钟
模块门控时钟可用于体系结构层次,对不在使用状态下的某些设计部分禁用时钟。Power Compiler能够替换手动插入的门控时钟逻辑电路,运用库的ICG(集成门控时钟)单元控制时钟进入任何模块。一旦用户在脚本中创建出时钟,此工具就能自动确定这样的组合逻辑。
模块门控时钟可以应用于一系列的层次上,包括芯片级、域级(DSP、CPU等)、模块和子模块。当整个芯片处于空闲模式,但必须对外
设计这样的时钟结构要对芯片功能及功率分析有充分的了解。总的来说,时钟开关功耗占据了芯片总功耗的30%以上,因此门控时钟通常能够获得良好效果。
门控时钟遇到的挑战
除了确定在哪里和怎样进行门控时钟和(或)时钟分频以外,高层次的门控时钟还涉及一系列的时序和可测性设计方面的问题。对时序问题可通过观察时钟结构中一段较长的路径来进行了解,这段路径可以包含一个数字式锁相环、一个时钟分频器、多个模式开关多路转换器和多级门控时钟。
在用诸如Astro CTS(时钟树综合)等工具对典型芯片进行高质量的时钟树综合后,复杂的门控时钟和分频器会要求手动干预,在大多数情况下是要求修改工具范围以外的设计部分,例如,为了防止出现严重的时钟相位延迟,因而需要进入干预。
寄存器和高层次时钟体系内的非CTS单元放置得过远,会造成高层次扩展时钟树插入延迟的增加,并因此导致时钟相位延迟的增加。非CTS单元的基于网络权重的布局控制能够避免这一问题。该方法可以提取连接门控时钟单元、开关多路转换器和受驱动的CTS宏的节点,从而在布局优化中,将较重的网络权重应用在这些节点上,并将这些单元的距离拉近。这项优化技术能够使单元的负载化,并因此使单元延迟和输出回转(slew)。
对时钟分配效果不佳的布局也会导致相位延迟问题。这是由于时钟树综合是根据时钟树里长分支的延迟特性来平衡整个时钟树,因此,布局不当会造成单独一根很长的时钟通路,使得整个时钟树的插入延迟增加。适当的布局限制可以更好地平衡时钟树,防止这一问题的发生。
其它导致时钟相位延迟的原因包括非CTS单元的布局不当,以及非CTS单元输出回转过大。Synopsys公司针对这些问题给出了解决方案,并提出了其它三种时钟分布问题的处理方法:减少时钟扭曲、减少时钟占空比失真和提高门控时钟效率。
由于受到上市时间的限制,手动时钟树分析和平衡方法不适用于复杂的ASIC设计。Synopsys公司提供了一项时钟平衡自动化策略,这项自动化策略包括三个步骤:提取一个通用的共享时钟分布拓扑、针对每个不适合通用时钟分布的时钟路径定义局部平衡策略,以及将这些局部平衡限制条件与通用时钟分布的限制条件相结合。其结果是生成用于CTS工具的时钟树综合限制条件,对整个时钟分布进行自动平衡。
另一项
多电压岛
在门控时钟对动态功率进行限制时,使用多种供电电压和(或)多种阈值电压有助于管理动态功率和泄漏功率。阈值电压不必与供电电压一起按比例缩放。
电压岛或电压域的使用提供了一种同时满足功耗和性能要求的方法。在本方案中,逻辑电路部分根据功能分为独立的区域组,必须工作在速度下的区域采用的供电电压,对时序要求不太严格的区域采用较低的供电电压。
频率有必要跟电压一起按比例缩放,这样,电压岛方法就能与门控时钟进行良好的配合。门控时钟模块中的逻辑电路持续消耗泄漏功率,但是通过降低此模块的供电电压就能减小泄漏功率。
多供电电压必须通过单独的供电引脚或集成到器件内的模拟电压调节器来提供
除了降低供电电压外,还可以根据系统要求改变某一电压岛的供电电压。相对于其它挑战而言,这种方法要求采用已经在所有电压下经过特性化的单元。Synopsys的可缩放多项式模型(Scalable Pdynomial Model, SPM)支持必要的时序和功率信息,非线性查找表格模型(Non-Linear look-up table Model, NLM)也可用于电压岛的设计。SoC还可以设计电源关断的特定电压岛,以消除它们的泄漏功率。这些电压岛要求采用电源隔离单元,可以是简单的"与"门。从电源关断部分进入有源域的输出不允许出现漂移,电源隔离逻辑确保有源域的所有输入信号均箝位在稳定的数值上。另外,还可能需要采用状态保持技术,从而保证模块能在通电时恢复运行。对各个电压岛进行电源关断或对电压进行动态按比例缩放时,也可能需要电源排序电路,以确保芯片的正确运行。
多阈值设计
多供电电压岛与多阈值综合之间可以良好配合,通过在关键的时序路径上采用低Vth单元和在非关键的时序路径上采用高Vth单元这样的优化手段能够满足时序目标。如果芯片供货商提供了与状态相关的泄漏模型,则利用它们可以获得更好的泄漏结果。
根据设计团队所采用的方法或选择,可以将one-pass或two-pass的综合流程应用于多阈值设计。初次综合可采用低Vth、高性能库来执行,随后采用多Vth库来进行增量编译,以降低泄漏电流。对于时序和泄漏均十分重要的设计,可同时采用多Vth库来执行one-pass综合。这种设计首先对时序进行了优化,然后在不影响已实现的时序效果(即worst negative slack,WNS)的条件下,再对泄漏功率进行优化。功率优化后,再进行面积优化。不论是采用one-pass流程,还是two-pass流程对泄漏功率进行优化,在综合环境(使用Power Compiler搭配Design Compiler或Physical Compiler)中都推荐采用多Vth库。
流程的实现要依靠合理的泄漏约束,此约束在Power Compiler中由set_max_leakage_power命令指定。
综合中的功率优化
综合工具能够通过采用如RTL级门控时钟插入和门级功率优化等技术来优化功率设计。这些技术由Power Compiler结合Design Compiler和(或)Physical Compiler共同实现。
当无需触发器的输出信号时,RTL级门控时钟能够将通向大型寄存器组的时钟信号关断。图6所示为没有门控时钟和带有门控时钟的
时序问题是,在异步重新启动时钟时会出现时钟毛刺,因此,有必要在设计中包含对重新启动进行定时的电路,以避免出
由于门控电路取代了多路器,因而这种类型的门控时钟对面积的影响相对不大,而且,实际上还能将面积缩减5~15%。Power Compiler能够自动实现这种门控电路,而且不需要改变RTL代码。
Power Compiler还能采用库中的ICG来替换手动插入的门控时钟。这项功能能够支持那些在物理流程中拥有手动门控时钟的传统模块或IP。Power Compiler能够识别ICG中与功率相关的属性,从而有助于此类单元的布局。对于门控时钟的用户,Power Compiler能够通过实现多级门控时钟,来节省更多的功率。在这项技术中,一个门控时钟单元代替寄存器组,作为另一个门控时钟单元的馈入。
&n
在Power Compiler与Physical Compiler协同工作时,门控时钟单元的布局得到了优化。在Physical Compiler流程中,Power Compiler确保门电路单元能够就近放置在一起,门控电路部件与其所驱动的部件也能靠近放置,这样的布局减少了其它方式中门控时钟可能出现的时钟扭曲。
除非加入特定的可测性设计,否则门控时钟会导致芯片的可测性下降。由于时钟信号是由内部信号进行控制,所以测试工程师无法控制可测性设计扫描触发器的负载。这个问题可以通过在测试编辑过程中增加一个测试引脚,并将其指定为一个固定值(1'b1)来加以避免。添加了控制点的门控时钟电路如图8所示。
Power Compiler的set_clock_gating_style指令的选项能够在门控时钟中指定所添加的具易测性的逻辑电路的数量和类型,以此改善芯片的可测试性。例如,可在门控时钟锁存器前后添加一个用于测试的控制点,并且选择test_mode或scan_enable模式,还可通过其它选项增加可观察性逻辑或者增加建立时间和保持时间裕量。若要使用Design Compiler的check_tes指令或check_dft指令,则要先使用hookup_testports和set_test_hold 1 Test_Mode指令。
门控时钟不应在具有由Design Compiler实现的主/从触发器的变量(或信号)的设计中使用。Design Compiler采用clocked_on_also信号类型属性来实现这些触发器。但在门控时钟发生的抽象层面上,Power Compiler不能识别出这项属性,而只能将触发器的从时钟信号进行门控。可以使用set_clock_gating_signals指令,将特定的由主从型触发器实现的设计变量(或信号)排除在外:
dc_shell> set_clock_gating_signals -design TOP -exclude
{ A B }
总之,的代码编制是由以下四种方式中的任意一种实现的基本同步负载使能,这些实现方式可以混用,也可以相互嵌套。
"If-Else"语句
条件赋值
"Case"语句
"For"循环
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。