??? 摘 要: 時序驗證是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).