芯片设计降低功耗的方法

电子说

1.3w人已加入

描述

 

 

      功耗是芯片中比较重要的一个性能指标,有时甚至可以决定一个芯片的成败。众所周知,前段时间闹得沸沸扬扬的“骁龙火龙”事件,就大大影响了这款芯片的市占率。对于工业级和车规级的芯片,功耗的高低体现的不是很明显。对于消费级芯片(如手机CPU,IoT芯片等),由于往往应用在小型移动设备中,低功耗设计就显得尤为重要。

 

        有业内专家曾经指出,在不同的设计层次,进行功耗优化的效果也不同。下表显示了在一个产品的不同周期,可以减少功耗的百分比。

 

 

设计层次 降低功耗百分比
版图级 <5%
晶体管级 5%
门级 10%
RTL级 20%
系统级 >50%
                  从芯片层级,降低功耗的方法可以从工艺和设计两方面入手。其中,工艺的优化是fab厂的工程师需要考虑的,作为一名芯片码农,主要考虑的就是设计层次。从设计层面,降低功耗的方法主要有下面两点:做门控时钟,做模块并行。
   

门控时钟介绍



        一般来讲,时钟树贯穿于整个芯片内部,由大量的buffer和反相器组成。时钟信号作为芯片中toggle率最高的信号,功耗可高达整个芯片功耗 的30%,甚至更高。加入门控时钟(clock gating,cg)电路,可大大降低时钟树的toggle行为,从而降低开关功耗。此外,时钟引脚开关行为的减少,寄存器的内部功耗也会减少。门控时钟是减少功耗的有力手段,在时钟被门控关闭后,该时钟网络和其中的寄存器都会停止翻转,因此功耗会显著减低。一个典型的门控时钟设计如下图所示:
 

芯片

 

        对于时钟源clk_source经过一个额外的与门U2A,当clk_en为高时,clk_source能过通过到达U1A触发器,当clk_en为低时clk_source无法到达触发器。当clk_en为低时,触发器及其时钟网络中的所有组合逻辑停止翻转,out端保持不变。由于clk_source经过了U2A与门,所有会产生一定的时钟偏移。在波形分析上,下面这个图可以比较好的理解门控时钟的概念,只有当clk_en为高的时候,clk_out=clk_in,否则,clk_out=0。

 

芯片

 

cg方法1:使用与逻辑



        这个也是最简单的方法,直接将时钟使能控制(门控)信号与时钟做"与"逻辑。这个办法简单粗暴,但是也有一个严重的缺点:会有毛刺。当clk为低的时候,clk_en可任意变化,gclk都是低。但当clk为高的时候,clk_en必须保持不变,才能保证没有毛刺,那什么东西能让clk_en保持不变呢?答案就是:锁存器
 

芯片

 

cg方法2:加入锁存器



        在clk为低时锁存器连通、clk为高时锁存器锁住,如下图:芯片

          波形图如下,可见当clk为低的时候gclk为低没跑,但clk为高的时候,gclk的值可看作是clk上升沿采样的clk_en的值。所以使用Latch可以有效地锁存clk_en值,同时不影响clk的周期性。Latch门控时钟的本质是clk上升沿锁住了clk_en值,让clk为高时clk_temp不会翻转,所以消除了毛刺。
 

芯片

        其RTL代码如下:

  •  
  •  
  •  
  •  
  •  
  •  
  •  
always@(*) begin  if(clk)    clk_temp = clk_en;  else    clk_temp = clk_en;endassign gclk = clk & clk_temp;

cg方法3:使用标准单元库



        虽然使用 latch 可以解决门控时钟毛刺的出现,但是时序也需要严格的约束。FPGA 或 IC 设计时,综合库中往往会有集成门控逻辑单元。此类门控逻辑单元经过了大量的更新迭代和验证,使用起来更加的方便、安全。因此一般情况下,门控时钟的设计也都会直接调用专用的集成门控逻辑单元。调用方式和基本的与门、缓冲器等基本单元类似,直接例化即可。

  审核编辑:汤梓红

 


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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分