0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何通过优化RTL减少功耗

数字芯片实验室 来源:数字芯片实验室 2024-04-05 09:15 次阅读

随着各种消费类设备智能化的巨大增长,这些应用正变得更加以数据为中心data-centric和计算密集型computation intensive。从IC设计的角度来看,这增强了早已经存在的power vs area trade-off的挑战。

对于功耗估算来说,架构阶段为时过早,物理设计阶段为时已晚。有一种趋势是在项目的RTL阶段分析power hot spots。与后期分析相比,基于 RTL 的功耗分析更快、更容易执行,迭代时间更短。

本文介绍了在 RTL 级别应用的一些功耗优化技术。

消费类电器(电池驱动型)的大幅增加使功耗优化成为大多数片上系统 (SoC) 的基本需求。

VLSI行业的早期阶段,功耗分析被认为是一种后端活动。但随着芯片复杂性的增加,必须将功耗分析转移到前端阶段,以确保正确的估计和优化,仅在后端阶段进行优化就无法满足要求。

此外,动态功耗计算很大程度上取决于驱动到 SoC 的输入激励;因此,使用功能验证向量输入进行分析似乎是必须的。因此,业界开始在 RTL 阶段进行功耗分析。

ASIC设计的不同阶段,都有功耗优化的余地。

系统划分为电压域是在架构阶段完成的,即使在单个电压域下也能进行优化。当处理器处于休眠模式时,对电路进行Power gating(唤醒逻辑除外)可减少功耗浪费。这些是用于降低功耗的一些传统方法。在多核处理器设计中,多个电压域允许根据工作负载控制每个内核的电源电压。在较高电压下工作的核以较高的频率工作,而施加较低电压的核可以使用较低的频率。

内存组织和模块级时钟门控则是架构级优化的另一个领域。

综合阶段的功耗降低归因于晶体管尺寸调整和cell合并,以降低开关活动。另一种方法是将高开关活动的net分配给电容较低的引脚,将低开关活动的net分配给具有较高电容的逻辑引脚。综合工具还通过将数据使能转换为时钟使能来实现时钟门控。通过具有不同阈值电压的cell映射设计中的非关键路径和关键路径来优化漏电功耗。

RTL level的功耗优化主要集中在降低register level的信号活动上。本文主要介绍 RTL 优化,它从更精细的级别实现功耗的优化控制。

II. 低功耗RTL

通常,实现 RTL 功耗优化包括对设计的以下方面进行优化。

寄存器级时钟门控减少开关活动

基于有限状态机(FSM)的上游和下游逻辑路径门控

数据路径未启用时对数据路径进行门控

减少组合电路中的冗余活动

本节介绍一些优化技术,方案和编码示例。

A. 时钟门控

在模块级别插入Clock gate是一种普遍的降低功耗的方法。但是,只有在功耗需求非常严格的情况下,才采用寄存器级的Clock gate,这是由于寄存器级的Clock gate也会增加面积成本。

为了在寄存器级别启用Clockgate,对于RTL的编写方式是有一定的要求的。另一种选择是手动配置综合工具,为选定的寄存器插入Clockgate。在复杂的设计中,第二种选择是不可行的。在这种情况下,应该利用RTL 的编写方式自动综合出Clockgate。

考虑场景,当 FIFO 满并写入时,生成 fifo wr 错误信号。示例代码1不会综合出Clock gate,而示例代码2会综合出Clock gate。

Listing 1. Code without CG Inference

always @(posedge clk or negedge reset)
if (reset = 0)
fifo_wr_err <= 0
else
fifo_wr_err <= fifo_full & fifo_wr_en ;

Listing 2. Code with CG Insertion

always @(posedge clk or negedge reset)
if (reset = 0)
fifo_wr_err <= 0
else
if (fifo_wr_en)
fifo_wr_err <= fifo_full;

1) 时钟门控效率:在不研究时钟门控效率的情况下插入Clockgate也可能会反方向增加功耗。需要根据以下因素估计时钟门控效率

总线中被时钟门控的比特数

门控占总时钟周期的百分比

数据在使能的Clockgate内toggle

仅当寄存器上的输入发生变化时才启用该门控。

Listing 3. Improved Clock Gating Efficiency

always @(posedge clk or negedge reset)
if (reset = 0)
fifo_wr_err <= 0
else
if (value_en)
fifo_wr_err <= nxt_fifo_wr_err;
assign nxt_fifo_wr_err = fifo_full & fifo_wr_en;
assign value_en = fifo_wr_err ˆ nxt_fifo_wr_err;

2) Clock Gating TradeOff:当我们努力实现 100% 的时钟门控效率时,系统的面积将会增加。为了避免这种情况,我们可以TradeOff。在这里,我们组合了多个寄存器的使能,允许触发器输入处会有些冗余切换。这种TradeOff的默认值的建议是 3-4,这意味着在 3-4 个寄存器之间共享一个公共enable,但代价是Clock Gating效率降低。

写入错误和读取错误生成enable可以组合使用,以降低面积成本。

Listing 5. Combined Clock Gating Example 2

always @(posedge clk or negedge reset)
if (reset = 0)
fifo_wr_err <= 0
else
if (fifo_en)
fifo_wr_err <= nxt_fifo_wr_err;
always @(posedge clk or negedge reset)
if (reset = 0)
fifo_rd_err <= 0
else
if (fifo_en)
fifo_rd_err <= nxt_fifo_rd_err;
assign nxt_fifo_wr_err = fifo_full & fifo_wr_en;
assign nxt_fifo_rd_err = fifo_empty & fifo_rd_en;
assign fifo_en = fifo_wr_en | fifo_rd_en;

B. 基于FSM的控制

基于FSM状态生成的信号可用于对发送和接收的所有逻辑进行门控。

Listing 6. Enable Generation based on FSM

assign transmit_cg_en = ˜state_tx[IDLE];
assign receive_cg_en = ˜state_rx[IDLE];

C. 数据路径运算

数据路径运算模块(如乘法器)可能会在输入端进行不必要的toggle,即使未启用相应的计算。因此,以下技术可降低功耗。

时钟门控为数据路径操作提供输入的时序逻辑

在输入端使用锁存器或者使用使能门控输入

Listing 7. Gating Data Operator Input Toggling Method1

always @(posedge clk or negedge reset)
if (reset = 0) begin
mul_in1 <= 0
mul_in2 <= 0
end
else
if (mul_en) begin
mul_in1 <= nxt_mul_in1;
mul_in2 <= nxt_mul_in2;
end

Listing 8. Gating Data Operator Input Method 2

assign mul_in1 = data_in1 &
{DATA_WIDTH{mul_en}};
assign mul_in2 = data_in2 &
{DATA_WIDTH{mul_en}};

D. 减少组合逻辑的toggle

组合逻辑的功耗可以通过避免不必要的输入toggle来控制。这里可以考虑一个多路复用器作为示例,它是组合逻辑的常见模块。

在下图给出的示例电路中,我们有一个由两个packetizers访问的共享数据存储器。在这里,我们确实有明显的功耗浪费,因为当packetizer1 访问数据时,packetizer2 的输入将切换toggle,反之亦然。

338c6f52-eef9-11ee-a297-92fbcf53809c.jpg

功耗更优化的设计将把输入门控到packetizer中的 MUX。

339c7cb2-eef9-11ee-a297-92fbcf53809c.jpg

如果我们能把内存拆分成几个部分,我们就可以进行更细粒度的gate,从而产生更有效的门控效率。但缺点是routing congestion和面积成本。

三、RTL功耗分析工具

ASIC 设计流程正在使用 RTL 分析工具在早期阶段考虑分析功耗。

33a9fcde-eef9-11ee-a297-92fbcf53809c.jpg

RTL设计文件使用VCD、SAIF或FSDB格式的仿真激励文件,针对时钟和数据toggle产生的功耗进行精心设计和分析。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5037

    浏览量

    117765
  • IC设计
    +关注

    关注

    37

    文章

    1264

    浏览量

    102963
  • soc
    soc
    +关注

    关注

    38

    文章

    3750

    浏览量

    215724
  • 片上系统
    +关注

    关注

    0

    文章

    160

    浏览量

    26409

原文标题:通过优化RTL减少功耗

文章出处:【微信号:数字芯片实验室,微信公众号:数字芯片实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    射频识别芯片设计中时钟树功耗优化与实现

    TypeC协议的UHF RFID标签基带处理器的的优化和实现。##降低功耗主要方法##RTL阶段手工加时钟门控##综合阶段工具插于集成门控单元##时钟树综合阶段优化
    发表于 03-24 14:36 3829次阅读

    如何在不改变RTL代码的情况下,优化FPGA HLS设计

    InTime。 前言 高层次的设计可以让设计以更简洁的方法捕捉,从而让错误更少,调试更轻松。然而,这种方法最受诟病的是对性能的牺牲。在复杂的 FPGA 设计上实现高性能,往往需要手动优化 RTL 代码,这也意味着从 C 转化得到 RT
    的头像 发表于 12-20 11:46 1485次阅读
    如何在不改变<b class='flag-5'>RTL</b>代码的情况下,<b class='flag-5'>优化</b>FPGA HLS设计

    IC芯片功耗有哪些降低方法? 

    :一是可以通过优化布线减少功耗,互连正在开始支配开关功耗,就像在前几个工艺节点支配时序一样。今天,设计师有能力
    发表于 06-29 16:46

    IC功耗控制技术

    支配开关功耗,就像在前几个工艺节点支配时序一样。右图表明了互连对总动态功耗的相对影响。今天,设计师有能力通过布线优化减少
    发表于 10-08 22:06

    为什么要优化FPGA功耗

    无论从微观到宏观、从延长电池寿命到减少全球变暖的温室效应等等,各种不同因素都在迅速推动系统设计人员关注节能问题。一项有关设计优先考虑事项的最新调查指出,大部分工程师已把功耗排在首位,或者是将其紧跟在性能、密度和成本之后。在功耗
    发表于 08-08 07:39

    怎样通过软件控制的方式来优化并降低单片机的功耗

    究竟怎样才算低功耗?小于5mA?小于1ms?小于100uA?怎样通过软件控制的方式来优化并降低单片机的功耗?低功耗的范围大概在哪?
    发表于 07-08 06:25

    从ESL到RTL,低功耗设计再下一城

    从ESL到RTL,低功耗设计再下一城 对于低功耗半导体设计来说,没有唯一的解决方案,它需要芯片设计工程师以及EDA供应商的协作努力,并越来越多地把重
    发表于 09-19 10:08 1219次阅读

    RTL功耗优化

    在我们针对 PC 图形、视觉计算和应用处理器的高性能、低功耗设计方法中,RTL 功耗优化是非常关键的一步。NVIDIA Corporation 硬件工程部总监 Dan Smith 讲道
    发表于 09-11 11:40 9次下载
    <b class='flag-5'>RTL</b><b class='flag-5'>功耗</b><b class='flag-5'>优化</b>

    ASIC低功耗设计详解及相关书籍推荐

    功耗设计是一个整体的概念,意思是它在每个设计层次上都可以进行功耗优化——算法层次的优化RTL级代码的
    的头像 发表于 02-02 17:20 5748次阅读

    用Elaborated Design优化RTL的代码

    在Vivado FlowNavigator中有一个Elaborated Design,如下图所示,属于RTL Analysis这一步对应的设计。可能很多工程师都没有使用到,而实际上对于代码优化,它是很有帮助的。
    的头像 发表于 10-21 10:56 4541次阅读
    用Elaborated Design<b class='flag-5'>优化</b><b class='flag-5'>RTL</b>的代码

    (五)门级电路低功耗设计优化

    (1)门级电路的功耗优化综述  门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)是从已经映射的门级网表开始,对设计进行
    发表于 11-07 11:05 19次下载
    (五)门级电路低<b class='flag-5'>功耗</b>设计<b class='flag-5'>优化</b>

    如何降低面积和功耗?如何优化电路时序?

    1、如何降低功耗? (1) 优化方向: 组合逻辑+时序逻辑+存储 (2) 组合逻辑:   (a)通过算法优化的方式减少门电路   (b)模块
    发表于 02-11 15:30 2次下载
    如何降低面积和<b class='flag-5'>功耗</b>?如何<b class='flag-5'>优化</b>电路时序?

    RTL设计中如何做到低功耗设计

    做芯片第一应该关注的是芯片的PPA(Performance, Power, Area),本篇浅显的部分讨论,第二个 P,Power功耗,在RTL设计中如何做到低功耗设计,对于移动设备续航的十分重要,不要让你的芯片徒增
    的头像 发表于 04-13 08:12 1706次阅读

    英诺达发布RTL功耗分析工具助推IC高能效设计

    英诺达发布了自主研发的EnFortius®凝锋®RTL功耗分析工具,可以在IC设计流程早期对电路设计进行优化
    的头像 发表于 11-01 10:28 356次阅读

    英诺达发布RTL功耗分析工具,助推IC高能效设计

    (摘要:英诺达发布了自主研发的EnFortius®凝锋®RTL功耗分析工具,可以在IC设计流程早期对电路设计进行优化。) (2023年11月1日,四川成都)英诺达(成都)电子科技有限公司发布
    发表于 11-01 09:51 155次阅读