內(nèi)嵌ARM9E內(nèi)核系統(tǒng)級(jí)芯片的原型驗(yàn)證方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
【摘要】隨著大容量高速度的FPGA的出現(xiàn),在流片前建立一個(gè)高性價(jià)比的原型驗(yàn)證系統(tǒng)已經(jīng)成為縮短系統(tǒng)級(jí)芯片(SoC)驗(yàn)證時(shí)間,提高首次流片成功率的重要方法。本文著重討論了用FPGA建立原型進(jìn)行驗(yàn)證的流程、優(yōu)缺點(diǎn)以及常用方法,并結(jié)合對(duì)一款內(nèi)嵌ARM9E SoC 所進(jìn)行的原型驗(yàn)證,說明這一方法在SoC驗(yàn)證中的應(yīng)用。
【關(guān)鍵詞】:SoC,驗(yàn)證,ARM9,F(xiàn)PGA,快速原型,軟/硬件協(xié)同驗(yàn)證
1 引言
目前系統(tǒng)級(jí)芯片(SoC)規(guī)模飛速增長(zhǎng),嵌入式軟件也日趨復(fù)雜,但是仿真軟件的發(fā)展卻相對(duì)滯后,設(shè)計(jì)團(tuán)隊(duì)已經(jīng)意識(shí)到軟件仿真的局限性,這種仿真不僅很難提供系統(tǒng)仿真所需要的仿真性能,而且非常耗時(shí)。隨著大容量高速度的FPGA的出現(xiàn),建立一個(gè)高性價(jià)比的原型驗(yàn)證系統(tǒng)要比其他的方法更加便宜和快速。
2 SoC原型驗(yàn)證的基本流程和優(yōu)缺點(diǎn)分析
對(duì)于SoC設(shè)計(jì)的流程,每個(gè)公司都不盡相同,大的芯片公司都形成了自己特有的成熟的流程與方法。而對(duì)于加入原型驗(yàn)證之后的SoC設(shè)計(jì)基本流程如圖1所示。在本文提到的一款內(nèi)嵌ARM9E用于移動(dòng)對(duì)講通信的SoC開發(fā)中,采用的就是如圖1所示的流程。在定義完軟、硬件接口,明確軟、硬件之間的通信協(xié)議后,就可以開始進(jìn)行SoC的軟、硬件設(shè)計(jì)了。如果采用全定制的FPGA原型,此時(shí)原型可以同軟、硬件一起并行開發(fā),因?yàn)槿ㄖ频脑烷_發(fā)也需要相當(dāng)長(zhǎng)的時(shí)間,如果在軟、硬件設(shè)計(jì)完成之后再設(shè)計(jì)原型,那么不但不會(huì)加速設(shè)計(jì)過程,反而會(huì)延長(zhǎng)設(shè)計(jì)周期。
FPGA在密度、速度方面和ASIC的相似性使得基于FPGA的原型運(yùn)行速度接近于現(xiàn)實(shí)速度,不僅可以大幅度提高系統(tǒng)仿真速度,而且還可以使我們盡早地來(lái)測(cè)試SoC的應(yīng)用軟件,從而達(dá)到節(jié)省整個(gè)SoC開發(fā)時(shí)間的目的。此外,由于FPGA可配置,所以原型還可以重復(fù)使用,是一個(gè)性價(jià)比很高的驗(yàn)證方法。但是,隨著SoC的快速發(fā)展,F(xiàn)PGA原型驗(yàn)證SoC的方法也存在著很多需要解決的問題。
主要的問題可以分為兩大類,第一類問題是ASIC和FPGA的結(jié)構(gòu)不同,我們必須把ASIC風(fēng)格的代碼移植到FPGA上。ASIC設(shè)計(jì)者可以使用支持不同語(yǔ)言結(jié)構(gòu)的綜合工具,但是FPGA的綜合工具不一定支持不同的語(yǔ)言結(jié)構(gòu),比如說VHDL中的generic語(yǔ)句用來(lái)使設(shè)計(jì)保持可配置,而FPGA綜合工具有可能會(huì)把generic語(yǔ)句替換為常數(shù)。另外,ASIC中有些模塊是全定制的而并非可綜合的代碼,比如說存儲(chǔ)器模塊,而FPGA只能接受門級(jí)網(wǎng)表,這樣的定制模塊就只能用模型仿真,從而降低模擬速度。還有,ASIC設(shè)計(jì)中為了降低功耗經(jīng)常使用門控時(shí)鐘(gated clock),但是在FPGA中卻不允許,需要用Synplicity CerTIfy工具將門控時(shí)鐘轉(zhuǎn)為相應(yīng)的FPGA設(shè)計(jì)。
第二類問題在于FPGA的資源有限,主要體現(xiàn)在容量、時(shí)鐘資源和I/O資源的有限上。業(yè)界有條規(guī)律,F(xiàn)PGA的等效門除以八才是FPGA上能實(shí)現(xiàn)的ASIC的門數(shù),比如說一個(gè)200萬(wàn)門的Virtex II XC2V2000只能裝下大約25萬(wàn)門的ASIC設(shè)計(jì)。這條規(guī)律是設(shè)計(jì)師應(yīng)該心中有數(shù)的,筆者在設(shè)計(jì)FPGA原型的初期就由于在這個(gè)問題上面的忽視而導(dǎo)致了后期容量不夠更改設(shè)計(jì)的問題。圖2給出了業(yè)界估計(jì)的ASIC和FPGA工藝所能實(shí)現(xiàn)的等效門數(shù),我們可以看出,未來(lái)設(shè)計(jì)者將不得不面對(duì)ASIC和FPGA之間的容量鴻溝。由于FPGA的資源不夠,而目前SoC的規(guī)模又很大,要實(shí)現(xiàn)原型我們必須把系統(tǒng)劃分到多片F(xiàn)PGA中去,這就帶來(lái)了布線困難以及FPGA I/O緊張的問題,因?yàn)镾oC的系統(tǒng)總線一旦暴露出來(lái),就會(huì)使用FPGA數(shù)以千計(jì)的I/O,而目前最先進(jìn)的FPGA也僅僅能提供一千多個(gè)I/O,步線困難又會(huì)引出原型可靠性的問題。目前解決的方法是采用管腳復(fù)用和用Synplify Certify對(duì)系統(tǒng)進(jìn)行最優(yōu)分割。FPGA廠商也通過集成專用的乘法器,片上RAM來(lái)改善FPGA資源緊張的問題。
3 SoC原型驗(yàn)證的常用方法
設(shè)計(jì)者有很多種方法可以建立起SoC原型,但是每種方法都有其優(yōu)缺點(diǎn)及適用范圍,所以設(shè)計(jì)者會(huì)從相關(guān)芯片和公司資源的實(shí)際情況出發(fā),決定出性價(jià)比最高的方案。流行的方法有以下三種:
3.1 全定制的SoC原型。
設(shè)計(jì)者依據(jù)SoC的設(shè)計(jì)規(guī)范,在印刷電路板(PCB)上實(shí)現(xiàn)SoC的原型系統(tǒng)。全定制的SoC原型系統(tǒng)在很長(zhǎng)一段時(shí)間內(nèi),是唯一的建立原型的方法,它容易使用,直觀而且可以運(yùn)行于一個(gè)比較高的頻率,適用于小規(guī)模SoC。
3.2 通過SoC原型代工公司建立原型。
從2000年開始,硅谷出現(xiàn)了這種SoC原型代工的公司,這些公司以其專業(yè)性和快速的SoC原型設(shè)計(jì)時(shí)間使得很多芯片大公司成為他們的客戶,但是這種方法也意味著昂貴、不可重用和不可控。
3.3 使用專業(yè)的SoC原型開發(fā)套件。
這是目前開發(fā)大規(guī)模復(fù)雜SoC原型的流行方法。由第三方公司提供功能強(qiáng)大、可重用的FPGA硬件平臺(tái)、設(shè)計(jì)流程和相應(yīng)的PC端應(yīng)用程序,設(shè)計(jì)者可以用開發(fā)套件盡可能相似地實(shí)現(xiàn)SoC的原型。在這一市場(chǎng)有四種主要的產(chǎn)品,分別是ARM集成板(integrator)、APTIX MP3/MP4、Logic Express SoC-V20和FlexBench。
4 一款內(nèi)嵌ARM9E SoC原型驗(yàn)證實(shí)例
筆者參與了清華大學(xué)與意法半導(dǎo)體合作開發(fā)民用對(duì)講機(jī)(Digital Walkie-Talkie,簡(jiǎn)稱DWT)芯片的項(xiàng)目,主要負(fù)責(zé)DWT SoC的原型驗(yàn)證。這款芯片用于409MHz免費(fèi)頻段的無(wú)線對(duì)講通信,具體頻段為409.750MHz到410MHz一段,分20個(gè)信道,信道間隔12.5kHz。這款芯片的設(shè)計(jì)思想是將處理器、各種外設(shè)、語(yǔ)音ADC/DAC以及射頻電路全部集成到一塊芯片中去,是一款典型的基于ARM的數(shù)?;旌蚐oC。
我們選用了ARM946E-S處理器,它兼容DSP指令,使用0.13 m工藝的ARM946E-S最高可以運(yùn)行于210MHz。由于其具有較強(qiáng)的運(yùn)算能力,所以在軟硬件劃分的時(shí)候我們將這個(gè)系統(tǒng)的算法都用軟件來(lái)實(shí)現(xiàn),而協(xié)議由硬件來(lái)實(shí)現(xiàn)。模擬部分主要是音頻和射頻兩個(gè)ADDA和24M與397.875M兩個(gè)混頻器。系統(tǒng)中基于AMBA的外設(shè)主要有DMA控制器、矢量中斷控制器(VIC)、多端口存儲(chǔ)控制器(MPMC)、實(shí)時(shí)時(shí)鐘(RTC)、同步外設(shè)接口(SPI)、通用I/O(GPIO)和功耗管理單元(PMU)等。
在系統(tǒng)軟硬件劃分完畢后,就可以考慮采用何種方法建立此SoC的原型了。從芯片實(shí)際的情況出發(fā),由于算法均由軟件實(shí)現(xiàn),所以相應(yīng)的硬件開銷較小,數(shù)字部分除了ARM9E處理器外,均為基于AMBA總線的外設(shè),沒有非常復(fù)雜的數(shù)字模塊。而且SoC中的大部分外設(shè)都采用的ARM提供的IP,我們可以事先獲得這些外設(shè)的ASIC門數(shù)資料,然后再留有冗余地估計(jì)出自己開發(fā)的模塊的ASIC門數(shù),最后得到的結(jié)果是在0.13 m工藝下大概數(shù)字部分總共20萬(wàn)門的規(guī)模(除去處理器 ),這完全可以用一塊FPGA裝下整個(gè)設(shè)計(jì)。意法半導(dǎo)體可以給我們提供ARM946E-S的測(cè)試片,所以從成本等多方面衡量,筆者放棄了用ARM integrator的想法,而是用全定制的方法建立SoC原型。
DWT SoC FPGA原型的框圖,因?yàn)槭菙?shù)?;旌偷腟oC,所以很難做到原型與SoC完全一致,筆者在設(shè)計(jì)中盡可能做到兩者的最大相似。 在原型板上模擬部分的音頻ADC和DAC由TI的一片Codec芯片代替,而射頻部分則另外設(shè)計(jì)一塊射頻板,在原型板上只留與射頻部分的接口。基于AMBA的外設(shè)全都放入一塊200萬(wàn)門的Virtex II XC2V2000的FPGA中,AHB總線暴露在板上與ARM946E-S相連。無(wú)線對(duì)講系統(tǒng)對(duì)實(shí)時(shí)性要求很高,由于只有一片F(xiàn)PGA,所以系統(tǒng)可以運(yùn)行于一個(gè)比較高的頻率上,我們可以驗(yàn)證系統(tǒng)的實(shí)時(shí)性能。板上的模擬模塊均有開關(guān)控制,可以隨時(shí)從系統(tǒng)中斷開,而且FPGA可以同PC通過串口通信,所以整個(gè)原型系統(tǒng)不僅可以通過實(shí)際器件獲得輸入激勵(lì),還可以通過計(jì)算機(jī)輸入激勵(lì)獲得結(jié)果進(jìn)行比較,所以具有較好的可控性和可觀測(cè)性。在選擇FPGA的時(shí)候應(yīng)注意FPGA提供的時(shí)鐘引腳數(shù)目和存儲(chǔ)單元容量一定要滿足系統(tǒng)要求,在設(shè)計(jì)原型的時(shí)候應(yīng)該將FPGA多數(shù)的I /O引到測(cè)試針腳上,以方便設(shè)計(jì)者使用邏輯分析儀進(jìn)行信號(hào)的實(shí)時(shí)采集和分析,也可以讓信號(hào)發(fā)生器產(chǎn)生一些特定的信號(hào)以供系統(tǒng)調(diào)試使用。
在這個(gè)FPGA原型板上筆者進(jìn)行了模塊功能驗(yàn)證和系統(tǒng)功能驗(yàn)證。對(duì)于DWT SoC中的各個(gè)模塊,在進(jìn)行原型驗(yàn)證前已經(jīng)在工作站上通過了模塊功能驗(yàn)證,模塊功能驗(yàn)證程序是由ARM提供的APTEST系列的C程序,平臺(tái)是RTL和行為級(jí)的混和,仿真結(jié)果通過自己編寫Tube debugging displayer進(jìn)行監(jiān)控,這一過程非常耗時(shí)。筆者在FPGA原型板上使用了相同的APTEST的C程序,仿真結(jié)果通過ARM AXD Debugger CONsole進(jìn)行監(jiān)控。仿真速度上FPGA比工作站上的仿真快了3個(gè)數(shù)量級(jí),在此種驗(yàn)證中我們發(fā)現(xiàn)了很少量的bug,說明在工作站上面跑的模塊功能驗(yàn)證較為成功。
在FPGA原型板上進(jìn)行系統(tǒng)功能驗(yàn)證才是進(jìn)行原型驗(yàn)證真正的意義所在,由于硬件的可觀測(cè)性較差,系統(tǒng)功能出錯(cuò)卻很難找到問題所在,所以筆者編寫了PC端的程序,其目的是產(chǎn)生每個(gè)系統(tǒng)功能程序所需要的激勵(lì)樣本,將其通過UART送入FPGA,并將取到的結(jié)果與期望樣本進(jìn)行比較。不過這種方法只能驗(yàn)證基帶部分,基帶部分接口的速率較低,可以通過UART與計(jì)算機(jī)實(shí)時(shí)通信,筆者通過此種方法成功地驗(yàn)證了數(shù)字基帶部分的功能和實(shí)時(shí)性。對(duì)于系統(tǒng)全功能驗(yàn)證,是通過連接射頻板進(jìn)行的,在驗(yàn)證完基帶部分后,用原型板與射頻板的結(jié)合,實(shí)現(xiàn)整個(gè)系統(tǒng)原型。在筆者對(duì)DWT SoC進(jìn)行的原型驗(yàn)證過程中,發(fā)現(xiàn)了一些嚴(yán)重的在工作站仿真時(shí)卻沒有發(fā)現(xiàn)的RTL bug。
五 小結(jié)
用FPGA建立SoC原型進(jìn)行驗(yàn)證是一種高性價(jià)比的SoC驗(yàn)證方法,基于原型的速度接近于現(xiàn)實(shí)速度,可以使我們找出其他驗(yàn)證方法找不出的錯(cuò)誤。軟件仿真之后建立SoC的原型進(jìn)行驗(yàn)證已經(jīng)成為絕大部分芯片公司采用的方法,沒有經(jīng)過原型驗(yàn)證的SoC,會(huì)被認(rèn)為是沒有經(jīng)過充分驗(yàn)證的SoC。