已经达到SoC设计限制的动态功率估算
眼下设计去世的不断演进,对设计的要求也越来越高。而设计尺寸的增长液成为EDA验证工具的负担。动态功率估算工具就是其中之一。本文就谈谈已经达到SoC设计限制的动态功率估算。
总有一些刺激因素诱使着客户频繁升级他们的移动设备。其中包括更多功能和改进的用户体验,更具吸引力的用户界面,更轻的重量、更持久的电池寿命等等,不胜枚举。从各方面考虑,似乎持久的电池寿命位居榜首,而更长的电池寿命直接关系到更低的功耗。
自从五十年前Noyce和Kilby发明平面集成电路以来,微电子产品的功耗经历了一段稳定下降期。平面技术使得缩放(缩小)固态器件成为可能。晶体管尺寸越小,同一区域内容纳的晶体管数量就越多,切换速度就越快,所消耗的能量就会越少,而芯片运行时的温度也会越低(相较于相同数量的晶体管而言)。
“Doublegate FinFET”,作者:Irene Ringworm,发布在英语维基百科上。通过维基共享资源依据CC BY-SA 3.0协议获得授权。
在历史上,微电子产品发展的衡量标准一直着眼于场效应晶体管中源极和漏极之间硅通道的长度(被称为工艺技术节点)。上世纪60年代初,该节点为50微米。十年后,这一数字下降到了1微米以下,而到了2003年,则达到100纳米以下,开启了纳米技术时代。
在前二十年,由于漏电问题,晶体管未切换且空闲时的静态功耗远小于晶体管切换状态下的动态功耗,小到可以忽略不计。到了180纳米时,静态功耗开始飞速上升,到了2005年,由于节点降到了65纳米以下,静态功耗超过了动态功耗。
不必担心。FinFET或3D晶体管的发明及时地拉住了滑向消失深渊的平面晶体管。
FinFET预计可减少多达90%的静态泄漏电流,并且仅使用等效平面晶体管50%的动态功率。与平面等效晶体管相比,FinFET晶体管在同等功耗下运行速度更快,或在同等性能下功耗更低。有了FinFET,设计团队可以更好地平衡产量、性能和功率,满足各个应用程序的需求。
功率估算挑战
如前所述,更低的工艺节点带来了更高的晶体管密度,这使设计团队有机会在其中加入越来越多的功能。如今,在最大型的设计中,晶体管数量超过了100亿。遗憾的是,设计尺寸的增长趋势势不可挡,这也一直都是 EDA验证工具的一个沉重负担。动态功率估算工具即是其一。我们可以假定,电路的动态功耗与电路在运行时发生的逻辑转换次数成比例。因此,要精确地估计和优化数字电路的功率,我们需要记录每个时钟周期内每个设计元素的切换活动,并将该活动馈入工具执行功率相关的任务中。
在不跟踪相应周期的情况下记录切换活动可获得运行时段内的平均功耗。通过添加按周期记录的信息可以跟踪峰值功耗。
我们直觉上会假设记录切换活动的准确性会随着设计说明从高层次抽象下降到门级,进而又下降到晶体管级而增加,原因是可用的设计详细信息越来越多。
现在的困境是,在电子系统级(ESL),设计人员在对比多个架构、多种场景或软件算法并实现最佳功率优化方案上拥有了前所未有的灵活性。糟糕的是,在说明级别,功率估算却不够准确。在门级,可以获得的详细信息极少,灵活性也非常有限,仅可支持完成边缘优化,在晶体管级更是如此。而在寄存器传输级(RTL),似乎可以实现最佳折中。既可以获得足够的详细信息来实现功率的适当估算,又有足够的灵活性来实现较大的功率优化。
动态功耗在很大程度上取决于应用于其主要输入设备的激励或在嵌入式SoC设计时代由嵌入式处理器执行的嵌入式软件所触发的设计内的活动。也就是说,通过启动操作系统或执行驱动程序、应用程序或诊断。
诸如模拟器和仿真器等验证引擎是用于跟踪切换活动的完美工具。要提醒的是,模拟器的执行速度主要取决于设计级别说明、设计大小和应用于设计的激励类型。为了减轻并消除此类依赖,同时为了处理嵌入式软件,只有仿真器可以在合理的时间段内执行这一挑战性任务。
截至目前,估算功耗一直采用两步法:第一步,模拟器或仿真器会在一个交换格式 (SAIF) 文件中跟踪并累积整个运行过程中的切换活动,或在快速信号数据库(FSDB)文件中按周期记录每个信号的切换活动。第二步,使用一个馈入SAIF文件的功率估算工具计算整个电路的平均功耗,或使用馈入FSDB文件的功率估算工具计算设计时间和空间内的峰值功率。
上述机制对于SoC设计而言有两个问题。SAIF和FSDB文件巨大且几乎无法管理,且需要长期维护。在十亿门设计时代,这两个问题结合在一起使上述方法没有了用武之地。