功率估算挑战
如前所述,更低的工艺节点带来了更高的晶体管密度,这使设计团队有机会在其中加入越来越多的功能。如今,在最大型的设计中,晶体管数量超过了100亿。遗憾的是,设计尺寸的增长趋势势不可挡,这也一直都是 EDA验证工具的一个沉重负担。动态功率估算工具即是其一。我们可以假定,电路的动态功耗与电路在运行时发生的逻辑转换次数成比例。因此,要精确地估计和优化数字电路的功率,我们需要记录每个时钟周期内每个设计元素的切换活动,并将该活动馈入工具执行功率相关的任务中。
在不跟踪相应周期的情况下记录切换活动可获得运行时段内的平均功耗。通过添加按周期记录的信息可以跟踪峰值功耗。
我们直觉上会假设记录切换活动的准确性会随着设计说明从高层次抽象下降到门级,进而又下降到晶体管级而增加,原因是可用的设计详细信息越来越多。
现在的困境是,在电子系统级(ESL),设计人员在对比多个架构、多种场景或软件算法并实现最佳功率优化方案上拥有了前所未有的灵活性。糟糕的是,在说明级别,功率估算却不够准确。在门级,可以获得的详细信息极少,灵活性也非常有限,仅可支持完成边缘优化,在晶体管级更是如此。而在寄存器传输级(RTL),似乎可以实现最佳折中。既可以获得足够的详细信息来实现功率的适当估算,又有足够的灵活性来实现较大的功率优化。
动态功耗在很大程度上取决于应用于其主要输入设备的激励或在嵌入式SoC设计时代由嵌入式处理器执行的嵌入式软件所触发的设计内的活动。也就是说,通过启动操作系统或执行驱动程序、应用程序或诊断。
诸如模拟器和仿真器等验证引擎是用于跟踪切换活动的完美工具。要提醒的是,模拟器的执行速度主要取决于设计级别说明、设计大小和应用于设计的激励类型。为了减轻并消除此类依赖,同时为了处理嵌入式软件,只有仿真器可以在合理的时间段内执行这一挑战性任务。
截至目前,估算功耗一直采用两步法:第一步,模拟器或仿真器会在一个交换格式 (SAIF) 文件中跟踪并累积整个运行过程中的切换活动,或在快速信号数据库(FSDB)文件中按周期记录每个信号的切换活动。第二步,使用一个馈入SAIF文件的功率估算工具计算整个电路的平均功耗,或使用馈入FSDB文件的功率估算工具计算设计时间和空间内的峰值功率。
上述机制对于SoC设计而言有两个问题。SAIF和FSDB文件巨大且几乎无法管理,且需要长期维护。在十亿门设计时代,这两个问题结合在一起使上述方法没有了用武之地。
|