使用系统级抽象和增强自动化简化低功耗片上系统自上而下设计
多米尼克·马科∗,卡塔琳娜·耶莱门斯卡,帕维尔·奇查 k
布拉迪斯拉发斯洛伐克技术大学,斯洛伐克布拉迪斯拉发伊尔科维奇ova 2号,84216
A R T I C L E I N F O
关键词
:高层次综合 低功耗设计 电源管理 系统级规范 验证
摘要
由于功耗是现代片上系统的关键因素,设计过程中采用了多种功耗降低技术,主要通过电源管理来实现。其标准规范缺乏复杂设计所需的抽象层次,因此变得困难且容易出错。在本研究中,将更高层次的抽象引入功率管理规范,并将其与系统的功能模型集成。这使得规范简化了约16.8倍,并实现了等效标准规范的自动生成和验证。由此缓解了功率管理规范易出错的问题,并减轻了复杂的验证过程。
1. 引言
功耗是硬件系统开发者非常关注的问题,主要原因是片上系统(SoC)中的功耗密度不断增加。因此,必须在整个设计过程中处理功耗问题,通常通过使用所谓的电源管理来实现。然而,这进一步加剧了本已过于复杂的设计过程,因此必须采用抽象与自动化来应对这种复杂性(同时也提高生产效率)。电子系统级(ESL)抽象正逐渐成为工业界的设计起点,已有多种方法被开发出来(例如参考文献[1,2]),以提升电源管理在设计中采用的抽象层次。然而,这些方法要么过于依赖设计复用,要么在规范中使用了过多的低层次细节,要么未能提供足够的自动化。
本文提出了一种新的低功耗系统设计方法学,该方法消除了现有方法的弱点,并在其优点基础上进行了改进。它将功率管理规范直接集成到电子系统级(ESL)的功能模型(SystemC)中,并利用高层次综合来自动生成相同系统的标准功耗管理的寄存器传输级(RTL)模型。简化的抽象规范使设计人员的输入效率更高(约16.8倍),而自动综合的RTL模型则实现了更精确的设计分析。该方法学还通过自动验证流程得到增强,可引导设计人员获得正确且完整的规范。
本文组织如下。下一节(第2节)提供了我们研究的更深入的背景和动机。第3节描述了基于电子系统级的功耗管理领域的最新进展。第4节概述了所提出的低功耗片上系统设计方法学,以及所采用的新的抽象功耗管理规范和功耗管理高层次综合方法。在结论之前,展示了说明该方法学有效性的实验结果(第5节)以及与相关工作的比较(第6节)。
2. 背景
为了降低功耗,必须了解影响功耗的因素。在互补金属氧化物半导体(CMOS)技术中,总功耗是开关活动、电容、电压和晶体管物理特性[3]的函数。正式表达为
$$ P = P_{SW} + P_{SC} + P_L $$ (1)
其中,$P$ 是总功耗,$P_{SW}$ 是开关功耗,$P_{SC}$ 是短路功耗,$P_L$ 是漏电功耗。漏电功耗也称为静态功耗。开关功耗与短路功耗合称为动态功耗($P_D$)。动态功耗的各个组件由以下方程定义。
$$ P_D = P_{SW} + P_{SC} $$ (2)
$$ P_{SW} = a \cdot f \cdot C_{eff} \cdot V_{dd}^2 $$ (3)
$$ P_{SC} = I_{SC} \cdot V_{dd} $$ (4)
在这些方程中,$a$ 表示开关活动,$f$ 是开关频率,$C_{eff}$是有效电容,$V_{dd}$是电源电压,$I_{SC}$是短路电流。因此,可以通过降低开关活动和时钟频率(会影响性能),或通过降低电容和电源电压来降低动态功耗。漏电功耗是电源电压、开关阈值电压和晶体管尺寸的函数。由于漏电流的存在,漏电功耗会持续消耗,因此必须采用设计技术(例如在不使用时关闭电路电源)来减少它[3]。所有这些因素都在现代片上系统中被广泛用于降低功耗。根据所针对的功耗影响因素,已开发出各种功耗降低技术。以下小节总结了最常用的技术及其在设计中的标准应用。
2.1. 降功耗技术应用
现有的功耗降低技术可分为三类:
-
Circuit-optimization技术
——此类别包含改变所设计电路的物理参数(例如结构和尺寸)的技术,例如逻辑重构、晶体管尺寸调整、引脚交换或多电源电压。
-
Power-management技术
——这些技术利用动态功耗管理,使设备能够临时切换工作模式以节省能量。设备的某些部分可以停止运行,隔离信号传播,调节电压或频率,甚至可以被断电。这些技术包括时钟门控、操作数隔离、衬底偏置、电压和频率调节以及电源门控。
-
Architectural技术
——此类别为混合型,主要包含一些架构选择,以便于应用其他功耗降低技术。这些技术包括存储器或总线分割和硬件加速。
由于系统功耗高度依赖于所使用的实现技术,因此它与设计的物理层次相关联。然而,硬件设计在如此低的层次上过于复杂,因此采用先进的降功耗技术(使用多电压)将非常困难且容易出错。这将需要全芯片功能验证,而该过程在时间上是难以承受的。为了应对设计复杂性并减少设计迭代次数,IEEE发布了用于低功耗集成电路的设计与验证的IEEE标准[4](通常称为UPF——统一功耗格式)。还有另一个广泛使用的标准,称为CPF(共同功耗格式)[5],,其功能与UPF类似。但由于这些标准正在新的UPF版本中逐步统一,因此我们仅关注UPF。UPF提供了一个清晰的设计流程,利用电源管理技术,并实现了RTL(寄存器传输级)功耗感知验证。它包含了在设计阶段(主要使用HDL(硬件描述语言)建模时)对低层次功耗相关方面进行规范的结构。通过这种方式,整个设计(功能HDL模型以及UPF电源管理)都可以得到验证。
UPF 的核心概念是提供一种将系统划分为电源域的手段。电源域是一组始终在相同供电电压水平下运行的设计模块。UPF 使设计人员能够指定哪些模块被分组到电源域中,电源域可以工作的电压等级,每个电源域的掉电条件,以及应在何处使用隔离单元和电平移位器等。
然而,该标准的使用仍然相当复杂(容易出错且耗时),尤其是在日益复杂的现代片上系统设计中。为了反映当前采用高于寄存器传输级的更抽象层次的趋势,即所谓的电子在系统级(电子系统级),统一功耗格式已更新至版本 3.0[7]。它能够在电子系统级模型中针对知识产权模块(知识产权)的上下文来指定和验证电源意图。该标准对功耗模型进行了规范化,设计人员可在其中指定知识产权模块在不同电源状态下的功耗。然而,知识产权模块的功耗表征方法不在本标准的范围之内。为了实现精确的功耗分析,这些数据可从知识产权模块先前的实现中获得,因此该方法高度依赖于设计复用概念。尽管算法模型可以综合为具有已知功耗表征的知识产权模块模型, 并随后使用 UPF 3.0 进行电源管理,但这会使自上而下设计流程复杂化, 并将灵活性限制在预先设计好的知识产权模块范围内。此外,电源管理的规范(例如电源网络、电源管理元件或电源开关)与该抽象级别不匹配(即使用了过多的低层次细节)。下一小节将介绍基于电子系统级的设计,以及在该设计流程中集成 UPF 所面临的问题。
2.2. 系统级设计
在利用电子系统级(ESL)的自上而下设计流程中,抽象层次的顺序如图1所示。在最高层次的抽象级别上,最广泛使用的建模方法基于 C或C++语言进行系统描述(SystemC [8]及其TLM扩展——事务级建模是最流行的),因为它们可用于算法和架构建模。抽象层次之间的自上而下转换通过综合过程实现——–高层次综合、逻辑综合以及布局布线过程。如今,该开发过程通常通过使用各种EDA(电子设计自动化)工具进行综合或验证来加速。RTL及较低层次,以及这些层次之间的转换,在各个方面都得到了此类工具的良好支持。关于ESL,一些EDA工具支持以SystemC/TLM形式定义系统架构,或支持以C/C++/ SystemC算法方式捕获功能。其中部分工具甚至支持高层次综合。这些工具中最著名的已在表1中总结。这些工具有助于更轻松地在设计流程中使用ESL。最初,ESL主要在工业界被用于验证目的(例如虚拟原型)。更高的抽象层次能够加快功能验证的速度。经过验证的ESL模型进一步作为黄金模型,用于与更复杂的RTL实现模型进行等价性检查。然而,现代EDA工具在高层次综合方面的进步使得ESL可以作为实现的起点。这意味着RTL模型可以根据某些预定义约束从ESL模型自动生成。这减少了设计中的人为错误数量,并缩短了验证时间。此外,自动化的高层次综合能够在更早阶段获得更准确的RTL设计分析结果,从而能更快地找到多个参数(功耗、性能、面积)之间的正确权衡。
如表1所示,SystemC基本上已成为ESL设计的标准。所分析的高层次综合工具提供的电源管理支持非常有限(除了简单的时钟门控或存储器架构选择)。另一方面,英特尔Docea功耗模拟器的电源管理能力高度依赖于设计复用;因此,它不适合自上而下的设计流程。统一功耗格式(UPF)的功耗意图规范的抽象层次对于ESL而言不够充分(即包含诸如供电网络或电源管理元件之类的低层次细节),并且其基于 ESL的功耗建模过于依赖设计复用(以获得准确功耗分析结果所需的功耗值)。然而,如果在ESL阶段省略电源管理规范,则在自动综合的 RTL模型中引入该规范将成为一种侵入性操作,需要巨大的手动工作量, 从而导致正确的功耗架构设计耗时过长。此外,由高层次综合EDA工具实现的多参数权衡将被打乱。因此,电源管理应从设计流程的初期就开始采用,因而需要对标准的低功耗设计流程进行扩展,以充分利用 ESL的优势(简洁且不易出错的规范、更快的验证)。将新的设计自动化技术集成到该流程中,应能实现更快且错误更少的低功耗SoC设计流程。一些基于ESL的电源管理方法已经开发出来,将在下一节中描述。但它们缺乏所需的抽象与自动化。因此,我们提出一种新的低功耗So C设计方法学,将标准低功耗设计流程扩展至系统级,结合当前方法的优点并消除其缺点。
| Tool | 供应商 | 语言 | 电源管理 | 高层次综合 |
|---|---|---|---|---|
| 英特尔Docea功耗模拟器[9] | 英特尔公司(DOCEA Power) | TLM | Yes | No |
| Stratus [10] | 楷登电子设计自动化公司 | C/C++/SystemC | 时钟门控 | Yes |
| Catapult [11] | 明导国际(Calypto) | C/C++/SystemC | 时钟门控 | Yes |
| 平台架构师[12] | 新思科技 | SystemC/TLM | No | No |
| Synphony C编译器 [13] | 新思科技 | C/C++ | 时钟门控 | Yes |
| Vista [14] | 明导国际 | SystemC/TLM | No | No |
| Vivado设计套件 [15] | 赛灵思 | C/C++/SystemC | 时钟门控 | Yes |
表1 所选系统级电子设计自动化工具概述。
3. 相关工作
电子系统级电源管理研究领域在过去几年中受到了关注。一些已发表的研究方法侧重于将功率管理规范扩展到系统级。
Mbarek 等人 [16]提出了一种框架,可在事务级(系统级的一部分)进行不同功耗架构的探索。该框架通过引入抽象UPF概念来增强现有的SystemC/TLM模型,并用于电子系统级仿真。增强型电子系统级模型随后作为RTL实现的参考模型,而该实现过程为手动操作,因此容易出错。Affes 等人 [1]进一步扩展了该框架,以纳入时钟管理功能。所提出的框架主要面向TLM功耗估算。系统组件的功耗必须预先已知,且将其引入设计中会增加额外的人工工作量。该方法的其他缺点包括:架构探索未考虑面积或性能等其他重要参数;此外,功耗管理采用与功能规范不同的语言和风格单独指定。在系统级,设计人员使用同一种语言描述系统规范的所有方面将更为合适。
米施卡尔拉和穆勒 [2]提出了一种基于SystemC的虚拟原型方法, 用于在电子系统级捕获电源意图。所采用的规范方法将UPF概念扩展到电子系统级,包括对电压关系、工作条件、事务级功耗状态等的抽象描述。该方法主要侧重于在时间解耦仿真中对电源意图进行建模。作者扩展了电源域UPF概念,将其每个电源域映射到一个时钟域。因此,电源域内的组件必须始终具有相同的供电电压状态以及相同的时钟频率。格吕特纳等人提出的COMPLEX框架代表了另一种虚拟原型方法。它能够在系统级评估不同的功耗策略。此类虚拟原型方法适用于自上而下的设计流程中的早期功耗架构探索。然而,与[1]类似,所分析的方法在向较低抽象层次缺乏自动化、功能与电源意图的分离规范,以及除功耗外其他重要设计参数的缺失方面存在相似的缺点。
与[16],Karmann 和 Ecker 类似,他们还将功耗意图模型和功耗数据模型引入ESL功能模型,用于功耗估算。该功耗意图模型基于 UPF标准概念,用于指定电源管理。功耗数据模型则是基于设计复用创建的,它利用了来自较低层次的功耗估算结果和工艺库的数据。因此,它并不适用于自上而下设计流程。同样,Gagarski 等人[19]提出了 SystemC的SCPower扩展,该扩展将功耗意图规范集成到SystemC模型描述中,并能够自动生成UPF。这些方法的缺点在于,所提出的功耗意图模型包含的信息抽象级别大致与UPF标准相当,因而只是被重写为标准格式。在电子系统级规范阶段指定诸如供电端口、供电网络、隔离单元或电源开关等低层次细节是不方便的。电子系统级方法论应尽可能地对细节进行抽象,并在寄存器传输级模型综合过程中隐式地引入这些细节。
徐等人提出了一种不同的方法[20]。该方法基于对组件在不同电源状态下的功耗需求进行标注,从而提高了电子系统级功耗估算的准确性。在仿真过程中分析性能数据,并计算整个系统的功耗。尽管该方法能够在功耗估算时考虑动态功耗管理,但无法建模基于统一功耗格式的功耗管理概念。该方法缺乏向寄存器传输级转换的自动化,且电子系统级与寄存器传输级电源管理之间的等效性难以验证。该方法适用于SoC架构探索以及确定合适的功耗管理策略。然而,功耗数据必须事先已知,因此不适用于自上而下设计流程。此外,所提出的功耗标注采用基于 XML的信息,因而其语言和风格与用SystemC描述的功能设计不一致。
类似的方法由勒布雷顿和维维特 [21] 以及布哈迪巴等人 [22] 使用。这些方法同样利用电子系统级功耗建模,以实现更快的仿真和不同功耗架构的探索。在这些方法中,组件的功耗信息也必须在电子系统级模型中手动标注(使用数据表或寄存器传输级估算)。所提出的功耗管理建模这些方法基于功耗状态模型;否则,它们不基于标准的UPF概念。这使得电子系统级与寄存器传输级电源管理之间的等效性验证变得复杂。fi 布哈迪巴等人还提出了使用流量模型来计算组件更精确的功耗剖面。该方法结合了温度感知仿真,从而能够探索电源管理策略对芯片温度和功能的影响。然而,流量模型带来了额外的开销(手动注释),并且与寄存器传输级设计分析(包括温度)相比,其结果的准确性值得怀疑。还有其他一些可用于探索功耗架构的电子系统级方法,但它们不基于标准的UPF概念,例如凯泽等人[22]、施特罗贝尔等人fi以及谢等人提出的方法。[23], Streubühr et al.[24],和 Hsieh et al. [25]。缺乏自动转换以及电子系统级模型与低层次模型之间复杂的验证是这些方法最大的缺点。
Ahuja 等人 [26]提出了一种方法,该方法侧重于基于统计回归功耗模型的高层次功耗估算。在较低层次上,该方法利用电子系统级仿真轨迹进行功耗估算。系统级的功耗降低主要集中在时钟门控技术上。然而,时钟门控的使用是以宏的形式直接在 C 源代码中手动标注的。基于基于 C 的规范,高层次综合工具在生成的寄存器传输级模型中实现时钟门控单元。这种方法的缺点是设计人员必须手动指定时钟门控的精确位置,这使系统级规范变得复杂。此外,该规范方法未包含其他可用且有效的功耗降低技术,例如电源门控或电压和频率调节。Qamar 等人 [27]提出了一个利用高层次综合的类似方法。所提出的低功耗高层次综合方法能够根据 SystemC 模型中的注解自动生成电源门控(称为电源关闭)所需的共同功耗格式命令。功耗分析在寄存器传输级的综合模型中进行。这是一种有前景的方法;然而,所使用的电子系统级规范方法更多地采用了寄存器传输级视角的电源管理。例如,设计人员必须指定关闭和隔离条件。这些信息随后仅以共同功耗格式风格重写。相比之下,采用系统级视角来描述需要执行的操作(例如,将模块断电),而不是具体实现方式(例如,隔离模块然后激活电源开关),会更为理想。
除了基于ESL的电源管理之外,研究领域还非常关注系统级功耗估算,例如Kornaros[28], Giammarini等人[29], Greaves和Yasin [30],或Rigo等人[31]。所开发的功耗估算方法支持架构探索,有助于选择最高效的高能效系统架构。各个被监控元件的能量消耗也需要手动指定。如果缺少此类信息,在某些情况下可以使用预定义的默认值。由于这些方法不包含电源管理的结构,因此不支持电子系统级电源管理规范,即无法探索不同的电源管理策略。结果是,如果在较低层次的设计中引入电源管理,则所得的电子系统级功耗估算结果与具有电源管理功能的SoC的实际功耗不符。
基于对现有方法和途径的分析,我们识别出它们的优点和缺点。据我们所知,目前尚未有发表的方法旨在结合现有方法以消除其弱点(例如抽象不足、缺乏自动化、验证不充分)。因此,我们决定提出一种这样的解决方案。一种基于电子系统级的新设计方法学,结合现有方法的优势,可使低功耗片上系统设计流程更加高效。基于标准的抽象系统级电源管理可参考文献[2,7,16]。如果电源管理的概念在两个抽象层次(电子系统级和寄存器传输级)上保持一致,则等效性更容易得到验证。电源管理和时钟管理的统一,作为在参考文献[1,2],中提出的方法将简化规范。在RTL级别生成完全标准化的(UPF)电源管理,如参考文献[9,18,19]中所采用的(通过更高层次的抽象和完全自动化加以改进),将确保与现有电子设计自动化工具的兼容性。在功耗架构分析过程中使用高层次综合(类似于[26,27]),应能提供更好的权衡(性能、功耗和面积)以及更精确的分析。这种利用更多自动化的方案还将减少人为错误的可能性。RTL实现阶段将更快完成,从而可以更早开始更为成熟的RTL验证过程。抽象电源管理应更易于理解,因此即使是对电源管理技术细节不熟悉的设计人员也能够进行低功耗设计。我们已经开发了这样的方法学,本文其余部分将对此进行描述。
4. 一种用于低功耗片上系统设计的新方法学
通过分析,我们为新的设计方法学明确了以下要求。
1. 设计过程应从系统级抽象开始,以应对现代设计的复杂性。
2. 系统级的规范应尽可能简单,以避免出现规范错误,因为不存在可用于验证的参考模型。
3. 应统一应用各种功耗降低技术到设计中,以简化其采用过程。
4. 应尽早发现错误,以避免困难、耗时且成本高昂的调试过程。
5. 设计分析应准确,以便能够在多个参数之间做出正确的权衡。
6. 设计和验证流程应尽可能自动化,以缩短开发时间。
7. 应尽可能减少在后期设计阶段的手动干预,以避免引入人为错误。
To fulfil 这些要求,所提出的低功耗系统设计方法学采用了一种新颖的设计flow(图2),将基于统一功耗格式的标准流程扩展至系统级抽象。基于统一功耗格式的设计flow 的步骤flow [4]保持不变;因此,在寄存器传输级及较低层次上可以继续使用现有的方法和工具。
所提出的方法从电子系统级开始,在电子系统级中,标准规范模型通过抽象的功耗管理规范进行扩展。电子系统级模型传统上要经过抽象过程
精化过程,该过程明确了所有功能细节。在此过程中,通常使用等价性检查(形式化或基于仿真的)来验证在各个精化阶段关键功能未发生变化。功率管理规范也参与精化过程,在此期间设计人员逐步完善电子系统级电源管理,直到其包含所有必要细节。在此过程中,所提出的静态分析有助于设计人员指定正确且完整的电源管理。在电子系统级模型充分精化后,通过高层次综合过程将其转换为寄存器传输级表示。高层次综合生成VHDL或Verilog的功能模型(取决于所使用的电子设计自动化工具)以及统一功耗格式的功耗意图规范。在高层次综合之后,使用所提出的等价性检查来验证功耗意图在此过程中未发生改变。在寄存器传输级,使用现有的电子设计自动化工具对RTL模型进行功能验证,并进行功耗方面的设计分析。根据设计分析结果,可以修改电子系统级电源管理规范,并重复高层次综合过程。这使得能够探索系统的多种功耗架构并找到合适的方案。
该方法学基于一种新的功耗意图规范方法fication,统一了功能与电源管理的设计风格。[32],所提出的抽象电源管理结合了多种精心选择的功耗降低技术,适用于系统级抽象。该方法学的基石是新颖的电源管理高层次综合过程[33],,以实现设计自动化。该方法学还集成了多种新的验证方法[34],,确保电源管理规范的正确性。这些方法在整合为单一方法学时所出现的问题已得到进一步改进。以下各小节将详细描述这些方面。
4.1. 功耗降低技术选择
所考虑的技术是众所周知的,通常在当前的低功耗设计中已实现。其描述可以在许多资料中找到,例如 [3,35–38]。本小节重点阐述选择这些技术并将其纳入所提出方法学背后的原因。选择标准主要基于对系统级抽象的适用性以及对最终功耗的影响。
时钟门控对动态功耗具有显著影响。在系统级抽象中,时钟信号可以由时钟同步变量表示。该技术的功能可被视为启用/禁用系统中整个同步模块(IP核)的操作。操作数隔离可防止非活动数据路径元件的切换。从系统级角度来看,它也可视为启用/禁用系统模块的操作,但其重点在于当前不需要的组合逻辑部分。这两种技术可以通过特定的电源状态在系统级进行建模,该状态由状态变量值表示。当模块处于此状态时,将停止其操作。
逻辑重构、引脚交换和晶体管尺寸调整是与较低抽象层次(逻辑或物理层次)紧密相关的技术。由于在规格阶段,设计人员并不知道如何系统将被实现时,这些技术无法在设计流程的早期阶段使用。此外,这些技术在现代综合工具中大多已实现自动化。衬底偏置技术依赖于具体的晶体管类型及其阈值电压。该技术可通过另一种特定的电源状态在系统级上应用——当模块处于该状态时,偏置被激活,阈值电压升高,从而降低漏电功耗。然而,由于面积需求,在更小工艺节点(低于65纳米)下该技术会失去有效性,因此在我们的方法学中将其省略。
电压缩放技术在多个供电电压等级之间进行切换。在系统级,指定诸如电压切换元件等低层次细节是不合适的。然而,各个模块的状态变量也可以反映该模块的供电电压等级。当状态变量改变其值时,模块会调整其供电电压等级。类似地,也可以使用多供电电压技术。其区别在于,反映模块供电电压等级的状态变量不随时间变化。这意味着,与电源电压相关的技术可以在电子系统级(ESL)使用,但需以高度抽象的形式呈现。频率缩放技术通常与电压缩放相结合。与前述技术类似,当分配给该技术的模块状态变量改变其值时,模块的工作速度也会相应调整。具有或不具有状态保持功能的电源门控是一种强大的漏电功耗降低技术,它能够关闭当前未使用的模块的电源。由于该技术本质上也涉及电源电压,因此这一概念可以通过前述的模块状态变量进行建模。当需要保留模块状态时,必须使用不同的模块状态变量值。
如第2节所述,存储器或总线分割和硬件加速技术属于针对各个IP核的微架构选择,可使这些模块内部采用其他功耗降低技术。它们意味着电源管理具有层次化特性,从而可在系统模块内部使用局部电源管理。
所提出的功耗意图规范基于电源管理,该电源管理从不必要的细节中抽象而来。它还结合了并非最初作为电源管理技术开发的技术(如时钟门控、操作数隔离、多供电电压),但这些技术可通过电源管理结构进行建模。因此,所提出的系统级电源管理规范以高度抽象的形式支持时钟与电源门控、电压和频率调节、操作数隔离以及多供电电压技术。
4.2. 一种新的功耗意图规范方法
Forthe specification purpose, the special states (电源状态) are assigned to the 系统模块 and the switching among these states is enabled. In order the 电源管理 to be efficient, the concept of 电源域 is supported, based on the UPF标准. It enables to group together the 系统模块 that are always in the same 电源状态. The required 电源状态 that are allowed at the 系统级 are provided in 表2.
| 抽象电源状态 | 功耗状态描述 |
|---|---|
| 正常 | 该模块(或单个电源域中的多个模块)在主供电电压等级下,以基本工作速度(频率)运行。无需显式指定 在此状态下激活了功耗降低技术。 |
| 不同电平# | 该模块在与正常不同的电压等级下和/或以调整后的速度运行。# 表示用于规范指定的序号 多个不同的级别。这些状态支持在设计中进行电压和/或频率调节以及使用多个固定供电电压。 |
| hold | 该模块停止运行但保持供电。此状态意味着启用了时钟门控和操作数隔离的功耗降低技术。 |
| off | 整个模块被关闭。在此状态下,启用无状态保持的电源门控。 |
| 关断保持 | 当模块处于关闭状态时,状态得以保持(状态元件仍保持供电)。此状态表示启用了带状态保持的电源门控。 |
表2 可能的电子系统级电源状态。
在系统级(规格阶段),设计人员必须将系统划分为电源域。因此,每个系统模块(组件)都必须被分配到一个电源域。如果该模块未被明确分配到任何电源域,则它属于所谓的顶层电源域,即始终工作在正常电源状态。电源域定义了一组该域(以及其内部所有模块)可以达到的电源状态。系统的电源模式则由各个电源域的电源状态组合而成。由于系统使用所有可能组合的情况不太现实,通常的做法是规定允许的组合,从而减少系统电源模式的数量。
为了集成所提出的电源管理规范,我们选择了广泛使用的 SystemC建模。为了不干扰现有电子设计自动化工具的支持,我们决定以C++语言库的形式实现支持电源管理结构的SystemC扩展,该扩展被命名为PMS(电源管理规范)。它旨在与SystemC库一起使用。该库的使用遵循基于C的库规则—需要通过预处理器include命令导入头文件。该库的一部分在算法1中进行了说明。
算法1 功率管理规范扩展库的一部分
#define NORMAL “正常” #define DIFF_LEVEL(i) “diff_
level”#i #define HOLD “保持” #
define OFF “关闭” #
define OFF RET “关闭返回”_ _#define PM(...)
PowerMode(__VA_ARGS__, NULL) #define PD(...)
PowerDomain(__VA_ARGS__,NULL) #define SetLevel(state,
voltage, frequency) static PowerMode POWER_
MODE(NULL); class PowerMode { std::vector¡std::string¿
状态; public: PowerMode(const char* 状态, ...); };
PowerMode::PowerMode(const char* 状态, ...) { va_list 参数;
va_start(参数, 状态); for (va_start(参数, 状态); 状态 != NULL; 状态 =va_arg(参数, const char*)) this‐¿状态.push_
back(状态); va_end(参数); } class PowerDomain { std::vector¡std::string¿ 状态; std::vector¡std::string¿ 组件;
public: PowerDomain(const char* 状态, ...); void
AddComponent(std::string 组件); };
首先,必须指定允许的电源状态。为了在编译时检查电源状态的语法,这些状态以预定义宏的形式进行指定。标识的数字实际的diff_级别的电源状态作为参数传递给宏,因为它无法以静态方式预先定义。由于SystemC基于C++语言,我们可以使用类定义来建模电源模式和电源域。这两个类都使用字符串字面量向量来保存指定属于该电源模式或电源域的状态。电源模式包含各个电源域的电源状态。电源模式中的状态数量必须始终与系统中电源域的数量相同。指定状态的顺序具有意义,即第一个状态表示系统中第一个指定电源域的状态,依此类推。电源域类包含一个额外的向量,称为组件(components), 用于保存分配给该PowerDomain对象的组件标识符。这些类的构造函数具有“可变参数”特性(即可接受至少一个字符串参数,且参数数量可变),以便规范具有可扩展性。问题在于参数数量未知,因此这种解决方案容易导致内存违规。为此,我们检查最后一个参数是否为 NULL。这是设计人员必须牢记的约束条件。为了减轻此约束,我们创建了额外的宏,作为这两种对象(PM和PD宏)的构造函数。这些宏接收参数,并在参数列表末尾添加一个NULL参数后调用实际的构造函数。通过使用这些宏,设计人员无需显式提供NULL参数。因此,设计人员有两种对象实例化选项(如下所示)。PowerDomain对象以类似方式实例化。
电源模式关闭正常关闭空_ 1(,,,);=电源模
式电源模式数量关闭正常关闭_ 2(,,);
请注意,通过使用宏,添加NULL参数被视为有效的规范(无差异)。这是一种推荐的实例化风格,因为设计人员无法导致内存违规(无论是 否带有NULL参数)。尽管可以指定电源模式,但我们需要保持系统的当前电源模式。为此,创建了一个静态名称为POWER_MODE的全局状态变量(以便高层次综合工具能够识别它)。该静态变量中的对象也是 PowerMode类的一个实例。由于最初不存在显式的电源域,此实例未分配任何状态。它旨在功能模型中用于指定系统电源模式的变化( POWER_MODE =power_mode1)。PowerDomain类的 AddComponent方法接收某个组件的字符串标识符,并将其添加到电源域列表中。这样,就指定了组件与电源域之间的分配关系并予以保留。SetLevel宏用于规范性能级别(即正常和diff_level状态下的实际电压和频率值)。性能级别规范对于检测两个电源域是否在相同的电压或频率级别下运行至关重要。这对于高层次综合过程非常重要,因此必须在电子系统级进行验证。实际电压也用于寄存器传输级的功耗估算。电子系统级规范避免了修改已综合的UPF规范的需求。该宏有三个参数。第一个表示电源状态——其名称,第二个表示电压值,最后一个表示频率值。单位也可以指定,但不是必需的——默认单位为V和兆赫兹。
为了说明 PMS 库的使用,我们提供了一个简单的案例研究,其中一个微处理器(中央处理器)通过内存管理单元(内存管理单元)与两个存储器(RAM1、RAM2)进行通信。该微处理器和存储器模块的 SystemC 功能描述基于参考文献 [39]中提供的 mu0和 ram0 VHDL 实体。此类演示的功能并不重要,因此在示例中省略。仅在 算法2 中所示的 SystemC/PMS 规范片段中提供了电源管理方面。
算法2 使用SystemC/PMS库的案例研究系统规范示例。
#include “systemc.h” #include “pms.h”
SC_MODULE(SoC){
//power‐management declarations
PowerDomain PD_CPU,PD_RAM1,PD_RAM2;
电源模式 PM1,PM2,PM3,PM4;
...//系统的一部分省略
SC_CTOR(片上系统){
//组件到电源域的分配
PD_中央处理器.AddComponent(“CPU”); 电源域数量_RAM1.AddComponent(“RAM1”);
电源域数量_RAM2.AddComponent(“RAM2”);
//电源域状态规范
电源域数量_中央处理器 =PD(正常,关闭);
电源域数量_RAM1= PD(正常,保持);
PD_RAM2= PD(正常,关闭_RET); //电源模式规范 PM1=PM(正常,正常,正常); PM2=PM(正常,正常,关闭_RET); PM3=PM(正常,保持,正常);
PM4=PM(关闭,保持,关闭_RET);
//初始电源模式规范
POWER_MODE =PM1
//性能级别规范 设置级别(正常,0.8,10);
...//端口映射和进程省略
}
};
此类规范将片上系统划分为三个电源域,即PD_中央处理器、PD_RAM1和PD_RAM2。每个域包含一个组件,对应其标识符(见图3)。内存管理单元未被建模为独立模块,而是作为片上系统模块的一个 SystemC进程(图中虚线所示)。它未分配到任何显式电源域,因此属于隐式的顶层功率域(即其功耗无法被管理)。
根据规范,作为PD_CPU电源域一部分的中央处理器组件可以在正常和关闭电源状态之间运行。RAM1可以在正常状态下运行,并且其操作可以在保持状态下停止。RAM2也可以在正常状态下运行,但还可以被下电同时保持其状态(off_ret)。规定了四种电源模式:PM1用于各组件的正常操作(即未激活任何功耗降低技术);PM2用于中央处理器和RAM1的操作(RAM2被下电,即对该组件激活带状态保持的电源门控);PM3用于中央处理器和RAM2的操作(RAM1在此模式中处于保持状态,即对该组件激活时钟门控和操作数隔离);PM4用于待机操作(中央处理器
被下电,RAM1停止运行,RAM2也被下电但状态被保存,即采用无状态保持的电源门控)。状态保持对中央处理器启用,时钟门控和操作数隔离对RAM1启用,带状态保持的电源门控对RAM2启用。系统的初始电源模式设置为PM1。最后,finally,正常 电源状态定义为由0.8伏特供电,工作频率为10兆赫兹。实际的电源模式切换在内存管理单元 进程(未在算法2中显示) 中建模。当中央处理器 与RAM1通信时,PM2电源模式被分配给 POWER_MODE变量。类似地,当使用PM3时激活RAM2。当处理完成 时,系统切换到PM4。
4.3. 指定电源管理的验证
当电源意图被指定后,必须对其功能正确性和结构正确性进行验证。然而,所提出的规格说明方法并未对电源管理对系统功能的影响进行建模。因此,功能正确性需要在寄存器传输级使用常用的验证工具进行验证。在早期的规格说明阶段,可通过多个自动验证步骤来验证预期电源管理的结构正确性和完整性。最关键的问题是检查各种电源管理结构之间的一致性,以及电源意图与功能规范之间的一致性。最基本的验证步骤包括语法和运行时检查。语法检查通过C++编译器实现,可发现规格说明中的任何语法错误。在此步骤中,基于宏的规格说明显示出其优势,因为只有预定义的抽象电源状态才是有效的。运行时检查采用常见的程序验证方法,在源代码中使用条件语句检测错误操作。例如,此步骤可发现对某个电源域重复赋值相同电源状态的情况。但运行时检查只能在执行期间使用,因此电子系统级模型必须是可执行的(在早期规格说明阶段并不总是可行)。最可靠的验证步骤是所提出的电源管理静态分析。它对指定的电源意图进行静态分析,并检查所有必需的数据是否存在。它分析电源域与电源模式之间的关系,以检测任何不一致性。例如,它可以检测到某个组件实例被分配到多个电源域、某个电源模式中使用的电源状态未在相应电源域中定义,或某个电源域不包含任何活动电源状态等情况。
为了说明所提出的静态分析能力,使用了上一节中的案例研究系统。由于提供的规范是正确的,因此根据下面的代码修改了PM4(加粗文本表示更改内容)。
= 电源模式数量电源模式数量保持关闭返回 DIFF_LEVEL ( 1 ) 4 ( ,, _ ) ;
在这种情况下,静态分析会发现 diff_level1 电源状态未分配性能级别。它还会检测到根据电源域规范,PD_CPU 不允许在 diff_level1 中运行。此外,它会检测到 PD_CPU 的关闭状态未在任何电源模式中使用,因此会通知设计人员该状态是冗余的。
不一致性错误可能导致高层次综合无法进行;因此,在综合之前必须进行静态分析。然而,它也可以作为早期规格阶段的独立步骤,以引导设计人员制定正确的功耗管理规范。需要注意的是,现有的C++编译器并不支持所提出的功耗管理静态分析(与语法和运行时检查不同),它需要一个实现提出方法的额外验证工具。我们使用了名为PMHLS的实验性工具,该工具实现了本文中描述的所有提出的方法。
4.4. 电源管理高层次综合
上一节中描述的规格说明是高层次综合过程(手动或自动化)的起点。它可以分为两部分:常用的功能高级综合(该过程的自动化有许多工具支持–总结于表1)以及面向电源管理的高层次综合。这一点在图4 中清晰地展示出来。在该图中,SystemC/PMS 代表使用所提出的 PMS 库来指定电源管理的 SystemC 模型。VHDL 代表使用 VHDL 语言描述的寄存器传输级功能模型。它也可以用 Verilog 描述–大多数电子设计自动化工具都支持这两种语言。UPF 代表基于标准格式的已综合的电源意图。
在此过程中,从功能模型中提取与功耗管理相关的信息,并补充在 RTL级正确生成UPF规范所隐式需要的功耗管理元件。所提出的电源管理高层次综合还能自动生成电源管理单元,并将其集成到RTL级的功能模型中。同时创建一个新的实体,该实体需要在综合后的系统功能模型的顶层实体中手动实例化。
因此,电源管理高层次综合本身可以分为两个过程:UPF 综合和 PMU 综合。UPF 包含电源管理的操作部分,即电源管理执行逻辑。PMU 代表电源管理的控制部分,为电源管理元件提供控制信号。UPF 综合的步骤如 算法3 所示。这些步骤的详细说明见参考文献 [33]。
算法3 在统一功耗格式中综合电源意图
从电子系统级规范中提取功耗管理相关信息。输出:UPF规范。
(1)基于电子系统级规范创建电源域。(2)基于性能级别分配创建供电端口。(3)基于抽象电源状态创建并连接供电网络。(4)基于影响电压等级的状态创建电源开关。(5)基于电源状态和电源域关系设置隔离。(6)基于电压状态和域关系设置电平转换器。(7)基于off_ret状态应用状态保持。(8)基于电源模式创建端口状态和电源状态表(PST)。
然而,并非所有电子系统级的功耗管理信息都从功能模型中提取。电源模式之间的切换已直接集成到SystemC的功能模型中;因此,只需进行如下修改,即可被功能高级综合工具识别。这种修改表示将POWER_MODE变量类型更改为枚举类型,电源模式标识符作为其枚举值。这确保了高层次综合工具的支持(枚举类型在SystemC、 VHDL和Verilog中均受支持)。在寄存器传输级中的电源模式切换实际上表示对应枚举值的无符号整数值之间的切换。该POWER_MODE值是电源管理单元的输入,电源管理单元根据其二进制表示确定电源模式。
为便于说明,图5给出了综合后的电源管理概览。
在VHDL中,原始功能模型包含电源管理策略算法(PMPA),即根据某些系统条件决定在电源模式之间进行切换。PMU同样用VHDL描述,包含电源模式确定部分(PMD)和电源状态机(PSM)。PMD根据输入电源模式的二进制表示(POWER_MODE值)的编码来确定控制信号。随后,PSM通过为UPF中指定的电源管理元件生成正确的控制信号序列,来处理向该目标电源模式的实际转换。UPF还包含电源域规格和电源网络。
对于之前几节中的简单案例系统,生成了一个相当大的统一功耗格式 file综合。然而,为了说明其复杂性,我们至少提供了生成的电源意图的一部分(算法4)。它仅表示用于关闭RAM2存储器电源的电源开关的规格、电源开关输出端口的电压状态的规格,以及包含一个隐式指定(瞬态)系统电源模式的电源状态表的规格。
算法4 统一功耗格式中综合后的电源意图的一部分
PD_RAM2域的电源开关
create_功耗_开关 电源域数量_RAM2_SW ‐domain 电源域数量_RAM2
输入_电源_端口 { vin_0_8 VDD_0_8_网络 } ‐output_supply_端口 { vout VDD_电源域数量_RAM2_net } ‐control_端口
{ ctrl_sig1 电源管理单元/电源域数量_RAM2_SW_ctrl1 } ‐on_state { state_0_8
vin_0_8{ ! ctrl_sig1 } } ‐off_state { state_0_0{ ctrl_sig1 } }
‐ack_端口 { ap 电源管理单元/电源域数量_RAM2_SW_ack { ! (ctrl_sig1) } }
‐supply 设置 电源域数量_top.primary
端口电压状态
add_port_状态 电源域数量_RAM2_SW/vout ‐状态 { state_0_8 0.8 }
add_port_state PD_RAM2_SW/vout ‐state { state_0_0关闭 }
电源状态表
create_pst PST ‐supplies { VDD_0_8_port
VSS_0_0_端口 PD_中央处理器_SW/vout PD_RAM2_SW/vout }
add_pst_state internal1 ‐pst PST ‐state { state_0_8
state_0_0state_0_0 state_0_8}
在VHDL中综合的PMU设计的一部分如算法5中的代码片段所示。它表示PMU转换逻辑中的单个when语句(PMU中最复杂的部分),用于指定从当前电源模式通过系统的下一个模式转换到目标模式的允许转换。这些模式由UPF中电源管理元件的控制信号值向量表示。代码中的注释提供了这些电源模式的抽象含义。iso表示域中隔离被激活的状态(在保持 抽象电源状态或瞬态情况下)。请注意,下一个模式要么直接是目标模式,要么是为了使电源管理正确运行而生成的内部瞬态模式。这是最后一种情况,其中目标模式为PM4,而下一个模式是一个激活所有域中的隔离。综合后的电源管理单元包含15个此类when语句,某个控制信号的单个错误值都可能损坏系统。因此,该综合过程的自动化确实非常有帮助。
算法5 用VHDL综合的电源管理单元的一部分
case 当前模式 is
当“000000” => –(正常,正常,正常)
如果 (TargetMode =“000000”) 那么
下一模式 <=“000000”; –(正常,正常,正常)
elsif (目标模式 =“010011”) then
NextMode <=“000010”; –(正常,正常,iso)
elsif (目标模式 =“000100”) then NextMode <=“000100”; –(正常,iso,正常)
elsif (目标模式 =“111111”) then
NextMode <=“001110”; –(iso,iso,iso)
end if;
⋯⋯——其他when语句省略
结束 case;
4.5. 综合后功耗管理验证
综合后验证主要针对两个方面:规范符合性验证和功能验证。第一个方面通过检查综合后的电源管理是否符合规范,即设计人员的电源意图是否得到保留,来进行验证。功能验证则检查集成了电源管理功能的系统是否按照规范正常工作。它验证电源管理元件以及电源状态或模式之间的切换是否会导致系统功能异常。由于在电子系统级(ESL)尚未验证电源管理的功能特性,因此必须在高层次综合之后进行验证。其优势在于可以在寄存器传输级(RTL)使用常用的方法和电子设计自动化工具。此外,还可以更准确地估算电源管理对系统功耗的影响。
针对综合后功耗意图保持性的验证,我们提出了一种独特的等价性检查方法。该方法将电子系统级电源管理规范和UPF功耗意图规范均转换为一种公共表示,并检查其等效性。之所以需要公共表示,是因为基于UPF的电源状态未反映工作频率。因此,将电子系统级的电源状态转换为相应的电压状态(类似地,电源模式也进行转换),从而生成电子系统级的提取公共表示。在UPF规范上使用一种类似于高层次综合的反向过程,从而生成寄存器传输级提取的公共表示。然后将两者进行比较以检查其等效性。等效性检查过程的概述如图6所示。
功耗感知功能验证fi利用现有的电子设计自动化工具,静态检查生成的统一功耗格式规范的完整性与正确性,并通过仿真验证其功能。为确保综合后的电源管理单元能正确生成控制信号序列,在电源管理高层次综合过程中也会自动综合电源管理单元的断言。这些断言能够在仿真期间检查正确序列是否被违反,并评估功能覆盖率。报告的错误信息可引导设计人员定位错误源。此外,提供的覆盖率测量结果会通知fi设计人员哪些电源模式已被验证,哪些仍需进行验证。生成的断言示例如算法6所示。在仿真期间,该断言检查当电源域断电时隔离是否已启用。代码采用SystemVerilog断言(SVA)语言编写。
算法6 SVA中生成的断言示例
属性 PD_CPU_iso_while_关闭;
@(posedge clk)
$rose(被测设备.电源管理单元.电源域数量_中央处理器_SW_ctrl1)
∣ ‐>被测设备.电源管理单元.电源域数量_中央处理器_iso_ctrl
在整个 ##[0:$]$fell(DUT.PMU.PD_CPU_SW_ctrl1) 过程中
endproperty
a_ 电源域数量 _ 中央处理器 _ iso_ while_ 关闭: assert property ( 电源域数量 _ 中央处理器 _ iso_ while_ 关闭 )
else
$error(“%t: 关闭时隔离已禁用!”, $realtime);
4.6. 方法论采用
对于已经使用功能高级综合的设计人员来说,该方法学的采用非常直接。设计人员应在功能规范阶段根据经验将系统架构划分为电源域。然后,需要为这些域分配电源状态,并指定基本的电源模式。由于抽象电源管理规范不会影响ESL模型的功能,因此设计人员无需担心功能会受到干扰。所提出的电源管理静态分析有助于创建结构正确且一致的规范。一种合适的方式来细化初步ESL电源管理规范用于对设计进行仿真。仿真可以揭示指定的电源模式切换中的任何差距,因为设计人员可以观察到组件状态。例如,当设计人员注意到某个电源域的状态为正常,但其内部组件处于非活动状态时,应在该时间段内对该电源域使用省电状态(例如保持或关闭_ret)。在高层次综合过程中,电源管理静态分析和等价性检查会告知设计人员是否存在异常情况。
综合完成后,需要在顶层功能设计实体中实例化综合生成的电源管理单元实体,并将POWER_MODE和时钟信号映射到PMU。在寄存器传输级进行功能验证期间,同时开展功耗分析,以验证电源管理对系统功能的影响。该步骤是当前统一功耗格式设计流程的一部分,即利用现有的方法和工具。完成功耗分析后,设计人员可以修改电子系统级规范并重新执行高层次综合。电源管理高层次综合比功能综合快得多,因此在已综合的系统架构基础上探索不同的功耗架构是一种良好的做法。然而,如果修改了电源管理策略算法或电源模式,则需要对相应的功能组件重新进行综合。应通过功耗、性能和面积之间的权衡,选择具有相应电源管理的合适系统架构。
5. 实验结果
我们将实验结果分为三组。第一组侧重于所提出的抽象电源管理规范方法的有效性确定,特别是与标准化的UPF形式相比,确定该规范的简化程度。第二组实验专注于对所提出的电源管理高层次综合过程的验证,通过使用专业验证工具验证综合后的RTL电源管理的正确性来实现。最后一个实验聚焦于前几节中使用的案例研究系统,以说明提出的方法。在该实验中,我们展示了所提出的方法学是可用的,并且提出的方法可以用于低功耗设计。
5.1. 功耗管理规范的简化
为了评估所提出的方法,我们生成了超过一万个用SystemC编写的电子系统级电源管理规范样本,并使用所提出的电源管理高层次综合方法综合出标准UPF规范。目标是通过规范所需的字符数量来比较UPF与 SystemC功耗意图规范的复杂性,这大致代表了设计人员手动创建规范所需的时间。因此,这种比较提供了对使用所提出的功率管理规范方法实现的简化。为了准确确定这种简化,我们对生成的样本中的电源模式数量、电源域数量、每个电源域的平均电源状态数以及每个电源域的平均实例数进行了缩放。第三和第四个参数采用了平均值,因为在各个电源域中具有相同数量的电源状态或实例的情况并不常见。
SystemC和UPF功耗管理规范的比较结果如图7所示。比值(纵轴)以对数尺度表示,代表电子系统级功耗管理规范相比寄存器传输级规范所需字符数量减少的倍数。因此,它实际上代表了规范简化程度(复杂度降低)。
对于生成的样本,实现的简化比率最高可达521.8倍。平均而言,电子系统级电源管理的复杂度比相应的统一功耗格式规范低约16.8倍。实现的最小简化比率约为2倍。实验已经证明,采用所提出的电子系统级电源管理规范是有益的,因为其对设计人员来说描述起来更简单。由于其更简洁的形式,规范中引入人为错误的机会更少,从而有可能缩短耗时的调试过程。由于电子系统级电源管理规范采用了增强的抽象,因此理解和实际使用也更加简单。
为了确定哪个生成的样本产生了最高的规格简化效果,我们将样本分为五组,每组包含相同数量的样本。样本根据报告的简化比率进行排序,因此第一组包含简化比率最高的样本,第五组包含简化比率最低的样本。表3列出了各组样本中监测参数的平均值。
| 组 | 电源模式 | 电源域 | 电源状态 | 实例 |
|---|---|---|---|---|
| 1 | 7.49 | 8.14 | 4.08 | 2.75 |
| 2 | 4.75 | 6.30 | 3.71 | 2.27 |
| 3 | 4.37 | 5.22 | 3.36 | 2.86 |
| 4 | 4.49 | 4.95 | 2.95 | 3.45 |
| 5 | 4.29 | 5.59 | 2.02 | 4.02 |
表3 基于简化比率的生成样本分组。
结果表明,在指定大量电源模式和电源域且电源状态数量较多时,可实现最高的简化程度。主要原因是,通过SystemC中的电源状态宏指定的电源状态会在UPF中生成电源管理元件(例如电源开关、隔离或电平移位器)。对电源模式的高度依赖性是由于电子系统级规范仅包含显式电源模式,而寄存器传输级规范还包含中间电源模式,这些中间模式被综合以在显式电源模式之间正确切换。当电源域数量较多时,这种依赖性进一步增强,原因是在UPF规范中,额外的供电端口带来了更多的电源状态。不确定性来源于UPF中中间模式的数量;随着该数量减少,简化比率仅依赖于显式电源模式的规范。由于电子系统级规范对电源管理元件进行了抽象,显式模式的规范在SystemC规范中占比较大,但在 UPF规范中仅占很小一部分。电源域规格的情况也是如此。电源域中实例的平均数量对简化产生负面影响。主要原因是,AddComponent方法在SystemC中将独立实例分配给电源域,而在UPF中,实例列表通过单条语句分配给一个电源域。因此,这需要在SystemC中,为实例分配电源域所需的字符数量比在UPF中更多。然而,当指定更多的电源模式和电源域时,该参数相比其他参数而言失去了简化效果(实例到域的分配不再那么重要)。
5.2. 综合功耗管理的验证
For verification of thesynthesized power management, we selectedfifteen power-management specification samples withvarious com-plexities. These samples were synthesized into theRTL form and ver-ified in theprofessional verification tool Modelsim SE 10.2c.Specifically, wehave used its UPF static analysis capabilities and itspower-aware simulation option. For thesimulation purpose, we havecreated the test-benches for thesamples and pseudo-randomly switchedbetween the power modes during the 10ms runtime. The experimentdata are provided inTable 4.
在表格的左侧部分,包含样本的参数,其中PM表示电源模式数量, PD表示电源域数量,PS/PD表示每个电源域的平均电源状态数,I/PD 表示每个电源域的平均实例数。表格的右侧部分包含电子系统级电源管理规范(ESL)、统一功耗格式规范(UPF)、电源管理单元描述( PMU)以及综合生成的断言(Assertions)的字符数量。最后一列(覆盖率)报告了通过生成的针对电源模式、电源状态和转换的覆盖率断言所达到的指令覆盖率。
电子系统级电源管理规范的字符数量从313扩展到1939,UPF从 1680扩展到13397个字符,PMU描述从3300扩展到586303个字符。因此,这些样本提供了足够的规范复杂性变化。这些样本通过所描述的方法成功进行了综合和验证,未报告任何错误。这证明了UPF规范的语法正确性和完整性,以及所综合的PMU在语法上的正确性,并表明其已准备好进行功能验证。为了达到100%的覆盖率,我们需要采用定向测试等方法,而非伪随机生成来产生激励。在仿真过程中,生成的断言还检查了由PMU产生的电源管理元件控制信号序列,从而进一步提高了对 PMU正确性的保证。UPF、PMU以及断言的字符总数远高于电子系统级电源管理规范所需的字符数量(最高约为641倍)。因此,所提出的方法相比第一次实验的结果(仅比较UPF,未包含PMU和断言)更具优势。在手动描述PMU和断言过程中引入的潜在错误准备被避免;因此,甚至节省了大量的验证时间。
| # | PM | PD | PS/PD | I/PD | ESL | UPF | PMU | 断言 | 覆盖率[%] |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 2 | 3 | 313 | 1680 | 3300 | 3863 | 100 |
| 2 | 3 | 2 | 2 | 2.5 | 500 | 2706 | 4452 | 4749 | 100 |
| 3 | 3 | 3 | 1.67 | 3 | 642 | 2850 | 4619 | 3194 | 100 |
| 4 | 5 | 3 | 4 | 2 | 643 | 6035 | 35205 | 25912 | 98 |
| 5 | 3 | 4 | 1.75 | 3 | 751 | 4658 | 8658 | 9488 | 100 |
| 6 | 3 | 4 | 2.25 | 3 | 760 | 4854 | 7017 | 10340 | 100 |
| 7 | 3 | 4 | 2.25 | 3 | 813 | 5678 | 10094 | 13433 | 97.5 |
| 8 | 10 | 3 | 3 | 2 | 862 | 5557 | 63304 | 17779 | 100 |
| 9 | 7 | 4 | 3.5 | 2 | 953 | 8778 | 142992 | 52330 | 81.1 |
| 10 | 7 | 5 | 3 | 2 | 1051 | 9399 | 131478 | 45150 | 96.1 |
| 11 | 10 | 4 | 4 | 2 | 1090 | 11605 | 586303 | 100721 | 85.5 |
| 12 | 10 | 5 | 2.4 | 2 | 1275 | 7443 | 199866 | 48111 | 89 |
| 13 | 5 | 5 | 3 | 5 | 1324 | 9039 | 107068 | 43833 | 91.2 |
| 14 | 3 | 10 | 2.2 | 2 | 1402 | 13397 | 67691 | 50911 | 99.2 |
| 15 | 5 | 10 | 2.1 | 3 | 1939 | 12232 | 214122 | 91620 | 82.4 |
表4 选定样本的功耗管理验证。
5.3. 案例研究系统评估
该方法学的有效性通过第4节中提到的实验性案例研究系统进行展示。为了将其复杂性与表4中的样本复杂性进行比较,我们在表5中总结了案例研究系统的相同参数。根据这些数据,功耗管理规范的简化效果非常明显。电子系统级功耗管理规范仅需402个字符。而寄存器传输级功耗管理则占用了13091个字符(UPF+PMU)。此外,用于验证的自动生成的断言又占用了8217个字符。因此,即使对于这样一个简单的案例研究,使用提出的方法也使功耗管理规范简化了32倍(包含断言时为 53倍)。
为了证明所提出的方法确实可用于低功耗设计,我们提供了由Power Compiler[40](版本K‐2015.06‐SP4)和技术库NanGate_15 nm_OCL [41]生成的案例研究系统的功耗估算数据。表6中的结果表明,使用电源管理使系统的面积增加了10%;然而,功耗降低了18%。
由于电子系统级电源管理的修改非常简单直接,设计人员可以轻松生成另一种设计方案。得益于所提供的自动化功能,设计人员可以在短时间内探索系统的各种功耗架构,从而根据功耗、性能和面积之间的权衡选择最合适的设计方案。
| PM | PD | PS/PD | I/PD | ESL | UPF | PMU | 断言 | 覆盖率[%] |
|---|---|---|---|---|---|---|---|---|
| 4 | 3 | 2 | 1 | 402 | 3291 | 9800 | 8217 | 100 |
表5 案例研究系统的参数
| 总单元面积 | 总功耗 [ μW] |
|---|---|
| 无电源管理 | 2107.933 |
| 有电源管理 | 2324.103 |
| 差异 | +10,26% |
表6 案例研究系统的功耗和面积估算
6. 与相关工作的比较和讨论
所提出的方法以及相关工作之目的,并非是在较低抽象层次上使用常见的UPF/CPF来进一步降低功耗,而是应对系统的复杂性并提高生产效率。我们认为,所有提出的方法在实验中均已证明可用于降低功耗(如我们在前一节中所述)。由于这些方法学大多基于某些已实现的支持性库或工具进行评估,而这些库或工具并未公开,因此要客观地比较多种方法学是困难的。然而,基于分析,我们可以比较相关方法和方法学(包括所提出的方法)在提高生产效率方面的各个方面,以说明所提出方法的优势与不足。这种比较总结于表7。
在表格中,方法学(Methodology)列表示与所提出的方法类似的工作。下一列(规范抽象,Specification abstraction)表示用于电源管理规范的抽象层次。该列使用三个值:高(High)——规范不包含低层次细节;中等(Medium)——某些方面以足够的抽象程度进行描述,但仍存在一些低层次细节;低(Low)——大部分规范包含低层次细节,通常在RTL层次使用UPF/CPF描述。单一风格(Single style)列表示电源管理方面是否直接在系统功能规范中使用相同的规范风格进行描述,或者是否使用了另一个规范文件、语言和风格。支持的技术( Supported techniques)指该方法学所支持的功耗降低技术。我们使用以下缩写表示这些技术:CG——时钟门控,OI——操作数隔离,VS——电压缩放,MV——多电源电压,FS——频率缩放,PG——电源门控。高层次综合(High‐level synthesis)列指明该方法学是否支持将指定的电源意图自动转换为较低抽象层次的标准形式。下一列(功耗分析, Power analysis)说明功耗分析是在系统级进行(速度较快但精度较低)还是在较低层次进行(速度较慢但精度较高)。最后一列(验证, Verification)指明该方法学是否提供某种手段来验证所指定的电源管理。
表格中的比较表明,有多种方法可以提供足够高的功耗管理规范抽象层次。然而,其代价是无法与较低抽象层次建立系统性的关联。该抽象规范并非基于较低层次所使用的标准概念,因此很难甚至无法在寄存器传输级(RTL)推导出等效的电源意图。我们通过提出一种基于统一功耗格式(UPF)概念的高抽象层次规范,克服了这一限制,从而能够自动综合生成RTL级的电源意图。大多数规范方法都基于关注点分离原则,因此电源意图是使用与功能模型不同的规范风格和语言,在一个独立文件中进行指定(或建模)。这对于设计复用以及在寄存器传输级建模阶段开发系统的下一代或其部分模块具有重要意义(作为一种应对设计复杂性以提高生产力的方法)。然而,这种方法并不适用在系统级抽象中,抽象模型应足够简单。通用规范风格使得捕获功能和功耗意图更加容易。因此,我们为抽象规范选择了单一的规范语言和风格。所提出的方法支持最大数量的功耗降低技术,而其他方法仅针对部分技术。另一方面,我们涵盖了所有经评估适用于系统抽象层次的技术(见第4节)。一些已分析的方法支持在RTL生成标准功耗意图规范,从而加快开发进程。然而,大多数方法仅仅是将规范从一种形式转换为另一种形式,因为其指定的细节量相同。其他方法在支持的功耗降低技术方面则较为有限。只有所提出的方法支持真正的电源管理规范高层次综合,该过程接受高度抽象的规范,并自动推导出在RTL级别生成 UPF规范所需的底层细节。此外,该方法还自动综合出相应专用电源管理单元的功能模型(在VHDL中),用于驱动UPF中的控制信号。正如 第3节中已经指出的,所有支持电子系统级功耗分析的方法都需要对系统模型进行某种形式的功耗标注。这种标注通常来自组件的先前实现(使用设计复用概念),这不适合我们工作中所针对的自上而下的设计方法。如果功耗值不可用,则采用粗略估计,导致功耗分析极不准确。因此,我们认为采用高层次综合过程并结合后续的寄存器传输级功耗估算是一种更合适的方法。关于功耗管理验证能力,大多数方法至少支持一些基本的电源管理方面检查,以满足电子系统级仿真的需求。然而,与现有分析方法相比,我们提出了最稳健的电源管理验证方法。语法和运行时检查,以及早期静态分析,引导设计人员在系统级开发出完整且一致的电源管理规范。在电源管理高层次综合过程中的静态分析确保所有必要信息都被包含,而等价性检查则确保综合过程保持了电源意图。此外,在RTL级别的功耗感知功能验证过程中(功耗架构探索不可避免的环节),采用基于断言的验证来确认由综合生成的电源管理单元所产生的控制序列的正确性。它还能实现基于断言的覆盖率度量,确保仿真过程中所有电源模式都已被激活。这些验证步骤大多数是自动化的,因此验证流程的准备和调试时间得以缩短。
| 方法学 | 规范抽象 | 单一风格 | 支持的技术 | 高层次综合 | 功耗分析 | 验证 |
|---|---|---|---|---|---|---|
| 所提出的方法 | High | Yes | 计算机图形学, 操作数隔离, 速度传感器, 模型视图, 满量程, 压力梯度 | Yes | RTL | Yes |
| PwClkARCH [1] | 中等 | No | CG, VS, FS, PG | No | ESL | Yes |
| Ref. [2] | High | No | 速度传感器, 满量程, 压力梯度 | No | ESL | Yes |
| 复杂 [17] | High | No | 计算机图形学, 模型视图, 压力梯度 | No | ESL | Yes |
| Ref. [18] | Low | No | OI, MV, PG | Yes | ESL | No |
| SCPower [19] | Low | Yes | OI, MV, PG | Yes | ESL | Yes |
| 参考 [26] | 中等 | Yes | CG | Yes | RTL | No |
| LP‐HLS [27] | 中等 | No | CG, PG | Yes | RTL | No |
| 其他 | High | No | 速度传感器, 满量程, 模型视图, 压力梯度 | No | ESL | No |
表7 相关方法和方法学的比较。
7. 结论
本文提出了一种利用系统抽象层次和高层次的低功耗系统设计新方法学用于设计自动化的综合。本工作的目标是消除类似方法学中已识别的弱点(如前一节所述)。所提出的方法直接基于标准的UPF设计流程;因此,在较低层次上可以继续使用现有的验证、分析或功耗估算方法和设计自动化工具。该方法的关键优势在于功率管理规范得到了简化,这直接符合通过抽象来应对现代设计复杂性的趋势。实验表明,与具有相同电源意图的UPF规范相比,采用所提出的方法在系统级进行功率管理规范描述时,其复杂性平均降低了约16.8倍(以规范所需的字符数量衡量)。考虑到针对专用电源管理单元的自动化综合过程本身并未包含在系统级规范中,因此进一步减少了整体复杂性。增强的自动化程度降低了在设计中引入人为错误的可能性,从而减轻了验证负担,特别是耗时的调试过程。尽管在基于UPF的设计流程中增加了一个设计阶段,但总体开发时间减少了数天甚至数周的手动工作量。在初始功率管理规范阶段引入自动验证步骤有助于生成结构正确且完整的规范。实验结果表明,所提出的方法在低功耗系统设计中是可用且有效的。
本文提出的工作为电源管理高效应用的进一步改进打开了大门,而这些改进在其他现有方法学中难以实现。未来的工作将致力于在系统规范期间完全抽象化电源管理,并将其隐式地自动引入设计中。这将包括系统到电源域的自动划分、电源状态向各域的自动分配、时钟域边界的自动同步,以及根据当前需求自动确定合适的电源模式。这将进一步简化规范,使得即使不熟悉功耗降低技术的设计人员也能更轻松地设计高能效系统。
208

被折叠的 条评论
为什么被折叠?



