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

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

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

③布线后的多阈值电压设计
  上面是门级网表/RTL代码的多阈值电压设计,下面简单介绍布线后的多阈值电压设计,流程如下图所示:
        
相应的一个示例脚本如下所示:
    set   target_library   "hvt.db   svt.db   lvt.db"
    read_verilog   routed_design.v
    current_design   top
    source    top.sdc
    ······
    set_max_leakage    -power   0mw
    physopt   -preserve_footprint    -only_power_recovery  -post_route  -incremental
physopt命令中使用了“-poat_route”的选项,特别用于进行布线后的漏电功耗的优化。优化时,单元的外形名称(footprint)保留下来,原有的布线保持不变。




④多阈值电压设计与多阈值库的报告
  进行漏电功耗的优化时,Power Compile将报告如下的漏电优化的信息:
      
LEAKAGE POWER的列(Column)展出了内部优化的漏电成本值。它和报告出来的漏电功耗可能不一样。我们用“report_power”命令得到功耗的准确的报告。
======================================================================
  我们现在来看一下多阈值库。多阈值库定义了两个属性,一个为库属性default_threshold_voltage_group,另一个为单独库单元的属性threshold_voltage_group。然后报告多阈值电压组的命令是:report_threshold_voltage_group.我们可以使用多阈值库的这两个属性,报告出设计中使用多域值库单元的比例,一个示例的脚本如下所示:
    set_attr   -type string  lvt.db:slow  default_threshold_voltage_group  LVt
    set_attr   -type string  svt.db:slow  default_threshold_voltage_group  SVt
    set_attr   -type string  hvt.db:slow  default_threshold_voltage-group  HVt
    report_threshold_voltage_group
报告得到的结果如下所示:
    



  (3)基于EDA工具的动态功耗优化
  前面介绍了静态功耗的优化,下面介绍动态功耗的优化。动态功耗优化通常在做完时序优化后进行。动态功耗优化时,需要提供电路的开关行为,工具根据每个节点的翻转率,来优化整个电路的动态功耗。用compile/physopt命令可以同时对时序和功耗做优化。设置动态功耗的命令为:
            set_max_dynamic_power  xxmw.(一般设置为0)
  动态功耗优化的流程如下所示:
          

动态功耗的优化的实现如上面所示。优化过程用了很多技术比如插入缓冲器、相位分配之类的。由于这些都是power compiler在背后自动实现(或者说是进行低功耗优化时工具使用的原理),不需要我们进行设置,因此这里不进行介绍。


  (4)总体功耗优化
  前面分别介绍了静态功耗和动态功耗的优化方法。我们可以把它们结合在一起,进行整个设计总功耗的优化。总功耗是动态功耗和静态功耗的和,总功耗的优先级比动态功耗和静态功耗高。总功耗优化时,工具尽量减少动态功耗和静态功耗的和。优化时如果减少了漏电功耗增加了动态功耗,但它们的和减少了,优化是有效的。反之亦然。我们可以通过设置开关,使动态功耗优化和静态功耗优化用不同的努力级别(effort levels)和权重(weights)进行优化。
  总功耗的优化流程如下图所示:
          

脚本中,target_library设置为多阈值电压的库,用于做静态功耗的优化。读入含有开关行为的saif文件,用于约束动态功耗的优化。在设置总功耗的约束时,我们可以在set_max_total_power命令中使用静态或/和动态功耗权重(weight)的选项,使工具在优化时,偏重于静态或动态功耗。假设P、Pd和Pl分别为总功耗、动态功耗和静态功耗,Wd和Wl分别为动态功耗和静态功耗的权重,则
        总功耗P = (Wd*Pd+Wl*P1)/Wd
  我们可以在DC或PC中设定只对功耗做优化。这时候,工具仅优化设计的功耗,而不会对更高优先级的约束做任何的优化和修正设计规则DRC违例。但是这种优化也不会使设计的更高优先级约束的性能变差和引起DRC违例。这种优化的优点在于运行时间较短,可用于优化设计的动态功耗、静态功耗和总功耗。在DC和PC中,只能以增量编辑的形式工作。
  PC中只对功耗做优化的命令如下:
    set_max_total   -power  0  mw
    physopt    -only_power_recovery
  DC中只对功耗做优化的命令如下(由于现在PC在DC中,因此下面的脚本更常用):
    set   compile_power_opto_only   true
    set_max_leakage_power  0  mw
    compile  -inc
返回列表