前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >低功耗设计方法-电源门控设计(六)

低功耗设计方法-电源门控设计(六)

作者头像
数字IC小站
发布2022-08-26 18:37:45
6730
发布2022-08-26 18:37:45
举报
文章被收录于专栏:数字IC小站数字IC小站

电源门控设计验证--RTL仿真

接下来我们考虑在RTL级验证电源门控电路的问题。这是一个挑战,因为硬件描述语言没有在RTL级别提供描述电源连接的机制。为了模拟电源门控,我们需要扩展Verilog—通过修改代码或使用一组单独的命令来描述电源连接和电源切换。

统一功耗格式(UPF)定义了电源门控的语言格式和仿真语义。UPF标准的大部分内容都涉及到电源门控策略的实施:这方面在第11章实现电源门控中进行了讨论。在这里,我们将仅限讨论仿真电源门控的问题。

EDA公司正在迅速实施UPF并提供自动模拟电源门控的能力。对于那些正在使用不支持UPF的模拟器的人来说,可以通过在RTL中添加特殊代码来实现大部分UPF仿真语义,可以手动或通过脚本的方式。

在RTL级别模拟电源门控所需的关键功能包括:

  • 电源门控的功能建模(包括在电源门控时强制输出X)
  • 隔离单元的功能建模
  • 保存和恢复的功能建模
  • 电源门控/保持/复位优先级的功能建模

除仿真外,还应增加断言和功能覆盖,以验证控制网络的正确序列和极性。

在RTL中推断电源门控行为

第一步是模拟关闭一个区块的效果。

UPF提供了一种机制(一组tcl命令),用于定义电源域(一组Verilog模块)和电源域的一组电源(电源和地面电源网)。

图5-10显示了我们想要仿真的设计的电源连接。Verilog模块my_module (实例U1)有一个Header开关,用于控制模块中所有逻辑的电源。电源门控控制器下拉pwr_req信号以关闭模块,并确定pwr_req以使模块上电。信号pwr_ack是确认信号,表明交换机已完成上电/下电。在RTL级别,它只是一个pwr_reg的缓冲版本。在门级网表中,它将有真正的延迟。

上述设计的UPF描述可能如下所示:

如果在仿真时包含此UPF代码,则会发生以下情况:

当pwr_req拉低(请求断电)时,开关将关闭U1中的所有单元的电源。也就是说,所有的寄存器都将其输出设置为X,U1的所有输出端口都设置为X。所有进程都变为非活动状态。同时,pwr_ack设置为低,通知电源控制器电源完全关闭。UPF支持为确认信号分配延迟,但对于RTL仿真,我们使用默认的零延迟。

当pwr_req拉高(请求恢复供电),然后开关打开电源到U1中的所有单元。同时,pwr_ack设置为高值,通知电源控制器电源已完全打开。

在RTL中推断电源门控和保持行为

对于使用保留寄存器的设计,下一步是修改RTL以进行行为建模:

•对保持初始化保持状态变量到“X”以在 SAVE 操作之前捕获无效的 RESTORE。

•将寄存器状态采样到用于“SAVE”操作的额外推断保留状态变量

•上电时在所有寄存器输出上强制“X”

•从保留状态重新初始化状态“RESTORE”操作上的变量

•正确建模电源门控/保持/复位/时钟的优先级以确保正确排序

同样,我们可以通过添加到我们的UPF 代码或通过编写脚本来直接修改RTL 来做到这一点。

UPF 提供命令来为保留寄存器以及保存和恢复控制信号指定“始终开启”的电源网络。默认情况下,set_retention 命令会将电源域中的所有寄存器转换为保留寄存器。

UPF指定这些命令以下语义。我们从与之前相同的示例开始:

与添加UPF代码,将表现为如果我们添加了以下两个过程:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数字IC小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 在RTL中推断电源门控和保持行为
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档