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