多阈值设计
大约五年以前,当过高的功耗成为问题时,代工厂开始为低功耗和高速设计提供库。例如,TSMC(台积电公司)提供一个标准的(或名义的)库,一个高速库,还有一个低功耗库,每个库都有多种单元。如,TSMC 的每个库都包含低阈值电压、高阈值电压和 MTCMOS(多阈值CMOS)阈值电压单元。多单元库有助于设计者同时处理泄漏和动态功耗问题。今天的设计者采用多阈值设计,用多种类型单元处理泄漏功耗。Keating说:“因为我们已经跟VDD和VTH(阈值电压)打了这么多交道,所以我们知道不可能创建一个能用于整个设计的库,因为我们的设计是以速度为主,而对那些速度不重要的设计,我们希望减少泄漏。”
多单元库通常包含至少两组完全相同的单元,它们有不同的阈值电压。较高阈值电压的单元比
较慢,但泄漏较少;而较低阈值电压的单元则正相反,它们比较快但泄漏高。Keating 说:“这是一种非线性关系。你放弃一些速度,就能非常显著地降低泄漏。”Frenkil 称一个高阈值电压的单元通常比低阈值电压单元的泄漏低 50%,而没有其它副作用,如面积的增大。
对大多数应用,设计者一般会在第一轮综合时采用低阈值电压库,以获得最高性能并满足时序目标。然后他们确定设计中的关键路径,即设计中要求最高性能的一条或多条路径。接着,他们尝试确定不需要低阈值电压单元的区域,并换成高电压单元,以降低设计的总功耗和泄漏。Frenkil 指出,这种方法代表了最常用的多阈值设计技术,因为多数应用会把时序作为首要需求,低阈值电压库通过综合时运行较快,综合工具从这些库可以最终产生较小的设计区域。当高阈值电压单元占有较高比例时,综合工具运行时间较长,产生的设计区域较大。
但是,在某些无线系统应用中,功耗是主要目标,而面积的增大则不太重要。在这些情况下,有些设计者会首先采用高阈值电压单元作综合,找到关键路径,然后用低电压单元换掉高电压单元,直至达到性能目标。
多电压设计
多阈值设计虽然通过采用多个库能帮助设计者减少设计的泄漏,但其它技术,如多电压设计,则有助于控制动态功耗。与多阈值设计类似,多电压设计使设计者能够在设计中找到对应工艺与规格最大电压的关键路径和关键块,不过,接下来设计者要降低较低功耗块的电压。Keating 举例说,一个处理器块可能需要 500 MHz 的时钟速度,但一个 USB 核可能只需要 30 MHz 就能符合 USB 协议要求,因此只要较低电压就能运行。所以,如果设计者只给 USB 核必需的功率,就可以大大降低设计消耗的总功率。为实现这种方法,设计者过去是在不同电压块之间放置电平转换器。Keating 说:“如果你的 IC 设计中有一个 0.9V 区,它要向一个 1.2V 区发送信号,则就要在两个区之间放一个电平转换器,以提升电压摆幅和控制时序。”
尽管概念很简单,但实现却复杂得多。首先,设计者必须习惯于在一个内核上处理多个电压。Keating 称:“我们接受的工程师训练是一个芯片上只有一个电源,现在我们得应对一些复杂性。”另外在工具前端也有相当大的挑战。多数商用综合与物理设计工具都可以插入电平转换器,实现多电压,但建立 RTL 却是一个问题。Keating 称:“HDL 尚不存在一种描述电源连接的机制。”这种缺陷是 EDA 供应商们正在致力解决的一个领域,他们正试图实现一个低功耗标准。不幸的是,业界对两个相似标准还无法达成一致(见附文“EDA 业争论功耗标准”)。
另一种来源于定制设计但正在进入 ASIC 设计领域的新方法,就是采用有电压比例缩放的并行机制。Chinnery 和 Keutzer 在他们书中描述了这种技术。Keutzer 称,人们起先认为它不实用,但现在获得了相当大的关注。Keutzer 说:“你可以用并行方法获得性能提高,然后按比例减小电压,以降低功耗和能量。如果你看动态功耗,电压显然是最大的获益方。那么,怎么样降低电压呢?假设有一个时序约束,如2ns,你首先要超过自己的时序目标。尤其是通过增加并行性,将关键路径降低到1.2ns。然后,可以缩小电压,放宽到所需的2ns 周期时间。电压下降给予的补偿远高于面积的增长。”