//来自微信公众号 "数字芯片实验室"
为了使用时钟门控,多电压域,多阈值库或电源开关等低功耗策略,工艺库必须包含支持这些策略的逻辑单元。 支持低功耗设计的一些单元包含以下部分:
1、 Lib库电源引脚连接定义
在之前的CMOS工艺中,芯片上所有的单元都连接到同一个电源。 工艺库中不包含单元的电源连接关系,因为所有单元共享相同类型的电源(VDD、VSS)。
然而,当芯片上使用多个电源,就必须指定每一个单元的特定电源连接关系。 对于某些类型的单元,例如level shifter,需要指定相同单元,不同电源引脚的连接关系。
为了描述此类信息,Liberty库语法已扩展为可以支持电源的连接关系。 这个电源连接关系可以用于综合、物理实现和验证工具优化电源设计,合适地连接layout上的电源引脚,并分析使用多个电源电压的设计行为。
对于没有电源引脚的旧lib库,可以在Design Compiler或IC Compiler中通过add\_pg\_pin\_to\_lib或add\_pg\_pin\_to\_db 命令快速添加电源引脚,从而使库与UPF电源规范兼容。
2、时钟门控单元
Power Compiler等综合工具可以确定时钟门控的位置,提供最大的功耗降低效益,并可在设计中自动插入时钟门控电路。
将时钟门控电路插入现有的时钟网络可能会引入skew,对时序产生不利影响。 为了让综合工具在综合时考虑这些影响,你可以让工具使用integrated clock-gating cells。 集成的integrated clock-gating cells时钟门控电路中的组合和时序电路。 图1显示了integrated clock-gating cells的一种实现方式。
时钟门控单元可以包含任何类型的逻辑,例如多个使能输入,异步复位或反向门控时钟输出。 Power Compiler可以通过将周围的逻辑吸收到门控时钟单元内部来优化使能逻辑。
3、 Level Shifters
在多电压设计中,信号从一个电压域穿过另一个电压域时需要Level Shifter。Level
Shifter作为缓冲器工作,输入端和输出端在不同的电压域。 因此,Level Shifter将信号从一个电压摆幅转换到另一个电压摆幅,同时希望从输入到输出具有尽可能小的延迟。 见图2。
Level Shifter单元的库描述必须包含有关转换类型的信息(从高到低,从低到高或两者都可以),以及所支持的电压电平,和相应的电源引脚。
Power Compiler和IC Compiler等综合和物理实现工具可以识别设计中需要进行电平调整的网络,找到库中可用的合适的Level Shifter单元,将Level Shifter插入网表,放置Level Shifter,并走线信号和电源。
以下图3显示了从低到高电平转换的Level Shifter的lib语法.
4、 Isolation Cells
在使用电源开关的设计中,从可以断电的电源域跨越到未断电的电源域的每个逻辑信号都需要Isolation Cells。Isolation Cells作为缓冲器工作,但在输入端断电的时间内提供恒定的输出信号。 使能输入控制单元的操作模式。 见图4。
以下示例显示了典型Isolation Cells的lib语法。
可以同时实现level-shifting和isolation功能的单元称为enable levelshifter cell。 这种类型的单元用于信号从一个电源域穿过的地方另一个电源域,两个电源域电平不同,并且第一个电源域域可以被断电。 见图5。
以下示例显示典型enable levelshifter cell的lib库语法。
5、 Power-Switch Cells
在具有电源开关的设计中,需要header和 footer 类型开关给可以断电的模块供电。 Header类型电源开关连接power rail 到断电模块的电源引脚。 Footer类型电源开关将ground rail连接到断电模块的接地电源引脚。输入逻辑信号控制电源开关。 见图6。
电源开关单元的库描述指定控制电源开关的输入信号,连接到实际power rail和ground rail的引脚,以及提供可开关的电源引脚。
以下示例显示了典型电源开关单元的lib语法。
6、 Always-On Cells
在电源域被关闭时,可能存在某些特定单元需要持续保持活动状态的情况,例如retention
registers,isolation cells,retention控制路径和isolation使能路径。与普通单元相比,功能相同的always on单元具有备用电源,即使在模块断电期间也能连续工作。 见图7。
以下示例显示了always-on单元的lib语法。
7、 Retention Register Cells
在具有电源开关的设计中,有几种不同的方法在掉电之前来保存寄存器状态,在上电时恢复它们。 一种方法是使用retention registers,这些寄存器可以在其断电期间通过低泄漏寄存器网络和always-on电源供电保持其状态。
以下示例显示典型retention register的lib库语法。
本文转载自公众号:芯片数字实验室
原文链接:https://mp.weixin.qq.com/s/sMNK6aeb2uaM\_luBVCVv0A
未经作者同意,请勿转载!
推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏