基于UPF的低功耗设计的逻辑综合

时间:2022-10-24 06:46:37

基于UPF的低功耗设计的逻辑综合

摘要:文章介绍基于UPF的低功耗设计中,各种实现低功耗的策略。并着重介绍UPF的相关命令及其意义及使用,然后说明UPF低功耗流程中的逻辑综合及步骤。最后给出总结,以及一些在低功耗下逻辑综合的经验。

关键词:低功耗设计;逻辑综合;UPF

中图分类号:TP302文献标识码:A文章编号:1009-3044(2011)16-3955-02

UPF-based Logic Synthesis of Low-Power Design

LIU Yi, WU Xiu-long, KE Lie-jin

(School of Electronics and Information Engineering, Anhui University, Hefei 230601, China)

Abstract: This paper introduces some implementation strategies for UPF-based low-power designs, especially significance and usage of correlative UPF commands. Then it explains UPF-based logic synthesis of low-power design and its steps. Finally given the summary and some experience of low-power logic synthesis.

Key words: low-power design; logic synthesis; UPF

随着SOC(片上系统)的集成度的扩大和时钟频率的提高,以及便携式的应用的需求片的功耗和面积要求越来越高。面积制约着芯片的成本,功耗决定芯片的可靠性以及便携设备的电池寿命。所以在便携式设备上,低功耗设计变得越来越必不可少。传统的低功耗技术,有控时钟,多阈值电压技术等。其中门控时钟是最常用的低功耗技术,是在逻辑综合的时候插入门控时钟单元,这样使得当enable无效的情况下,关断寄存器的时钟,使之不翻转,从而减小动态功耗。而多阈值电压技术主要用于减小泄漏功耗,在65nm工艺及以后,泄漏功耗也成为芯片功耗的一个重要组成部分,优化泄漏功耗主要通过在非关键路径使用高阈值电压的逻辑器件。 但这些已满足不了现今低功耗设计的要求。先进低功耗技术有:多电源多电压技术,电源门控技术,动态电压与频率调节技术等[1]。

1) 多电源多电压(Multi-source Multi- voltage):可以有效地降低动态功耗。所谓多电源是指不同的逻辑模块处于不同的电源域中,由不同的电源供电。这样可以根据各个模块性能的要求不同,采用不同的电压。对于频率要求比较高的模块,可以采用高电压,而一些相对低频的模块则可采用低电压。但不同电压域之间的信号交互则需要加入电平转换单元(level shifter)。

2) 电源门控技术(Power Gating):在不需要使用的时候,关闭模块的供电电源,从而减少泄漏功耗。这里需要特殊的单元- 电源开关单元(power switch),当芯片进入休眠模式下,可以通过电源开关单元关闭某些模块的电源,从而使得这些模块的泄漏功耗趋于0。通常在电源关断区域的输出端还需要插入隔离单元(isolation cell),以防止关断区的输出信号对非关断区造成影响。

3) 动态电压与频率调节技术(Dynamic Voltage and Frequency Scaling):是一种先进的功耗管理技术,在一些处理器中已经得到应用。根据模块不同情况下对性能的不同要求,动态调节模块的供电电压,从而减少功耗。

1 UPF的应用

1.1 UPF的特性

统一功耗格式文件UPF(Unified Power Format)是IEEE 1801标准,由一系列TCL 类型的命令组成,用来定义设计的低功耗意图[2]。UPF使得功耗这一重要的设计要素,通过设定与实现设计相关的功耗信息,在RTL级就得以考虑功耗。UPF提供了统一的设置功耗信息的格式,方便用于那些不能在HDL(Hardware Description Language)代码里加入功耗信息的设计。而直接在HDL里设定功耗相关的信息,会使得逻辑设计限定于特定的电源实现[3],使得设计的灵活性大大降低。

UPF可用于芯片电源管理的供电网络,隔离单元,电平转换单元,电源开关单元等各个方面。有了这种统一的UPF文件,在前端设计,逻辑综合,物理实现,仿真验证,等价性检查,时序分析,等各方面就可以按照UPF里的定义的低功耗设计意图来完成完整的低功耗设计流程。这样通过一个文件将低功耗的意图继承下来,用于设计流程的各个环节,也降低了低功耗设计的风险。同时UPF对各种EDA的软件的支持也很好,为业界所广泛使用。

1.2 UPF的设计意图

在当今的低功耗设计中,多种低功耗手段同时运用来降低芯片功耗,如内核低电压,电源关断,多电压域等。同时采取多种工作模式,用功耗管理单元(PMU)来管理各种工作模式下的功耗,从系统级降低芯片的功耗。如图1所示的电压域分布,芯片划分为三个电压区,分别为TOP,PD_DIG,PD_FLASH。其中TOP是常开区,PD_DIG是可变电压区且关断,PD_FLASH是关断区。整个芯片由片内的LDO供电,LDO可以输出可变的VDD_DIG提供给PD_DIG电压域,可以通过逻辑控制LDO来关断VDD_DIG电源。而PD_FLASH的电源则由Power Switch flash_sw来关断。

1.3 UPF的具体描述

UPF文件包括电压域的创建,电源端口,电源线的创建,电源线与电源端口的连接,隔离单元,电平转换单元,电源开关单元的设置,电源状态表等。充分体现了设计的功耗信息。

1.3.1 电压域的创建

电压域是一系列具有相同主要电源的设计。采用create_power_domain命令定义一组设计的电源分布网络,创建电压域。在划分电压域的时候,应该考虑到设计的层次。

1.3.2 对于电源网络的描述

采用create_supply_port命令创建电压域上的电源端口(如VDD,VSS),create_supply_net命令创建电源线(如VDD_net,VSS_net),这些电源线可以在各个电压域内共用(如VSS)。在创建好电源端口和电源线后,用命令connect_supply_net将相应的电源线连接到电源端口上。用set_domain_supply_net命令设置电压域默认的电源线(如VDD_net,VSS_net),这些电源线用于给电压域里的所有单元供电。

1.3.3 隔离单元,电平转换单元的规则

对于隔离单元的插入,set_isolation命令规定电压域的单元按照指定的策略进行隔离,如设定对于输入隔离还是对于输出隔离,隔离信号有效后隔离单元钳位为0还是1等。对于只有一个关断区的设计,将隔离单元放在隔离区输出较为合适。而对于有多个关断区的复杂设计,有时则需要在输入的地方插入隔离单元。而钳位0/1,则与隔离单元的控制信号有效电平是高/低有关。用set_isolation_control为相应的隔离策略指定控制信号,同时指定插入的隔离单元所放置的位置(self,parent,fanout 等)。这两个命令是需要成对出现的。

set_level_shifter命令设定电平转换单元侧插入策略。它指定插入的位置(电压域的输入/输出,及放置的位置)。插入的原则是根据电压域与外界电压的高低不同,放置在目的电压区。即从高电压区到低电压区,插入的高-低电平转换单元放置在低电压区;从低电压区到高电压区,插入的低-高电平转换单元则放置在高电压区。应该注意的是,高-低的电平转换单元的电源只需要连接到低电压区的电源线,而低-高电平转换单元的电源则需要两套:低电压和高电压[4]。

1.3.4 电源开关单元的定义

create_power_switch命令为电压域创建一个电源开关单元的实例。电源开关单元是在布局布线的阶段插入的。

1.3.5 电源状态表

add_port_state命令为电源端口添加状态信息,定义芯片的电源电压的水平及其状态。这有利于验证和分析,且不需要在验证环境里创建电压域和电源网络。

create_pst命令根据指定顺序的电源线来创建电源状态表(Power State Table),主要用于综合,分析,优化等阶段。它定义了一组合理的电源线状态组合,即这些状态的组合真实存在于实际芯片工作的情况。综合工具会根据相应的状态来优化设计。

2 基于UPF的逻辑综合

低功耗流程下的逻辑综合,是基于普通的综合流程,加入一些额外的步骤,如读入UPF文件,设定电压,检查多电压设计。具体的步骤如下:

1) 设定好各种库文件,其中包含电平转换单元、隔离单元和电源开关的库应当放入target_library,并位于标准单元库的后面。如set target_library “sc_1v8_max.db sc_1v2_max.db iso_max.db lv_max.db pw_max.db”。

2) 设定好门控时钟的插入形式。门控时钟是最常用的低功耗技术,门控时钟的插入,不但降低了动态功耗,而且减小了芯片的面积。

3) 读入设计,用check_design命令检查设计中存在的问题。

4) 读入约束文件,用check_timing检查时序约束是否正确。

5) 用load_upf命令读入UPF文件,并用set_voltage命令设置电源线的工作电压,通过指定的电压,工具会自动选择相应的工作环境(operating condition)如:

set_voltage 1.62 Cobject_list {VDD}

为了防止约束里的set_operating_condition 和 set_voltage 不能唯一指定某个特殊的库单元,可以使用命令set_target_library_subset 来指定特殊的库单元为某个或多个特定的模块所使用[4]。

6) 用命令(check_mv_design)检查多电压设计是否正确。要保证set_voltage命令里的电源线的电压和set_operating_condition指定的工作条件的电压和UPF里面电压状态表的电压保持一致。用set_operating_condition命令设置当前设计的工作条件,再用set_voltage命令设置各个供电电源线的电压,这样综合的时候就会根据不同的电压来进行优化。如果check_mv_design存在Error,则要返回检查约束和UPF,如果存在Warning,则要检查这些Warning是否合理,例如有些Warning是说明缺少电平转换单元,这些则是需要在综合的时候插入的,在这个步骤下出现这种Warning是正常的。

7) 用compile_ultra Cgate_clock 同时实现编译和门控时钟单元的插入,综合工具根据驱动的原则进行优化。DesignCompile 2010.03版本对UPF流程提供了更好的支持,新加入的命令使得UPF流程变得更加容易实现。可以用insert_mv_cell Call 在compile之前就插入电平转换单元和隔离单元。这样在compile之前就可以检查电平转换单元和隔离单元是否正确插入,检查UPF设计是否合理。节省了综合的迭代时间。

8) 用命令(check_mv_design)检查compile后的网表的多电压设计问题。

9) 分析时序,保存设计。命令save_upf 用于输出综合后所对应的UPF文件,可以提供给后续的布局布线工具使用。

3 总结

低功耗设计相对于普通的设计要复杂不少,而逻辑综合作为RTL-GDSII 流程实现的第一步,是极其重要的一步,大部分的优化都是在这一步完成的。在基于UPF的设计中,设计层次的划分和UPF中电压域的划分要综合起来考虑,不合理的设计层次和电压域划分可能导致插入多余的电平转换单元或隔离单元,或者无法插入需要的电平转换等。同时在电压域输出端,要防止出现一条线输出同时又成为该层次内部的某个输入这种情况。因为这种情况会导致无法插入电平转换单元。对于时钟网络来说,也需要插入电平转换单元,可以在综合的时候插入,也可以在布局布线的某个阶段插入。综合的时候,要注意set_dont_touch命令的使用,如果net被设置成了dont_touch属性,则不能插入电平转换单元和隔离单元。在综合完成后,一定要保证check_mv_design 通过,才能认为UPF下的综合完成。

参考文献:

[1] 陈春章,艾霞,王国维.数字集成电路物理设计[M].北京:科学出版社,2008(8).

[2] Michael Keating, Low Power Methodology Manual For System-on-Chip Design,2007,26-27.

[3] Unified Power Format(UPF) Standard ,Version 1.0,2007:1-2.

[4] Synopsys Inc. Synopsys Low-Power Flow User Guide,Version D-2010.03,March 2010,5-11.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:浅析网络操作系统 下一篇:新建地方本科院校工科类青年教师工程实践能力...