新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 內嵌ARM9E內核系統級芯片的原型驗證方法

        內嵌ARM9E內核系統級芯片的原型驗證方法

        作者: 時間:2012-03-15 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/149425.htm

        【關鍵詞】:SoC,驗證,ARM9,FPGA,快速原型,軟/硬件協同驗證

        1 引言

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

        2 SoC原型驗證的基本流程和優缺點分析

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

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

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

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

        3 SoC原型驗證的常用方法

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

        3.1 全定制的SoC原型。

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

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

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

        3.3 使用專業的SoC原型開發套件。

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

        4 一款 SoC原型驗證實例

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

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

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

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

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

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

        五 小結

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 胶南市| 嘉善县| 新密市| 马山县| 河西区| 瑞金市| 五华县| 正安县| 黄平县| 保靖县| 永川市| 林口县| 抚顺市| 河津市| 平凉市| 明光市| 寿阳县| 炉霍县| 富阳市| 砚山县| 五河县| 通海县| 东明县| 达孜县| 长岭县| 县级市| 涞源县| 诸城市| 新邵县| 米林县| 芷江| 故城县| 巴林左旗| 东兴市| 珠海市| 开封市| 靖江市| 营口市| 肃南| 张家川| 高州市|