采用MIPS内核的SoC门级时序仿真及功耗估计方法
2008-07-24
作者:金良哨1,2,郑世宝1,2,王
摘 要: 时序验证是SoC片上系统设计中的关键问题。本文在嵌入MIPS内核的HDTV解码SoC芯片设计" title="芯片设计">芯片设计过程中,采用MIPS的VMC仿真模型对SoC系统进行了基于门级网表文件的软硬件协同的动态时序仿真" title="时序仿真">时序仿真。在仿真环境下,通过加载MIPS的Boot Loader程序对芯片的功能和时序进行有效的验证。在此基础上,用门级仿真过程中生成的VCD(Value Change Dump)文件对完成物理设计的SoC芯片的功耗进行了有效的估计和分析。
关键词: SoC;boot loader;动态时序仿真;功耗估计
SoC是目前芯片设计的一个主流方向。它将经过验证的IP核整合在一起,形成一个有一定功能的复杂芯片系统。在SoC芯片设计中验证是一个重要的部分,除了功能上的验证,还有时序上的验证。SoC是软件和硬件的统一,在SoC芯片设计的初期就要规划好软件和硬件,以便于SoC芯片的设计和验证。SoC芯片设计中可以采用软硬件协同仿真" title="协同仿真">协同仿真来验证功能,将SoC 中的硬件部分的RTL代码经过综合映射成门级的网表可以进行软硬件协同的动态时序仿真,并且在仿真过程中可以得到一个VCD(Value Change Dump)文件,该文件可以用来比较精确地估计芯片功耗。
在HDTV解码SoC的芯片中集成了两颗4Kc MIPS核,在仿真过程中用MIPS的VMC(Verilog Module Compiler)模型来进行仿真。VMC模型可以模拟MIPS的全部行为,包括执行MIPS的指令集,所以用MIPS的VMC模型可以方便地构建软硬件协同验证的环境,运行软件程序,可以方便地找到软件和硬件上的问题。
目前很多EDA工具可以对芯片的门级网表做静态时序分析和形式上的验证。静态时序分析和形式上的验证仅仅用于验证硬件,并且验证的正确性取决于脚本中参数的设置。而软硬件协同的SoC门级动态时序仿真验证可以在物理层完整覆盖软件和硬件的协同工作。门级的仿真验证可以得到门级的仿真数据,这个数据可以比较准确地估计SoC芯片的功耗,为下一步做低功耗设计做准备。
本文以HDTV解码SoC芯片的设计为例,采用MIPS的VMC模型运行boot loader程序,对HDTV解码SoC芯片进行软硬件协同的动态时序仿真,以验证芯片的功能和时序,并对芯片的功耗进行估计和分析。
1 HDTV解码 SoC芯片的系统框图和仿真平台
HDTV解码SoC芯片是一个集成了两颗MIPS处理器内核、支持MPEG-2、MP@HL视频和多制式音频解码的系统级解码和控制芯片,可以应用于数字电视机顶盒或数字电影播放器中。其中MPEG-2视频解码使用了已经通过MPW验证的芯片(HD2201A),完成高清视频信号的解码。该芯片中一个MIPS处理器内核完成对整个解码系统进行控制,另一个MIPS处理器的内核用作音频软解码处理单元,音频解码支持MPEG-1 L1/L2,或MP3、MPEG2 AAC或Dolby AC-3。芯片中集成了多个功能单元IP模块,可以实现对TS流解复用、音频解码、视频解码的控制、视频后处理的功能。HDTV解码SoC芯片的结构框图如图1所示。
在软硬件协同仿真过程中,芯片集成的两个MIPS核采用VMC模型。VMC是由Synopsys开发的一种全功能的SmartModel仿真模型。SmartModel是一种标准集成电路的二进制行为模型库[2],在这个库里有世界上各大半导体厂商的器件模型,包括微处理器、控制器、外围设备、FPGA、CPLD、存储器及通用逻辑器件等,分为全功能模型FFMs(Full-Functional Models)和总线功能模型BFMs(Bus-Functional Models)。VMC属于FFM,是将Verilog的源代码编译成可执行文件,并通过仿真工具所具备的SWIFT接口调用这种模型,可以结合Verilog或VHDL语言一起进行仿真。
首先需要安装VMC模型[3]。如图2所示是MIPS公司提供的一个简单的VMC仿真平台" title="仿真平台">仿真平台。CPU和存储器通过一个EC_XBUS总线接口控制器连接,CPU对指令的读取及存储器的读写操作都是通过EC_XBUS总线接口实现的。
以MIPS的VMC的简单仿真平台为参考,可以构建HDTV解码SoC的软硬件协同仿真平台,如图3所示。
其中HDTV解码SoC芯片的内部构架如图1所示。用Synopsys公司的综合工具DC(Design Compiler),采用SMIC0.18工艺库,对HDTV 解码SoC芯片的RTL设计文件进行综合。在综合过中对于MIPS部分定义一个MIPS核的黑盒子,将MIPS的库文件读入进行综合。最后可以得到HDTV解码SoC的门级网表文件和标准延时文件,将芯片网表文件编译,并将标准时延文件反标到网表中。用MIPS的VMC模型来取代图中的CPU_S和CPU_A,同时编译Flash和SDRAM的仿真模型文件。Flash用来存储要运行的程序;SDRAM用来运行程序,如操作系统等。
在选取仿真软件程序时,应选择验证代码覆盖率高的程序。在本次仿真验证中,选择系统的Boot loader程序。Boot loader程序除了要初始化MIPS 核的相关寄存器、Cache等,还要初始化芯片中的功能模块。
2 基于VMC模型的SoC仿真验证流程
本次HDTV解码SoC芯片的动态时序仿真采用的程序是MIPS的boot loader程序。Boot loader程序是SoC设计中重要的软件部分,它和硬件的联系很密切,用来启动和引导操作系统以及初始化SoC芯片的重要模块[1],因此boot loader程序是对芯片硬件测试覆盖率较高的程序。HDTV解码SoC芯片的boot loader程序是针对芯片中两个MIPS核的。Boot loader的过程如图4所示。
在仿真系统中,将Boot Loader的程序先存储在Flash中。根据MIPS上电复位后程序指针将指向初始地址为0X1FC00000,这是按照8位数据总线编址,所以在32位EC_XBUS总线上的地址为0X07F00000。由于FLASH的地址只有24位,所以将boot loader的程序安排在0X380000的位置上。同时将约有2M大小的μClinux内核代码也先存储在FLASH中,还有音频MIPS 的处理器的执行代码,以及OSD在处理过程中用到的两帧图像也先存储在Flash中。当系统CPU复位后,Flash中的boot loader就会开始执行。
首先系统CPU判断运行和取指令的操作设置是否正确,如果正确,就初始化重要的寄存器,如GPR及CPO等,并初始化SDRAM的控制,将boot loader程序从FLASH中读取到SDRAM中,然后CPU从SDRAM读取指令继续执行Boot loader,接着继续初始化 CACHE和TLB(Translate Look-aside Buffers),初始化芯片中重要的功能模块,如TSD、OSD、PCM等,再测试存储区。最后,将μClinux核、音频MIPS执行的代码以及OSD用到的图像数据从Flash中读取到SDARM。然后系统CPU将音频CPU复位并将系统CPU的程序指针跳到操作系统程序的入口地址。系统CPU运行操作系统,音频CPU进行初始化,运行MP2的解码程序,功能模块也开始运行。
在选择软硬件协同仿真的测试程序时,应该考虑测试覆盖率大的程序。本文中选择的Boot loader程序除了启动两个MIPS外,还初始化芯片中重要的功能模块,使功能模块工作,因此其测试覆盖率很高,能满足测试的需求。
3 芯片功耗估计方法
功耗是芯片的一个重要的指标,芯片的功耗主要有静态功耗和动态功耗" title="动态功耗">动态功耗。芯片的静态功耗和芯片的库工艺有关,而动态功耗和芯片的信号翻转率有关。通过芯片门级网表的动态时序仿真可以得到一个VCD文件。这个文件可以动态捕获芯片中每个节点的翻转情况。
本文采用Synopsys公司提供的流程做功耗估计。功耗估计流程如图5所示。
用经过综合和物理设计得到的芯片网表文件、标准时延文件以及MIPS的VMC模型进行软硬件协同的动态时序仿真可以得到VCD(Value Change Dump)文件。由于Power Compiler工具要求使用SAIF(Switching Activity Interchange Format)文件[4],所以将VCD文件转换成SAIF文件。最后用Power Compiler工具将SAIF文件反标到芯片的网表中,用命令report_power 可以得到芯片的功耗文件。得到功耗文件后,可以分析芯片中功耗的分布,为降低功耗的工作做准备。
4 实验结果
仿真环境和工具是SUN服务器上的Cadence公司的NCSIM工具。
在仿真过程中仿真软件没有报timing violation,仿真结果如图6所示。Boot loader 结束时系统CPU发复位命令给音频CPU,音频CPU 读取已经存储的SDRAM程序。音频CPU被复位后,驱动32位EC_XBUS总线上的地址EB_A为0X07F00000,它与按照8位数据总线编址的初始地址0X1FC00000是一致的。这说明音频CPU内核的启动是正常的,并且继续执行相应的程序。由于系统中的两个CPU的复位后指向地址都是0X1FC00000,在32位EC_XBUS总线上的地址EB_A为0X07F00000,所以在SDRAM中要将两个CPU
的访问地址空间映射到不重叠的空间。
图6 HDTV解码SoC芯片的软硬件协同动态时序仿真结果
功耗估计工具是Synopsys公司的Power Compiler,功耗估计的结果如表1所示,整个芯片的平均功耗约为1.179W。由表中可以看到,在smic0.18工艺下动态功耗占了很大比例,并且芯片中元件(cell)的功耗远远大于布线(net)上的功耗。
SoC软硬件协同仿真的实质是在一个计算机平台上运行嵌入CPU的硬件模型。在HD3201A芯片(HDTV解码SoC芯片)流片过程中用基于MIPS的软硬件协同仿真的方式对芯片的门级网表进行了动态时序验证。结果表明芯片的功能和时序都是正确的。在此基础上还对门级网表和原始的RTL代码作了Formality的验证,结果也表明了功能上的正确性。本文对芯片的功耗进行了较精确的估计和分析,为在下一版中实现低功耗设计、打下好基础。
参考文献
[1] TAN Zhiming,ZHENG Shibao.Design and implementation of the software system on MPSoC:An HDTV decoder case study,Consumer Electronics,IEEE Transactions on,Publication Date:Nov.2006.
[2] SmartModel Library User′s Manual.Synopsys Inc,2002,(7).
[3] MIPS32 4KTM Processor Core Family Integrator′s Manual,Revision 01.10.MIPS Technologies Inc,2002.
[4] Power Compiler User Guide.Synopsys Release,2002,(5).
[5] 方应龙.SoC软硬件协同验证技术的应用研究.电子技术应用,2006,(12).