电子说
过往的文章我们谈了好多优化功耗的手段,显然,功耗不能等流片以后直接测试芯片功耗。在EDA阶段我们就要有办法对功耗进行一个仿真。
这篇文章我们以PTPX为例,讲讲芯片在设计阶段是如何仿真功耗的。
1 常见的标准单元库功耗模型
在讲PTPX之前,先简单讲讲标准单元库的模型。
如上图,实际上电路都可以建模成一个drvier, 一个receiver, 以及中间的传输路径。
实际上,为了描述上面这个系统,功耗仿真中标准单元库有两种功耗模型:
·NLDM (Non Linear Delay Model)
·CCS(Composite Current Source)
1)NLDM模型
这种模型driver model认为是一个内阻恒定的电压源,receiver model是认为是一个电容,显然,输出电压是时间的线性函数。
我们从输出曲线上也能看到,这种模型其实是比较粗暴地,只要三个点就能确定。在65nm以下很不精确,所以我们有了CCS模型。
2)CCS模型
这种模型是Synopsys提出的。提高了精确度。driver model变成了一个非线性的符合电流源,电流随电压和时间变化。receiver model变成了两个电容的并联。
得到的大致曲线如下图。
实际上,PTPX两种模型都支持,一般先进工艺在标准单元库中要提供CCS模型的曲线。
2 功耗是如何计算的
对功耗模型有了一个大致了解以后,我们继续搞明白PTPX计算功耗的原理。PTPX的功耗是分部计算的。
功耗主要是有leakage power和dynamic power两部分组成的。
1)Leakage power
我们先说这个,leakage power。leakge power顾名思义,到处漏掉的电流。
主要分析起来,有两种
·intrinsic leakage power, 源极和漏极之间的漏电流。上图中,电流I1,I2,I3都算。
·gate leakage power,栅极和源漏之间的漏电流。上图I4算gate leakage power。评论区有专业人士说这个很小,看了一下ptpx breakdown的值,确实不大。应当可以忽略。
这些静态功耗的参数,都要写在lib文件中,供PTPX调用,直接拟合曲线即可。
2)Dynamic Power
动态功耗,主要也是两种:
Switching power。如上图蓝线,这个也容易理解,我们要驱动电路,这个CL电容是要充放电的。这个充放电的功耗就是switching power。
上面的公式中C是负载电容,V是电压,f是翻转频率。应当好理解。有时候f也会被写成a*f, 翻转率乘以频率。
Internal power。如上图绿线,这个表现在零一切换的时候两端晶体管同时导通时,有个短路电流。我们称之为internal power.
显然,直接等于短路电流乘以电压。
同样,lib会直接提供必要的参数,供ptpx来计算动态功耗。
3)功耗计算小结
我们看上面这张反向器的图。上面四种功耗都有
·Leakage Power
·intrinsic leakage power, 图中Ilk电流造成的功耗。
·gating leakge power, 图中Igl电流造成的功耗。
·Dynamic power
·switching power, 图中Isw造成的功耗。用于充放电容。
·internel power. 图中Isc造成的功耗。其实就是短路电流造成的功耗。
至此,你应该能看懂PTPX功耗报告中各部分功耗是怎么来得。
3 PTPX的工作流程
知道了PTPX计算功耗的类型,接下来我们大致讲讲,PTPX的处理流程。
总结起来主要8个步骤。
·step0: 使能功耗仿真,就是个开关,总要打开的。
·step1: 选择仿真模式。PTPX有两种功耗仿真模式。一种是算平均功耗(averaged), 另一种是根据波形详细算(time_based), 这两种模式具体怎么算我们后面详细讲。
·step2: 读入设计数据和库文件。其实主要是两部分,网表文件(verilog,.v)和库文件(synopsys database,.db, 提供NLPM或者CCS模型)
·step3: 设置仿真条件。主要是仿真温度和电压。PTPX根据温度和电压,根据db文件中提供的参数来计算功耗。
·step4: 指定翻转率数据。这个地方,average模式和time_based模式提供的文件有区别。后面我们详细讲这两种模式下怎么提供文件。
·step5: 这一步提供一些额外仿真设置,按需设置,没什么特殊的。
·step6: update power。真正开始跑仿真。
·step7: report_power。将报告报出来。
4 总结
这篇文章讲了功耗仿真的第一部分,包括了功耗模型、功耗计算方法、ptpx的基本流程。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !