下冰雹 · 2021年06月09日

SoC设计之功耗 -- UPF

锲而不舍,金石可镂。

-- 荀况

前面的文章里,讲了一些SoC低功耗相关的设计方法,比如多电压域和电源开关等,《SoC设计之功耗 -- Power Gating》,《SoC设计之功耗 -- Multi Voltage》。基本上是以讲解概念为主,今天来讲一点具体实现的东西。

托EDA工具的福,在多电压和电源开关设计中,需要前端做的逻辑设计非常少,绝大部分工作是在综合和物理设计阶段完成的。这点也好理解,对于逻辑设计工程师来说,电源网络是透明,不可见的,所以跟电源相关的这些设计方法也是不需要关心的。但是必须有一种办法,可以把逻辑设计和物理设计衔接起来才行。这就需要UPF了。

UPF的全称是Unified Power Format,其作用是把功耗设计意图(power intent)传递给EDA工具,从而帮助实现物理设计。这就类似于综合时的约束,是把跟时序相关的设计意图传达给EDA。说简单一些,UPF就是一些tcl命令,系统架构师通过这些命令的组合,把真实的低功耗设计意图传递给工具。下面是UPF的spec中的解释。

WeChat Image_20210609095349.png

UPF发展到现在,已经成为IEEE的标准(IEEE Std 1801-2018),目前是3.0版本。主流的EDA工具都会支持UPF。下图是S家的低功耗设计流程图。像SDC文件一样,UPF文件要单独编写,在综合阶段作为输入文件送给Design Compiler。综合完成后,DC会生成一个UPF文件给ICC,在物理设计阶段就能看到了level shifter,isolation cell,retention cell和power gating cell了。同时,在验证阶段,也要做一些有关低功耗的仿真工作,这时也需要UPF文件。

WeChat Image_20210609095419.png
图1  Synopsys低功耗设计流程

为了让大家有个更清晰的认识,编了一个小的demo。SoC构成非常简单,一个MCU作为控制器,一个功能模块U1,一个功耗控制器U2。假设,U1工作在高电压1.2V,MCU和U2工作在低电压1.0V。当系统处于空闲状态时,可以关闭U1的供电,以减少静态功耗,电源开关的控制信号由U2模块给出。为了简化描述,本demo中不支持DVFS,并省略功耗控制的逻辑设计部分。

有了上面的约定条件,我们可以知道,现在有了两个电源域,分别定义为VH(下图红色)和TOP(蓝色)。

WeChat Image_20210609095453.png
图2  UPF demo

还记得前面提到的,在RTL里面可是看不到供电信息的,我们必须把这个信息告诉工具才行。所以,第一步就是描述电源信息。

WeChat Image_20210609095504.png

图3  在UPF中描述电源信息

现在,EDA工具里的视图就是下面的样子。

WeChat Image_20210609095608.png
图4  添加电源信息后的视图

由于U1模块可以做电源关闭,所以要加上power gating,开关信号由功耗控制单元U2给出(忽略具体信号名)。

WeChat Image_20210609095647.png

图5  在UPF中描述PG

WeChat Image_20210609095658.jpg
图6  添加PG信息后的视图

因为U1模块可以关电,所以至少要对其输出信号要做隔离,以保证U1下电后不会影响其它模块正常工作。

WeChat Image_20210609095711.jpg
图7  在UPF中描述isolation信息

WeChat Image_20210609095722.png
图8  添加isolation信息后的视图

为了保存U1模块下电前的状态,以便U1再次上电后恢复状态,要添加一些retention cell。

WeChat Image_20210609095732.png
图9  在UPF中描述retention

WeChat Image_20210609095742.png
图10  添加retention信息后的视图

接下来,是对高低电压间的信号转换添加level shifter。

WeChat Image_20210609095851.png
图11  在UPF中描述level shifter

WeChat Image_20210609095915.png
图12  添加level shifter信息后的视图

到此,还差最关键的一步,需要建立一张power table。

WeChat Image_20210609095925.png
图13 power table

以上仅仅是展示一个UPF的demo,里面的一些语法细节我并没有仔细推敲,大家还是以spec为准。实际的SoC低功耗设计肯定要比这个demo复杂得多。

最后提一句,对于设计来讲,isolation和retention还是会影响功能的。比如,假设这个demo中,isolation没做好,U1模块下电后,其输出值没有置到合理值,很可能会影响MCU的正常工作;或者是retention没做好,U1模块再次上电后,不能恢复下电前的状态,造成系统紊乱。综上,对于这部分的低功耗设计,必须要做相应的功能仿真。

作者:老秦谈芯
来源:https://mp.weixin.qq.com/s/l48mtq5rzPF1oXLU35GmiQ
作者微信公众号
qrcode_LaoQinTanXin_1.jpg

相关文章推荐

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
20201
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息