<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 內(nèi)嵌ARM9E內(nèi)核系統(tǒng)級芯片的原型驗證方法

          內(nèi)嵌ARM9E內(nèi)核系統(tǒng)級芯片的原型驗證方法

          作者: 時間:2012-03-15 來源:網(wǎng)絡(luò) 收藏

          【摘要】隨著大容量高速度的FPGA的出現(xiàn),在流片前建立一個高性價比的已經(jīng)成為縮短(SoC)時間,提高首次流片成功率的重要。本文著重討論了用FPGA建立進(jìn)行的流程、優(yōu)缺點以及常用,并結(jié)合對一款 SoC 所進(jìn)行的驗證,說明這一在SoC驗證中的應(yīng)用。

          本文引用地址:http://www.ex-cimer.com/article/149425.htm

          【關(guān)鍵詞】:SoC,驗證,ARM9,F(xiàn)PGA,快速原型,軟/硬件協(xié)同驗證

          1 引言

          目前(SoC)規(guī)模飛速增長,嵌入式軟件也日趨復(fù)雜,但是仿真軟件的發(fā)展卻相對滯后,設(shè)計團(tuán)隊已經(jīng)意識到軟件仿真的局限性,這種仿真不僅很難提供系統(tǒng)仿真所需要的仿真性能,而且非常耗時。隨著大容量高速度的FPGA的出現(xiàn),建立一個高性價比的原型驗證系統(tǒng)要比其他的方法更加便宜和快速。

          2 SoC原型驗證的基本流程和優(yōu)缺點分析

          對于SoC設(shè)計的流程,每個公司都不盡相同,大的公司都形成了自己特有的成熟的流程與方法。而對于加入原型驗證之后的SoC設(shè)計基本流程如圖1所示。在本文提到的一款用于移動對講通信的SoC開發(fā)中,采用的就是如圖1所示的流程。在定義完軟、硬件接口,明確軟、硬件之間的通信協(xié)議后,就可以開始進(jìn)行SoC的軟、硬件設(shè)計了。如果采用全定制的FPGA原型,此時原型可以同軟、硬件一起并行開發(fā),因為全定制的原型開發(fā)也需要相當(dāng)長的時間,如果在軟、硬件設(shè)計完成之后再設(shè)計原型,那么不但不會加速設(shè)計過程,反而會延長設(shè)計周期。

          FPGA在密度、速度方面和ASIC的相似性使得基于FPGA的原型運行速度接近于現(xiàn)實速度,不僅可以大幅度提高系統(tǒng)仿真速度,而且還可以使我們盡早地來測試SoC的應(yīng)用軟件,從而達(dá)到節(jié)省整個SoC開發(fā)時間的目的。此外,由于FPGA可配置,所以原型還可以重復(fù)使用,是一個性價比很高的驗證方法。但是,隨著SoC的快速發(fā)展,F(xiàn)PGA原型驗證SoC的方法也存在著很多需要解決的問題。

          主要的問題可以分為兩大類,第一類問題是ASIC和FPGA的結(jié)構(gòu)不同,我們必須把ASIC風(fēng)格的代碼移植到FPGA上。ASIC設(shè)計者可以使用支持不同語言結(jié)構(gòu)的綜合工具,但是FPGA的綜合工具不一定支持不同的語言結(jié)構(gòu),比如說VHDL中的generic語句用來使設(shè)計保持可配置,而FPGA綜合工具有可能會把generic語句替換為常數(shù)。另外,ASIC中有些模塊是全定制的而并非可綜合的代碼,比如說存儲器模塊,而FPGA只能接受門級網(wǎng)表,這樣的定制模塊就只能用模型仿真,從而降低模擬速度。還有,ASIC設(shè)計中為了降低功耗經(jīng)常使用門控時鐘(gated clock),但是在FPGA中卻不允許,需要用Synplicity CerTIfy工具將門控時鐘轉(zhuǎn)為相應(yīng)的FPGA設(shè)計。

          第二類問題在于FPGA的資源有限,主要體現(xiàn)在容量、時鐘資源和I/O資源的有限上。業(yè)界有條規(guī)律,F(xiàn)PGA的等效門除以八才是FPGA上能實現(xiàn)的ASIC的門數(shù),比如說一個200萬門的Virtex II XC2V2000只能裝下大約25萬門的ASIC設(shè)計。這條規(guī)律是設(shè)計師應(yīng)該心中有數(shù)的,筆者在設(shè)計FPGA原型的初期就由于在這個問題上面的忽視而導(dǎo)致了后期容量不夠更改設(shè)計的問題。圖2給出了業(yè)界估計的ASIC和FPGA工藝所能實現(xiàn)的等效門數(shù),我們可以看出,未來設(shè)計者將不得不面對ASIC和FPGA之間的容量鴻溝。由于FPGA的資源不夠,而目前SoC的規(guī)模又很大,要實現(xiàn)原型我們必須把系統(tǒng)劃分到多片F(xiàn)PGA中去,這就帶來了布線困難以及FPGA I/O緊張的問題,因為SoC的系統(tǒng)總線一旦暴露出來,就會使用FPGA數(shù)以千計的I/O,而目前最先進(jìn)的FPGA也僅僅能提供一千多個I/O,步線困難又會引出原型可靠性的問題。目前解決的方法是采用管腳復(fù)用和用Synplify Certify對系統(tǒng)進(jìn)行最優(yōu)分割。FPGA廠商也通過集成專用的乘法器,片上RAM來改善FPGA資源緊張的問題。

          3 SoC原型驗證的常用方法

          設(shè)計者有很多種方法可以建立起SoC原型,但是每種方法都有其優(yōu)缺點及適用范圍,所以設(shè)計者會從相關(guān)芯片和公司資源的實際情況出發(fā),決定出性價比最高的方案。流行的方法有以下三種:

          3.1 全定制的SoC原型。

          設(shè)計者依據(jù)SoC的設(shè)計規(guī)范,在印刷電路板(PCB)上實現(xiàn)SoC的原型系統(tǒng)。全定制的SoC原型系統(tǒng)在很長一段時間內(nèi),是唯一的建立原型的方法,它容易使用,直觀而且可以運行于一個比較高的頻率,適用于小規(guī)模SoC。

          3.2 通過SoC原型代工公司建立原型。

          從2000年開始,硅谷出現(xiàn)了這種SoC原型代工的公司,這些公司以其專業(yè)性和快速的SoC原型設(shè)計時間使得很多芯片大公司成為他們的客戶,但是這種方法也意味著昂貴、不可重用和不可控。

          3.3 使用專業(yè)的SoC原型開發(fā)套件。

          這是目前開發(fā)大規(guī)模復(fù)雜SoC原型的流行方法。由第三方公司提供功能強(qiáng)大、可重用的FPGA硬件平臺、設(shè)計流程和相應(yīng)的PC端應(yīng)用程序,設(shè)計者可以用開發(fā)套件盡可能相似地實現(xiàn)SoC的原型。在這一市場有四種主要的產(chǎn)品,分別是ARM集成板(integrator)、APTIX MP3/MP4、Logic Express SoC-V20和FlexBench。

          4 一款 SoC原型驗證實例

          筆者參與了清華大學(xué)與意法半導(dǎo)體合作開發(fā)民用對講機(jī)(Digital Walkie-Talkie,簡稱DWT)芯片的項目,主要負(fù)責(zé)DWT SoC的原型驗證。這款芯片用于409MHz免費頻段的無線對講通信,具體頻段為409.750MHz到410MHz一段,分20個信道,信道間隔12.5kHz。這款芯片的設(shè)計思想是將處理器、各種外設(shè)、語音ADC/DAC以及射頻電路全部集成到一塊芯片中去,是一款典型的基于ARM的數(shù)模混和SoC。

          我們選用了ARM946E-S處理器,它兼容DSP指令,使用0.13 m工藝的ARM946E-S最高可以運行于210MHz。由于其具有較強(qiáng)的運算能力,所以在軟硬件劃分的時候我們將這個系統(tǒng)的算法都用軟件來實現(xiàn),而協(xié)議由硬件來實現(xiàn)。模擬部分主要是音頻和射頻兩個ADDA和24M與397.875M兩個混頻器。系統(tǒng)中基于AMBA的外設(shè)主要有DMA控制器、矢量中斷控制器(VIC)、多端口存儲控制器(MPMC)、實時時鐘(RTC)、同步外設(shè)接口(SPI)、通用I/O(GPIO)和功耗管理單元(PMU)等。

          在系統(tǒng)軟硬件劃分完畢后,就可以考慮采用何種方法建立此SoC的原型了。從芯片實際的情況出發(fā),由于算法均由軟件實現(xiàn),所以相應(yīng)的硬件開銷較小,數(shù)字部分除了ARM9E處理器外,均為基于AMBA總線的外設(shè),沒有非常復(fù)雜的數(shù)字模塊。而且SoC中的大部分外設(shè)都采用的ARM提供的IP,我們可以事先獲得這些外設(shè)的ASIC門數(shù)資料,然后再留有冗余地估計出自己開發(fā)的模塊的ASIC門數(shù),最后得到的結(jié)果是在0.13 m工藝下大概數(shù)字部分總共20萬門的規(guī)模(除去處理器 ),這完全可以用一塊FPGA裝下整個設(shè)計。意法半導(dǎo)體可以給我們提供ARM946E-S的測試片,所以從成本等多方面衡量,筆者放棄了用ARM integrator的想法,而是用全定制的方法建立SoC原型。

          DWT SoC FPGA原型的框圖,因為是數(shù)?;旌偷腟oC,所以很難做到原型與SoC完全一致,筆者在設(shè)計中盡可能做到兩者的最大相似。 在原型板上模擬部分的音頻ADC和DAC由TI的一片Codec芯片代替,而射頻部分則另外設(shè)計一塊射頻板,在原型板上只留與射頻部分的接口。基于AMBA的外設(shè)全都放入一塊200萬門的Virtex II XC2V2000的FPGA中,AHB總線暴露在板上與ARM946E-S相連。無線對講系統(tǒng)對實時性要求很高,由于只有一片F(xiàn)PGA,所以系統(tǒng)可以運行于一個比較高的頻率上,我們可以驗證系統(tǒng)的實時性能。板上的模擬模塊均有開關(guān)控制,可以隨時從系統(tǒng)中斷開,而且FPGA可以同PC通過串口通信,所以整個原型系統(tǒng)不僅可以通過實際器件獲得輸入激勵,還可以通過計算機(jī)輸入激勵獲得結(jié)果進(jìn)行比較,所以具有較好的可控性和可觀測性。在選擇FPGA的時候應(yīng)注意FPGA提供的時鐘引腳數(shù)目和存儲單元容量一定要滿足系統(tǒng)要求,在設(shè)計原型的時候應(yīng)該將FPGA多數(shù)的I /O引到測試針腳上,以方便設(shè)計者使用邏輯分析儀進(jìn)行信號的實時采集和分析,也可以讓信號發(fā)生器產(chǎn)生一些特定的信號以供系統(tǒng)調(diào)試使用。

          在這個FPGA原型板上筆者進(jìn)行了模塊功能驗證和系統(tǒng)功能驗證。對于DWT SoC中的各個模塊,在進(jìn)行原型驗證前已經(jīng)在工作站上通過了模塊功能驗證,模塊功能驗證程序是由ARM提供的APTEST系列的C程序,平臺是RTL和行為級的混和,仿真結(jié)果通過自己編寫Tube debugging displayer進(jìn)行監(jiān)控,這一過程非常耗時。筆者在FPGA原型板上使用了相同的APTEST的C程序,仿真結(jié)果通過ARM AXD Debugger CONsole進(jìn)行監(jiān)控。仿真速度上FPGA比工作站上的仿真快了3個數(shù)量級,在此種驗證中我們發(fā)現(xiàn)了很少量的bug,說明在工作站上面跑的模塊功能驗證較為成功。

          在FPGA原型板上進(jìn)行系統(tǒng)功能驗證才是進(jìn)行原型驗證真正的意義所在,由于硬件的可觀測性較差,系統(tǒng)功能出錯卻很難找到問題所在,所以筆者編寫了PC端的程序,其目的是產(chǎn)生每個系統(tǒng)功能程序所需要的激勵樣本,將其通過UART送入FPGA,并將取到的結(jié)果與期望樣本進(jìn)行比較。不過這種方法只能驗證基帶部分,基帶部分接口的速率較低,可以通過UART與計算機(jī)實時通信,筆者通過此種方法成功地驗證了數(shù)字基帶部分的功能和實時性。對于系統(tǒng)全功能驗證,是通過連接射頻板進(jìn)行的,在驗證完基帶部分后,用原型板與射頻板的結(jié)合,實現(xiàn)整個系統(tǒng)原型。在筆者對DWT SoC進(jìn)行的原型驗證過程中,發(fā)現(xiàn)了一些嚴(yán)重的在工作站仿真時卻沒有發(fā)現(xiàn)的RTL bug。

          五 小結(jié)

          用FPGA建立SoC原型進(jìn)行驗證是一種高性價比的SoC驗證方法,基于原型的速度接近于現(xiàn)實速度,可以使我們找出其他驗證方法找不出的錯誤。軟件仿真之后建立SoC的原型進(jìn)行驗證已經(jīng)成為絕大部分芯片公司采用的方法,沒有經(jīng)過原型驗證的SoC,會被認(rèn)為是沒有經(jīng)過充分驗證的SoC。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();