基于FPGA的原型能為您做些什么
基于FPGA的原型可滿足不同目的需求
原型設(shè)計(jì)不是一個按幾個按鈕就能完成的過程,在它不同的階段需要仔細(xì)的關(guān)注和思考。除說明這個過程需要完成的工作和涉及到的專業(yè)知識外,我們還應(yīng)解釋在 SoC 項(xiàng)目中該進(jìn)行(或者不該進(jìn)行)原型設(shè)計(jì)的原因。
在與原型設(shè)計(jì)人員多年交談中,我們最常問到的一個問題是“為什么您這么做?”答案有多種多樣,我們把它們總結(jié)成了表1中幾條常見的理由。系統(tǒng)了解這些項(xiàng)目的目的和我們進(jìn)行原型設(shè)計(jì)的原因,將有助于我們判斷基于FPGA的原型設(shè)計(jì)是否能為我們的下一個項(xiàng)目提供幫助。
因此,讓我們探究一下表1所述的目的以及基于FPGA的原型方法如何能幫助實(shí)現(xiàn)這些目的。
高性能與準(zhǔn)確度
只有基于FPGA的原型才能提供正確測試設(shè)計(jì)各個方面所需的速度和準(zhǔn)確度。我們把這個理由放在首位的原因是,雖然項(xiàng)目有許多需要實(shí)現(xiàn)的給定目的,但對需要進(jìn)行原型設(shè)計(jì)的團(tuán)隊(duì)來說,這可能是所有理由中最根本的原因。舉例來說,這個團(tuán)隊(duì)的目的可能是驗(yàn)證某些SoC的嵌入式軟件,觀察其在真實(shí)硬件上全速運(yùn)行的情況,但使用原型的根本原因是為了確保高性能與準(zhǔn)確度。我們在虛擬系統(tǒng)中可以在更高的性能水平下驗(yàn)證該軟件,但我們無法達(dá)到使用真實(shí)的RTL所能實(shí)現(xiàn)的準(zhǔn)確度。
實(shí)時數(shù)據(jù)流
難以驗(yàn)證SoC的原因之一是因?yàn)槠錉顟B(tài)取決于許多變量,包括其之前的狀態(tài)、輸入的次序以及更廣泛的SoC輸出系統(tǒng)效應(yīng)(以及可能的反饋)。將SoC設(shè)計(jì)與系統(tǒng)的其他部分相連并以實(shí)時速度運(yùn)行,可以讓我們立即觀察到實(shí)時條件、輸入和系統(tǒng)反饋的變化帶來的效應(yīng)。
葡萄牙波爾圖市Synopsys公司IP團(tuán)隊(duì)開發(fā)的HDMI原型中的實(shí)時數(shù)據(jù)流就是一個很好的例子。在本例中,高清(HD)媒體數(shù)據(jù)流經(jīng)處理內(nèi)核的原型輸出到高清顯示器上,如圖1的方框圖所示。
圖1 HDMI 原型方框圖
通過使用投片前的原型,我們可以立即看到和聽到不同的高清數(shù)據(jù)在我們的設(shè)計(jì)上的效果,反之亦然。只有采用基于FPGA的原型方法才支持這種實(shí)時數(shù)據(jù)流,不僅給此類多媒體應(yīng)用帶來極大好處,也能給許多其他要求對輸入數(shù)據(jù)流做出實(shí)時響應(yīng)的應(yīng)用帶來諸多裨益。
軟硬件集成
在上述實(shí)例中,讀者可能已經(jīng)注意到原型使用了一塊小型MicroBlazeTM CPU,并備有外設(shè)和存儲器,從而體現(xiàn)了一個 SoC的所有常見模塊。在這個設(shè)計(jì)中,運(yùn)行在CPU上的軟件主要用于加載和控制A/V處理。然而,在許多SoC設(shè)計(jì)中,軟件最耗精力。
鑒于軟件已成為SoC開發(fā)工作的主體部分,軟件工作在項(xiàng)目日程中占據(jù)關(guān)鍵位置越來越常見。當(dāng)SoC能夠有效達(dá)到量產(chǎn)標(biāo)準(zhǔn)的時候,決定項(xiàng)目實(shí)際完成日期的是軟件開發(fā)和驗(yàn)證工作。在這種情況下,系統(tǒng)開發(fā)團(tuán)隊(duì)如何才能提升軟件開發(fā)和驗(yàn)證工作的效率呢?要回答這個問題,我們需要查看軟件開發(fā)團(tuán)隊(duì)把時間都花在什么地方。
為軟件開發(fā)建立SoC的模型
軟件由于自身的復(fù)雜性,很難做到完美。對我們在日常使用計(jì)算機(jī)的過程中遇到的軟件升級、服務(wù)包和漏洞修補(bǔ)的情況,我們都已經(jīng)司空見慣。但是,具體到嵌入 SoC 中的軟件,這種無休止的軟件改進(jìn)方法就遇到了障礙。另一方面,相比于通用的計(jì)算機(jī)軟件而言,與嵌入式軟件互動的系統(tǒng),其設(shè)定的使用模式和環(huán)境條件都更容易確定。而且,為較簡單的系統(tǒng)開發(fā)的嵌入式軟件可以比較簡單,也就更易于全面驗(yàn)證。舉例來說,控制車輛子系統(tǒng)或電子玩具的SoC比在實(shí)時操作系統(tǒng)(RTOS)上運(yùn)行許多應(yīng)用和流程的智能手機(jī)更容易進(jìn)行全面測試。
如果我們更加仔細(xì)地觀察運(yùn)行在這類智能手機(jī)上的軟件,例如圖2所示的Android軟件,我們可以看到一種多層布置,這稱為軟件協(xié)議棧。
圖2 Android軟件協(xié)議棧
在觀察軟件協(xié)議棧時,我們會發(fā)現(xiàn),協(xié)議棧的最底層——也就是那些最接近硬件的部分,主要是為了滿足將軟件映射到SoC硬件上的需求。這就需要對硬件有絕對的了解,甚至包括地址和時鐘周期等。軟件協(xié)議棧最底層的設(shè)計(jì)人員往往稱自己為平臺工程師,他們的工作就是準(zhǔn)確描述硬件,以便協(xié)議棧的更高層次能夠識別和重復(fù)使用。這種描述被某些 RTOS廠商稱為板支持包(BSP),與我們?nèi)粘J褂玫?PC 的基本輸入/輸出系統(tǒng)(BIOS)類似。
協(xié)議棧從下往上第二層包含 RTOS的內(nèi)核以及將較高層次的軟件與被描述的硬件相連的必要驅(qū)動程序。在這些協(xié)議棧的最底層中,平臺工程師和驅(qū)動程序開發(fā)人員需要在真實(shí)的SoC或完全準(zhǔn)確的SoC模型上驗(yàn)證他們的代碼。這個層面的軟件開發(fā)人員需要全面了解各時鐘周期軟件的行為。
作為軟件開發(fā)人員的另一極,在協(xié)議棧的頂層,我們可以看到用戶空間,在這里可以同時運(yùn)行多個應(yīng)用,比如像智能電話中的聯(lián)系人管理器、視頻顯示器、互聯(lián)網(wǎng)瀏覽器和實(shí)際呼叫的電話子系統(tǒng)。這些應(yīng)用中的每一個都不能直接訪問SoC硬件,而且實(shí)際上在某種程度上違背了所有硬件考慮事項(xiàng)。這些應(yīng)用依賴運(yùn)行在協(xié)議棧較低層的軟件代表自己與SoC硬件及系統(tǒng)其他部分通信。
我們可以歸納為:在協(xié)議棧的每一層,軟件開發(fā)人員只需要一個足夠準(zhǔn)確的模型來讓自己的代碼認(rèn)為自己運(yùn)行在目標(biāo) SoC上即可。超過必要的準(zhǔn)確度只會讓模型在模擬器上的運(yùn)行速度下降。實(shí)際上,任何層面的SoC建模,都要求我們把硬件和協(xié)議棧描述為比當(dāng)前層面更低的一層,以便進(jìn)行驗(yàn)證。而且在理想的情況下,我們應(yīng)該只要求夠用的準(zhǔn)確度,以實(shí)現(xiàn)最高性能。
這種只為軟件層提供“夠用的準(zhǔn)確度”的建模方法為不同的軟件開發(fā)人員提供了多種不同的建模環(huán)境,供他們在SoC項(xiàng)目的不同階段使用??梢圆捎肧ystemC這樣的語言進(jìn)行事務(wù)處理層面的建模,創(chuàng)建出一個準(zhǔn)確度低但速度足夠快的仿真器模型,用來同時運(yùn)行許多應(yīng)用。如果實(shí)時的真實(shí)數(shù)據(jù)的處理不是很重要,那么考慮采用虛擬原型方法比較好。
不過,必須完整運(yùn)行整個軟件協(xié)議?;蛱幚碚鎸?shí)環(huán)境中的數(shù)據(jù)時,最適合采用基于FPGA的原型方法。
使用原型驗(yàn)證軟件的實(shí)例
只有采用基于FPGA的原型方法才能夠打破建模方法中準(zhǔn)確度與性能之間內(nèi)在的相互牽制關(guān)系。采用FPGA,我們既能實(shí)現(xiàn)實(shí)時的速度,又能以完全的RTL周期精度建模。這樣,單個原型不僅能供低層軟件驗(yàn)證要求的準(zhǔn)確模型使用,又能供高層應(yīng)用開發(fā)人員需要的高速模型使用。實(shí)際上,整個SoC軟件協(xié)議棧都可以在單個基于FPGA的原型上建模。德克薩斯州奧斯汀市Freescale Semiconductor公司移動產(chǎn)品部的Scott Constable及其團(tuán)隊(duì)開展的項(xiàng)目就是采用FPGA驗(yàn)證軟件的一個很好的例子。
Freescale非常想加快SoC開發(fā)進(jìn)程,因?yàn)槭謾C(jī)市場上產(chǎn)品生命周期短,需要產(chǎn)品盡快打入市場。這不僅是為了贏得競爭,也是為了避免迅速過時。通過分析流程中耗時最多的環(huán)節(jié),F(xiàn)reescale發(fā)現(xiàn)通過加快手機(jī)3G協(xié)議測試工作可以帶來最明顯的效果。如果測試工作能夠在流片前完成,F(xiàn)reescale就可以將項(xiàng)目時間縮短數(shù)月。與通常只有一到兩年的產(chǎn)品生命周期而言,這非常重要。
協(xié)議測試是一個復(fù)雜的過程,就算以較高的實(shí)時速度進(jìn)行,也需要一天才能完成。采用FPGA是因?yàn)檫@是實(shí)現(xiàn)必要的時鐘速度,及時完成測試的唯一途徑。
評論