首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

数字IC低功耗设计入门(二)——门级电路低功耗设计优化(1)!

数字IC低功耗设计入门(二)——门级电路低功耗设计优化(1)!

三、门级电路低功耗设计优化
  (1)门级电路的功耗优化综述
  门级电路的功耗优化(Gate Level Power Optimization,简称GLPO)是从已经映射的门级网表开始,对设计进行功耗的优化以满足功耗的约束,同时设计保持其性能,即满足设计规则和时序的要求。功耗优化前的设计是已经映射到工艺库的电路,如下图所示:
    
  门级电路的功耗优化包括了设计总功耗,动态功耗以及漏电功耗的优化。对设计做优化时,优化的优先次序如下:
    
由此我们可以找到, 优化时,所产生的电路首先要满足设计规则的要求,然后满足延迟(时序)约束的要求,在满足时序性能要求的基础上,进行总功耗的优化,再进行动态功耗的优化和漏电功耗的优化,最后对面积进行优化。
  优化时先满足更高级优先权的约束。进行低级优先权约束的优化不能以牺牲更高优先权的约束为代价。功耗的优化不能降低设计的时序。为了有效地进行功耗优化,需要设计中有正的时间冗余(timing slacks)。功耗的减少以时序路径的正时间冗余作为交换,即功耗优化时会减少时序路径上的正的时间冗余。因此,设计中正的时间冗余越多,就越有潜力降低功耗。
  通过上面的描述,对门级功耗优化有了一下了解之后,这里先介绍一下静态功耗优化的方法——多阈值电压设计,然后介绍基于EDA工具的动态功耗的优化,接着介绍总体功耗的优化;在最后介绍一种常用的门级低功耗的方法——电源门控。电源门控我放在明天发表,今天的内容主要就是围绕静态、动态、总功耗来写。


  (2)多阈值电压设计
①多阈值电压设计原理
  由于半导体工艺越来越先进,半导体器件的几何尺寸越来越小,器件中的晶体管(门)数越来越多,器件的供电电压越来越低,单元门的阈值电压越来越低。由于单位面积中的单元门越来越多,功耗密度高,器件的功耗大。因此,设计时,我们要对功耗进行优化和管理。在90nm或以下的工艺,静态功耗要占整个设计功耗的20%以上。因此,使用超深亚微米工艺时,除了要降低动态功耗,还要降低静态功耗。在超深亚微米工艺,单元门的阈值电压漏电功耗(静态功耗)有如下图所示的关系:
      
由图可见,阈值电压Vt以指数关系影响着漏电功耗。阈值电压Vt与漏电功耗和单元门延迟有如下关系:
        阈值电压Vt越高的单元,它的漏电功耗越,但门延迟越长,也就是速度
        阈值电压Vt越低的单元,它的漏电功耗越,但门延迟越短,也就是速度
我们可以利用多阈值电压工艺库的这种特点,进行漏电功耗的优化,设计静态功耗低性能高的电路。
  一般的设计中,一个时序路径组((timing path group)有多条时序路径,延迟最大的路径称为关键路径。根据多阈值电压单元的特点,为了满足时序的要求,关键路径中使用低阈值电压的单元(low Vt cells),以减少单元门的延迟,改善路径的时序。而为了减少静态功耗,在非关键路径中使用高阈值电压的单元(high Vt cells),以降低静态功耗。因此,使用多阈值电压的工艺库,我们可以设计出低静态功耗和高性能的设计。上面的描述如下图所示:
          



②门级网表/RTL代码的多阈值电压设计
  多阈值电压设计可以在门级网表或者RTL代码的时候就进行,也可以在后面布线后进行。门级网表/RTL代码的多阈值电压设计(或者说是静态功耗优化)流程如下所示:
      
一个对应的示例脚本如下所示:
    set   target_library   "hvt.db   svt.db   lvt.db"
    ······
    read_verilog   mydesign.v
    current_design   top
    source   myconstraint.tcl
    ······
    set_max_leakage    -power   0mw
    compile
    ······
与以前的脚本不同,设置target_library时,我们用了多个库。上列中,目标库设置为 "hvt.db   svt.db   lvt.db"脚本中使用set_max_leakage_power命令为电路设置静态功耗的约束。在运行compile命令时,Power Compiler将根据时序和静态功耗的约束,在目标库选择合适的单元,在满足时序约束的前提下,尽量使用Svt或Hvt单元,使优化出的设计性能高,静态功耗低。
  PS:如果在Physical Compiler工具(现在我们使用DC的拓扑模式)里做漏电功耗优化时,我们可以保留一点正的时间冗余(positive slack),使电路不会在极限的时序下工作.这些时间冗余量也可被后面其他的优化算法所使用。设置时间冗余的命令如下:
    set   physopt_power_critical_range   时间量

返回列表