摘 要: SoC系統(tǒng)的RTL級驗證分為模塊級,、子系統(tǒng)級,、系統(tǒng)級三個階段。本文描述了高速數(shù)字信號處理器ZSP500的基本結(jié)構(gòu)和子系統(tǒng)級驗證的具體概念,詳細(xì)介紹了3G手機芯片中的IDLE模塊的結(jié)構(gòu),包括工作模式和空閑模式。介紹通過ZSP500編程工具構(gòu)造SoC子系統(tǒng)級驗證的測試?yán)?,利用生成的目?biāo)文件對模塊進行子系統(tǒng)級驗證。最后得出基于ZSP500的子系統(tǒng)級驗證效率高并且實現(xiàn)簡單的結(jié)論,。
關(guān)鍵詞: RTL,;ZSP500;TD-SCDMA,;IDLE,;子系統(tǒng)級驗證
SoC系統(tǒng)驗證是指對基于IP核實現(xiàn)的SoC系統(tǒng)進行功能驗證、靜態(tài)時序分析,、功耗分析及規(guī)則檢查等,,以保證正確的系統(tǒng)功能和良好的產(chǎn)品性能。在設(shè)計被綜合前,,首先要對RTL描述進行邏輯功能驗證,,其目的是為了確保驗證過的模塊或芯片具有100%的功能正確性。通常,,RTL級功能驗證主要采用自底向上的驗證策略,,即在模塊集成到芯片以前盡可能地對每一個IP核或模塊進行驗證,然后再對整個芯片或系統(tǒng)進行驗證,,因此RTL級驗證可分為模塊級驗證,、子系統(tǒng)級驗證和系統(tǒng)級驗證三個階段。模塊級驗證就是對SoC系統(tǒng)中某個模塊或IP核進行單獨的驗證,。當(dāng)單個模塊被驗證完畢之后,,就把它集成到其從屬的子系統(tǒng)中去驗證;子系統(tǒng)級驗證主要側(cè)重于模塊間接口的驗證和模塊間交互的驗證,;系統(tǒng)級驗證就是對整個系統(tǒng)芯片進行驗證,它通過模擬一個芯片運行的真實環(huán)境,,測試系統(tǒng)運行的狀況是否與設(shè)計規(guī)范中的要求相符合,。本文主要論述基于ZSP500的子系統(tǒng)級驗證實現(xiàn)。
1 ZSP500介紹
ZSP500[1]為16bit定點DSP,,是LSI Logic家族系列中ZSP G2架構(gòu)DSP核的最新產(chǎn)品,。ZSP500內(nèi)核以獨有的高效面積、極低功耗,、一流代碼密度,、實現(xiàn)四MAC的性能等優(yōu)點成為高帶寬3G頻帶處理和豐富多媒體應(yīng)用的理想選擇。ZSP500的運行頻率為250MHz,,處理能力可達(dá)1000MIps,。其處理單元主要包括預(yù)取單元(PFU),、指令單元(ISU)、管線控制單元(PCU),、地址生成單元(AGU),、協(xié)處理器接口(CPI)、算術(shù)邏輯單元(ALU)等,。結(jié)構(gòu)框圖如圖1所示,。
?
?
如圖1可知,ZSP500具有兩個專有的AGU,,可驅(qū)動各自專有的裝載/存儲端口,,每周內(nèi)可完成兩次裝載或兩次存儲,或一次裝載一次存儲,。每個數(shù)據(jù)端口寬度為32位,,因此每個周期內(nèi)可完成64bit(4個字)的數(shù)據(jù)傳輸。另外PFU中還有一個跳轉(zhuǎn)預(yù)測邏輯,,能夠提供zero-overhead循環(huán),,產(chǎn)生高效的跳轉(zhuǎn)和調(diào)用。使用靜態(tài)分組規(guī)則決定每個時鐘周期執(zhí)行的跳轉(zhuǎn)條數(shù),,在程序員邏輯上正確編寫代碼時,,保證多條指令并行執(zhí)行,從而提高了效率,。
2 子系統(tǒng)級驗證
當(dāng)單個模塊驗證完畢后就可以集成到子系統(tǒng)驗證環(huán)境中驗證,。因為每個模塊在模塊級驗證中沒有問題,并不能確保它在整個芯片中能正常工作,,模塊級驗證只能說明模塊本身的功能是正確的,,而它與其他模塊之間的接口以及模塊與模塊之間信號的相互連接是否正常仍然不能確定,所以在子系統(tǒng)級驗證中主要側(cè)重于接口的驗證和模塊間交互的驗證[2],。子系統(tǒng)級驗證平臺與模塊級驗證平臺稍有不同,,它不只是包含單個被測的模塊,而且包含被測對象所從屬的子系統(tǒng)中的所有模塊,,但是驗證模塊仍然可以應(yīng)用模塊級驗證中使用的總線功能模型,。實現(xiàn)時主要構(gòu)造被測模塊的測試?yán)鴮ψ酉到y(tǒng)中的其他模塊進行功能抽象,,假定它們都是功能正確的,。基于ZSP500的子系統(tǒng)級驗證就是用ZSP500編程工具來構(gòu)造模塊的測試?yán)?,然后生成目?biāo)文件,,在驗證環(huán)境中利用生成的目標(biāo)文件在系統(tǒng)中運行,得出該模塊的仿真波形,最后對仿真波形進行詳細(xì)分析,。
3 IDLE模塊簡介
在TD-SCDMA手機芯片中,,為了最大限度地達(dá)到省電的目的,設(shè)計出了IDLE電路,。在空閑模式下,,可將除32kHz外的時鐘都關(guān)閉(包括PLL1/2),僅留32kHz時鐘維持IDLE模塊電路的工作[3],。本芯片共有兩種運行模式:工作模式和空閑模式,。
3.1 工作模式和空閑模式
在工作模式下,3G手機芯片的PLL1一直打開,,用于產(chǎn)生系統(tǒng)時鐘,;PLL2可控,當(dāng)需要48MHz時鐘時才予以打開,,ARM時鐘一直有效,,其他模塊(包括ZSP1,ZSP2)的時鐘可由ARM,、ZSP1,、ZSP2控制其關(guān)閉。
在空閑模式下又可分為淺睡眠和深睡眠兩種睡眠方式,。在淺睡眠模式下,,PLL1保持打開狀態(tài),產(chǎn)生系統(tǒng)時鐘,,ARM以及各模塊的時鐘可選擇關(guān)閉,;在深睡眠模式下,PLL1/2時鐘將被關(guān)閉,,整個芯片沒有高頻工作時鐘(只保留32kHz時鐘),,整個電路只有32kHz時鐘維持IDLE模塊工作。當(dāng)IDLE電路運行結(jié)束并等待5ms之后才打開PLL時鐘電路,;在PLL打開0.63ms之后,,才將時鐘輸出到系統(tǒng)。
3.2 IDLE模塊結(jié)構(gòu)
IDLE電路的功能結(jié)構(gòu)如圖2,,整個IDLE模塊由三個模塊構(gòu)成:F_timer主要用于幀計數(shù),、幀號計數(shù)以及產(chǎn)生幀中斷信號、DHI中斷信號,;H值計算電路用于提供退出IDLE時同步幀號和幀計數(shù)器值得計算參數(shù)H,H電路計算方式分為兩種:一是ARM或ZSP控制啟動H電路計算,,二是H電路自動定時更新,;IDLE時間計算電路用于控制IDLE持續(xù)的時間以及計算退出IDLE時同步的幀號和幀計數(shù)器值。
?
3.3 IDLE運行時間的計算
在IDLE狀態(tài)中有四個時間段,分別是X,、M0,、M1、Y,。系統(tǒng)進入IDLE運行的時間計算公式為:Idle time=((H*M)/N+X+Y)/f,,其中f是系統(tǒng)時鐘頻率。M是M0與M1的和,,是用32kHz時鐘計數(shù)的時鐘周期,。X時間是用來計算空閑時間的,是不定值,,根據(jù)每次進入IDLE的實際情況而定,。M0時間段是芯片進入IDLE深睡眠時,用來關(guān)閉晶振和PLL時鐘的,,pllon信號在這段時間內(nèi)將被拉低,。M1時間是用來打開晶振和PLL時鐘的,并且使晶振和PLL時鐘在這段時間內(nèi)穩(wěn)定,。Y時間段是計算時間,,計算退出IDLE時同步的幀號和幀計數(shù)器的值。H是系統(tǒng)時鐘與32kHz時鐘之間的比例關(guān)系,。N是計算H系數(shù)所用的32kHz的時鐘個數(shù),。
4 基于ZSP500的IDLE模塊子系統(tǒng)級驗證的實現(xiàn)
基于ZSP500的子系統(tǒng)級驗證,是在ZSP500的平臺上編寫測試?yán)?,生成目?biāo)文件,,在驗證環(huán)境中通過運行命令把目標(biāo)文件和ZSP1、ZSP2同時啟動,,把所有的芯片模塊聯(lián)系起來運行,,得到仿真波形,通過分析仿真波形來驗證模塊的功能是否正確,,前提是系統(tǒng)中其他模塊的功能都是正確的,。
4.1 IDLE模塊的測試?yán)龢?gòu)造
TD-SCDMA系統(tǒng)子幀長度為5ms,共6 400個chip[4],。當(dāng)IDLE模塊的計數(shù)精度為1/16chip時,,幀計數(shù)器從1開始計數(shù),當(dāng)記到設(shè)置的幀長時返回為1繼續(xù)計數(shù),,同時向ZSP1/2,、ARM發(fā)出幀中斷信號,同時幀號計數(shù)器加1,。為了提高效率,,在驗證時根據(jù)實際需要設(shè)置幀長計數(shù)器的值,。系統(tǒng)進入IDLE模式之后,根據(jù)喚醒信號到來的時刻不同產(chǎn)生不同的波形,,操作過程如圖3,。
?
下面主要對H計算電路為自動更新模式的情況進行仿真。主要的測試?yán)缦拢?BR>movhw?a0,,0x0089
movlw?a0,,0x002C
mov??r0,0x0cf8? ??????? //設(shè)置的幀長寄存器
??????? //framlr=0x0cf8,,為了提高驗證的
mov??r1,,0x0001 ???????? //速度幀長設(shè)置較短
std??r0,a0
movhw?a0,,0x0089
movlw?a0,,REG_IDL_IDM0?????? //配置M0和M1的值,
???????????????????????????? //以設(shè)置空閑的時間
mov??r0,,0x8000???????????? //以及晶振和PLL的穩(wěn)定時間
mov??r1,,0x0000
std??r0,a0
movhw?a0,,0x0089
movlw?a0,,REG_IDL_IDM1
mov??r0,0x0100
st??r0,,a0
movhw?a0,,0x0089
movlw?a0,0x0032 //PLL時鐘使能寄存器,,
//設(shè)置為深睡眠狀態(tài)
mov??r0,,0x0002
st??r0,a0
movhw?a0,,0x0089 //配置空閑模式控制寄存器,,
//選擇H值的更新時間和
movlw?a0,REG_IDL_IDCT //計算時間,,注意
//更新時間一定要大于計算時間,,
mov??r0,0x1048 //否則H值沒有計算完畢
//就自動更新了,。選擇H電路計
mov??r1,,0x00?????????????? //算模式為“自動更新模式”,
??????????????????????????? //并且選擇芯片工作模式
std??r0,,a0???????????????? //為空閑模式
waitInt:
ldd?r0,,a0 ?????????? //查詢IDCT第一位,當(dāng)該位變?yōu)?時,,
//說明H電路獲
??? bitt?r0,,1???????????? //得最新的H值,,可以通過ICHR
?????????? //寄存器查看H的值
????bz?waitInt
??????
??? ?mov %loop0,100
????loop:
??????? mov?r2,,0x00
?? agn0 loop
movhw?a0,0x0089
movlw?a0,,REG_IDL_IDCT? //獲得H值后就可以
??????????????? //讓芯片進入IDLE狀態(tài),,發(fā)出
mov??r0,0x104d???????? //進入IDLE的命令,,
??????????? //在下一幀到來時,,芯片即進
mov??r1,0x00?????????? //入IDLE狀態(tài)
std??r0,,a0
4.2 IDLE模塊的系統(tǒng)級仿真波形
Clk:仿真環(huán)境提供的時鐘,,并不是芯片本身的系統(tǒng)時鐘。芯片內(nèi)部的clk在IDLE狀態(tài)下應(yīng)該關(guān)閉,。
Clk32K:32kHz晶振時鐘
f_int:幀中斷
ichr_o:存儲計算出來的H值
cfsr_o:幀號寄存器
framlr[15:0]和framlr_i_17bit:設(shè)置的幀長
??? framc_o[15:0]和framc_17bit:幀長計數(shù)器,。從1開始,當(dāng)它的計數(shù)值等于幀長時,,f_int產(chǎn)生幀中斷,,同時幀號計數(shù)器的值加1
??? icst_o:芯片的狀態(tài)(1:處于工作狀態(tài),0:處于空閑狀態(tài))
??? pllon:PLL時鐘使能(1:關(guān)閉PLL,,0:打開PLL)
??? wake:喚醒信號
??? 從圖4~圖6所示的仿真波形來看,,IDLE模塊在X時間段有wake信號到來,芯片在X時間段結(jié)束后將直接進入M1時間段工作,,pllon信號也不會被拉低,,芯片沒有進入睡眠狀態(tài)。如果在M0時間段有wake信號到來,,IDLE模塊將立即結(jié)束M0時間段,,進入M1時間段工作,pllon信號被拉高,,并記錄下M0時間段實際運行的時間,,用于退出時的計算。如果在M1或Y時間段有wake信號,,IDLE模塊不影響wake信號,,按設(shè)定工作。具體分析時還應(yīng)該觀察幀計數(shù)器和幀號計數(shù)器在喚醒時計數(shù)的準(zhǔn)確性以及H計算電路的誤差范圍應(yīng)該在50ns以內(nèi),,否則不能滿足精度要求,。
?
本文所介紹的子系統(tǒng)級驗證是在利用RVM層次化驗證方法對IP模塊進行了完備驗證之后進行的?;赯SP500的子系統(tǒng)級驗證方法簡單易于實現(xiàn),,只需要在理解協(xié)議的基礎(chǔ)上配置寄存器,,就可以把生成的目標(biāo)文件用來得到仿真波形。然后仔細(xì)分析仿真波形就可以驗證模塊在整個系統(tǒng)中是否實現(xiàn)了應(yīng)有的功能,。此方法不需要驗證工程師具有豐富的編寫驗證代碼的經(jīng)驗,,而且實現(xiàn)效率高,大大縮短了SoC系統(tǒng)級驗證的周期,。
參考文獻(xiàn)
[1] 史小玲,,張毓波.LSI Logic的ZSP可授權(quán)DSP內(nèi)核加速SoC設(shè)計[EB/OL].Http://dsp.blueidea.com/news/infolTo1.
asp.
[2] CHISHOLM D,BAILLIE A.SystemC Verification,,Simulation & Emulation of Secure Digital IP.(Available at:http://tb.blog.csdn.net/TrackBack.aspx?PostId=1818988).
[3] 重慶重郵信科股份有限公司.C3220芯片用戶手冊.2006.
[4] 李小文.TD-SCDMA第三代移動通信系統(tǒng),、信令及實現(xiàn)[M].北京:人民郵電出版社,2003.