前言
作為基于FPGA的原型設(shè)計(jì)的倡導(dǎo)者,我們可能會(huì)偏向于它的好處,而對(duì)其缺陷視而不見,然而,這不是我們的意圖。本文系列旨在給一個(gè)平衡的觀點(diǎn)FPGA-based原型的利弊,說(shuō)到底,如果他們能通過(guò)其他方法器目標(biāo)會(huì)更好地滿足,例如使用基于SystemC的虛擬原型,我們不想讓人們必須要使用一個(gè)長(zhǎng)原型項(xiàng)目。
本章將提供基于FPGA的原型設(shè)計(jì)的目的和局限性。完成本章后,讀者應(yīng)該深入了解基于FPGA的原型設(shè)計(jì)對(duì)系統(tǒng)級(jí)驗(yàn)證的適用性和其他目標(biāo)的適用性。正如我們將在后面的章節(jié)中看到的,通過(guò)保持專注于原型項(xiàng)目的目標(biāo),我們可以簡(jiǎn)化我們關(guān)于平臺(tái)、IP使用、設(shè)計(jì)移植、調(diào)試等方面的決策。因此,我們可以通過(guò)檢查來(lái)自世界各地的原型團(tuán)隊(duì)的一些例子,從其他人在他們的項(xiàng)目中所擁有的不同目標(biāo)中學(xué)習(xí)。
1-基于FPGA的原型
原型設(shè)計(jì)不是一個(gè)按鈕式的過(guò)程,在不同的階段需要大量的護(hù)理和考慮。除了在接下來(lái)的幾章中解釋這些行為和專業(yè)知識(shí)之外,我們還應(yīng)該給予一些激勵(lì),說(shuō)明為什么我們應(yīng)該(或者可能不應(yīng)該)在我們的SoC項(xiàng)目中執(zhí)行原型設(shè)計(jì)。
在創(chuàng)作這本書之前的多年里,在與原型驗(yàn)證領(lǐng)域的朋友的對(duì)話中,我們喜歡問(wèn)的一個(gè)問(wèn)題是:“你為什么要這么做?”有很多答案,但我們能夠?qū)⑺鼈兎诸悶楸?中所示的一般原因。例如,“真實(shí)世界的數(shù)據(jù)效應(yīng)”可能描述一個(gè)團(tuán)隊(duì)的原型,以便使系統(tǒng)的速度模型能夠與其他系統(tǒng)或外圍設(shè)備互連,可能是為了測(cè)試與特定的新接口標(biāo)準(zhǔn)的遵從性。
他們制作原型的廣泛理由是“與現(xiàn)實(shí)世界的接口”,而原型設(shè)計(jì)確實(shí)提供了最快和最準(zhǔn)確的方法來(lái)實(shí)現(xiàn)這一點(diǎn)。
對(duì)這些項(xiàng)目目標(biāo)的結(jié)構(gòu)化理解以及為什么我們應(yīng)該使用原型,將幫助我們決定基于FPGA的原型設(shè)計(jì)是否會(huì)有利于我們的下一個(gè)項(xiàng)目。
因此,讓我們來(lái)探討表1中的每個(gè)目標(biāo),以及基于FPGA的原型設(shè)計(jì)如何提供幫助。在許多情況下,我們還將提供來(lái)自現(xiàn)實(shí)世界的例子,作者希望提前感謝那些在這一努力中提供了自己的經(jīng)驗(yàn)作為指導(dǎo)的人。
表1:使用基于FPGA的原型的一般目標(biāo)和原因
1.1.高性能和準(zhǔn)確性
只有基于FPGA的原型設(shè)計(jì)提供了正確測(cè)試設(shè)計(jì)的許多方面所需的速度和準(zhǔn)確性,我們將進(jìn)行描述。
我們把這個(gè)原因放在列表的首位,因?yàn)樗菆F(tuán)隊(duì)制作原型的根本原因,盡管項(xiàng)目有許多不同的交付目標(biāo)。例如,該團(tuán)隊(duì)的目標(biāo)可能是驗(yàn)證一些SoC的一些嵌入式軟件,看看它如何在實(shí)際硬件上以速度運(yùn)行,但使用原型的潛在原因是為了高性能和準(zhǔn)確性。
我們可以在虛擬系統(tǒng)上驗(yàn)證軟件的更高的性能,但我們失去了使用真正的RTL的準(zhǔn)確性。
1.2.實(shí)時(shí)數(shù)據(jù)流
驗(yàn)證SoC困難的部分原因是它的狀態(tài)依賴于許多變量,包括它以前的狀態(tài)、輸入序列和SoC輸出的更廣泛的系統(tǒng)效應(yīng)(和可能的反饋)。
以實(shí)時(shí)連接到系統(tǒng)其他部分的速度運(yùn)行SoC設(shè)計(jì),可以讓我們能夠看到實(shí)時(shí)條件、輸入和系統(tǒng)反饋發(fā)生變化時(shí)的即時(shí)影響。
圖14:HDMI原型機(jī)方框圖
一個(gè)非常好的例子是由新思科的同步系統(tǒng)IP組執(zhí)行的HDMI原型中的實(shí)時(shí)數(shù)據(jù)流。在這里,一個(gè)高清(HD)媒體數(shù)據(jù)流通過(guò)一個(gè)處理核心的原型并被路由到一個(gè)高清顯示器,如圖14中的方框圖所示。
我們將了解更多關(guān)于這個(gè)設(shè)計(jì)在第十章當(dāng)我們考慮IP使用原型,但目前,注意在圖的底部有音頻和高清視頻數(shù)據(jù)流實(shí)時(shí)從接收器(從外部來(lái)源)通過(guò)原型和實(shí)時(shí)HDMI物理連接到一個(gè)外部監(jiān)視器。
通使用一個(gè)預(yù)芯片(模擬)原型,我們可以立即看到和聽到不同的高清數(shù)據(jù)對(duì)我們的設(shè)計(jì)的影響,反之亦然。
只有基于FPGA的原型允許這種實(shí)時(shí)數(shù)據(jù)流,這不僅給這種多媒體應(yīng)用帶來(lái)了巨大的好處,也給許多需要輸入數(shù)據(jù)流實(shí)時(shí)響應(yīng)的應(yīng)用也提供了巨大的好處。
1.3.軟硬件集成
在上面的示例中,讀者可能已經(jīng)注意到在原型中有一個(gè)小的MicroBlazeCPU,以及外圍設(shè)備和內(nèi)存,所以SoC的所有類似的塊都存在。
在這種設(shè)計(jì)中,在CPU中運(yùn)行的軟件主要用于加載和控制AV處理,然而,在許多SoC設(shè)計(jì)中,最需要大部分設(shè)計(jì)工作的是軟件。
鑒于軟件已經(jīng)主導(dǎo)SoC開發(fā)工作,軟件工作在項(xiàng)目進(jìn)度的關(guān)鍵路徑上越來(lái)越普遍。是軟件開發(fā)和驗(yàn)證,支配了SoC能夠有效達(dá)到批量生產(chǎn)的實(shí)際完成日期。在這種情況下,系統(tǒng)團(tuán)隊(duì)可以做些什么來(lái)提高軟件開發(fā)和驗(yàn)證的生產(chǎn)力呢?
要回答這個(gè)問(wèn)題,我們需要看看軟件團(tuán)隊(duì)把時(shí)間花在哪里,我們將在下一節(jié)中探討。
1.4.為軟件開發(fā)的SoC建模
軟件是復(fù)雜的,很難做到完美。我們都熟悉軟件升級(jí)、服務(wù)包和我們?nèi)粘J褂?a href="http://www.www27dydycom.cn/v/tag/1247/" target="_blank">電腦的錯(cuò)誤修復(fù)。
然而,在嵌入到SoC中的軟件的情況下,這種對(duì)軟件的永久微調(diào)不太容易實(shí)現(xiàn)。
從好的方面來(lái)說(shuō),與嵌入式軟件交互的系統(tǒng)、其預(yù)期的使用模式和環(huán)境情況通常都比更通用的計(jì)算機(jī)軟件更容易確定。
此外,用于更簡(jiǎn)單系統(tǒng)的嵌入式軟件本身可以保持簡(jiǎn)單,因此更容易完全驗(yàn)證。例如,控制車輛子系統(tǒng)或電子玩具的SoC可以比在實(shí)時(shí)操作系統(tǒng)(RTOS)上運(yùn)行許多應(yīng)用程序和進(jìn)程的智能手機(jī)更容易得到充分的測(cè)試。
如果我們更仔細(xì)地觀察在這樣的智能手機(jī)中運(yùn)行的軟件,如圖15所示的安卓軟件,那么我們會(huì)看到一個(gè)多層的排列,稱為軟件堆棧。這張圖是基于軟件設(shè)計(jì)師弗蘭克·阿貝爾森在他的書《解鎖安卓系統(tǒng)》中的原創(chuàng)作品。
看看堆棧,我們應(yīng)該意識(shí)到最低級(jí)別,即最接近硬件的,是由需要將軟件映射到SoC硬件的需求主導(dǎo)的。這需要對(duì)硬件的絕對(duì)知識(shí)的地址和時(shí)鐘周期水平的精度。軟件堆棧的最低級(jí)別的設(shè)計(jì)者,通常自稱為平臺(tái)工程師,其任務(wù)是用堆棧的更高級(jí)別可以識(shí)別和重用來(lái)描述硬件。這個(gè)描述被一些RTOS供應(yīng)商稱為BSP(板支持包),也類似于我們?nèi)粘c中的BIOS(基本輸入/輸出系統(tǒng))層。
堆棧底部的下一層包含RTOS的內(nèi)核和將所描述的硬件與更高級(jí)軟件接口所需的驅(qū)動(dòng)程序。在堆棧的這些最低級(jí)別中,平臺(tái)工程師和驅(qū)動(dòng)程序開發(fā)人員將需要在真正的SoC或一個(gè)完全準(zhǔn)確的SoC模型上驗(yàn)證他們的代碼。這個(gè)級(jí)別的軟件開發(fā)人員需要在每個(gè)時(shí)鐘周期中完全看到他們的軟件的行為。
對(duì)于軟件開發(fā)人員來(lái)說(shuō),另一個(gè)極端是,在堆棧的頂層,我們會(huì)發(fā)現(xiàn)可能同時(shí)運(yùn)行多個(gè)應(yīng)用程序的用戶空間。在智能手機(jī)的例子中,這些可以是聯(lián)系人管理器、視頻顯示器、互聯(lián)網(wǎng)瀏覽器,當(dāng)然,還有實(shí)際上打電話的電話子系統(tǒng)。這些應(yīng)用程序都不能直接訪問(wèn)SoC硬件,而且實(shí)際上與對(duì)硬件的任何考慮都有些不同。這些應(yīng)用程序依賴于運(yùn)行在堆棧的較低級(jí)別上的軟件來(lái)代表其與SoC硬件和世界其他地方進(jìn)行通信。
我們可以概括,在堆棧的每一層,軟件開發(fā)人員只需要一個(gè)足夠精確的模型來(lái)欺騙自己的代碼,使其認(rèn)為它在目標(biāo)SoC中運(yùn)行。超過(guò)必要的精度只會(huì)導(dǎo)致模型在模擬器上運(yùn)行得更慢。實(shí)際上,任何級(jí)別的SoC建模都要求我們表示硬件和堆棧,直到剛好低于當(dāng)前級(jí)別需要驗(yàn)證的層,我們應(yīng)該以足夠的精度工作,以允許最大的性能。
例如,位于堆棧頂部的應(yīng)用程序開發(fā)人員可以在真正的SoC或模型上測(cè)試他們的代碼。在這種情況下,模型只需要足夠精確,以使應(yīng)用程序認(rèn)為它運(yùn)行在真正的SoC上,也就是說(shuō),它不需要周期精度或硬件的細(xì)粒度可見性。然而,速度很重要,因?yàn)槎鄠€(gè)應(yīng)用程序?qū)⒉l(fā)運(yùn)行,并在許多情況下與真實(shí)世界的數(shù)據(jù)進(jìn)行接口。
這種模型的方法對(duì)于軟件層來(lái)說(shuō)具有“剛好足夠的準(zhǔn)確性”,從而導(dǎo)致不同的軟件開發(fā)人員在SoC項(xiàng)目中在不同的時(shí)間使用許多不同的建模環(huán)境。可以使用以SystemC等語(yǔ)言建模的事務(wù)級(jí)模擬來(lái)創(chuàng)建一個(gè)模擬器模型,該模型的運(yùn)行精度較低,但速度足夠快,可以一起運(yùn)行許多應(yīng)用程序。如果處理實(shí)時(shí)的、真實(shí)世界的數(shù)據(jù)并不重要,那么我們最好考慮這種虛擬原型方法。
然而,當(dāng)整個(gè)軟件堆棧必須一起運(yùn)行或必須處理真實(shí)世界的數(shù)據(jù)時(shí),基于FPGA的原型設(shè)計(jì)就變得最有用了。
1.5.軟件驗(yàn)證的原型使用示例
只有基于FPGA的原型設(shè)計(jì)才打破了建模方法中固有的準(zhǔn)確性和性能之間的反比關(guān)系。通過(guò)使用FPGAs,我們可以實(shí)現(xiàn)實(shí)時(shí)到最高的速度,但仍然可以在整個(gè)RTL周期精度下進(jìn)行建模。
這使得相同的原型不僅可以用于低級(jí)軟件驗(yàn)證所需的精確模型,而且還可以用于高級(jí)應(yīng)用程序開發(fā)人員所需的高速模型。
實(shí)際上,整個(gè)SoC軟件堆??梢曰谝粋€(gè)基于FPGA的原型進(jìn)行建模。在Scott執(zhí)行的一個(gè)項(xiàng)目中,可以看到使用fpga進(jìn)行軟件驗(yàn)證的一個(gè)很好的例子康斯特布爾和他的團(tuán)隊(duì)在飛思卡爾斯半導(dǎo)體的手機(jī)產(chǎn)品集團(tuán)。
飛思卡爾對(duì)加速SoC的開發(fā)非常感興趣,因?yàn)檩^短的產(chǎn)品生命周期要求產(chǎn)品快速進(jìn)入市場(chǎng),不僅是為了擊敗競(jìng)爭(zhēng)對(duì)手,也是為了避免迅速過(guò)時(shí)。飛思卡爾分析了其流程中最大的時(shí)間下沉量,并決定通過(guò)加速他們的手機(jī)3G協(xié)議測(cè)試來(lái)實(shí)現(xiàn)最大的好處。如果這種測(cè)試可以在芯片前進(jìn)行,那么飛思卡爾將在項(xiàng)目計(jì)劃中節(jié)省相當(dāng)多幾個(gè)月的時(shí)間。與只有一到兩年的產(chǎn)品壽命相比,這確實(shí)是非常重要的。
協(xié)議測(cè)試是一個(gè)復(fù)雜的過(guò)程,即使在高實(shí)時(shí)速度下也需要一天才能完成。使用RTL模擬將需要數(shù)年時(shí)間,而在更快的模擬器上運(yùn)行仍然需要數(shù)周時(shí)間,這兩者都不是一個(gè)實(shí)際的解決方案。之所以選擇fpga,是因?yàn)檫@是實(shí)現(xiàn)必要的時(shí)鐘速度以及時(shí)完成測(cè)試的唯一方法。
協(xié)議測(cè)試需要開發(fā)產(chǎn)品的各個(gè)軟件方面,包括硬件驅(qū)動(dòng)程序、操作系統(tǒng)和協(xié)議堆棧代碼。雖然主要目標(biāo)是協(xié)議測(cè)試,如前所述,通過(guò)使用fpga,所有這些軟件開發(fā)都將在芯片前完成,并大大加速各種最終產(chǎn)品計(jì)劃。
飛思卡爾原型設(shè)計(jì)了一個(gè)多芯片系統(tǒng),其中包括一個(gè)雙核MXC2基帶處理器和一個(gè)射頻收發(fā)芯片的數(shù)字部分。基帶處理器包括一個(gè)用于調(diào)制解調(diào)器處理的飛思卡爾星核心DSP核心和一個(gè)用于用戶應(yīng)用程序處理的ARM926核心,加上60多個(gè)外設(shè)。
使用同步系統(tǒng)HAPS-54原型板來(lái)實(shí)現(xiàn)原型,如圖16所示?;鶐幚砥饔谐^(guò)500萬(wàn)ASIC門,斯科tt的團(tuán)隊(duì)使用同步系統(tǒng)認(rèn)證工具將其劃分為板上的三個(gè)XilinxVirtex-5FPGAs,而數(shù)字射頻設(shè)計(jì)被放置在第四FPGA中。飛思卡爾決定不制作模擬部分的原型,而是直接從安立蘇協(xié)議測(cè)試箱中以數(shù)字形式交付蜂窩網(wǎng)絡(luò)數(shù)據(jù)。
舊的核心使用的一些設(shè)計(jì)技術(shù)在ASIC中非常有效,但它們不是非常FPGA友好。此外,一些RTL是從系統(tǒng)級(jí)設(shè)計(jì)代碼自動(dòng)生成的,由于時(shí)鐘網(wǎng)絡(luò)過(guò)于復(fù)雜,這些代碼對(duì)fpga也相當(dāng)不友好。因此,必須對(duì)RTL進(jìn)行一些修改,使其更兼容FPGA,但好處是顯著的。
除了加速協(xié)議測(cè)試,當(dāng)飛思卡爾的工程師收到第一個(gè)芯片時(shí),他們已經(jīng)能夠:
??發(fā)布在芯片之后沒有重大修改的調(diào)試器軟件。
???完整的驅(qū)動(dòng)程序軟件。
???將SoC啟動(dòng)到操作系統(tǒng)軟件提示符。
???實(shí)現(xiàn)了modem camp和注冊(cè)。飛思卡爾團(tuán)隊(duì)在收到第一個(gè)芯片片僅僅一個(gè)月后就達(dá)到了通過(guò)系統(tǒng)撥打移動(dòng)電話的里程碑,使產(chǎn)品進(jìn)度加快了6個(gè)多月。
為了回答我們關(guān)于基于FPGA的原型設(shè)計(jì)可以為我們做些什么的問(wèn)題,讓我們聽聽斯科特·康斯特布爾自己的話:
“除了我們所聲明的協(xié)議測(cè)試目標(biāo)外,我們的FPGA系統(tǒng)原型還在許多其他領(lǐng)域提供了項(xiàng)目進(jìn)度加速,多次證明了它的價(jià)值。也許最重要的是,讓工程師更早地參與到項(xiàng)目計(jì)劃中,讓所有團(tuán)隊(duì)從設(shè)計(jì)到軟件到驗(yàn)證再到六個(gè)月前非常熟悉產(chǎn)品的應(yīng)用程序,這是不可估量的人力好處。這種加速的產(chǎn)品專業(yè)知識(shí)的影響很難在甘特圖上加以衡量,但可能是最有益的。
鑒于這些成就,**使用FPGA原型解決方案來(lái)加速ASIC時(shí)間表是“顯而易見的”**。此后,我們已經(jīng)將這種方法擴(kuò)展到飛思卡爾網(wǎng)絡(luò)和微控制器組中,并使用原型進(jìn)行新的IP驗(yàn)證、驅(qū)動(dòng)程序開發(fā)、調(diào)試器開發(fā)和客戶演示?!?/pre>這個(gè)示例展示了基于FPGA的原型設(shè)計(jì)如何成為軟件團(tuán)隊(duì)工具箱中的一個(gè)有價(jià)值的補(bǔ)充,并在產(chǎn)品質(zhì)量和項(xiàng)目時(shí)間表方面帶來(lái)顯著的投資回報(bào)。
2-接口效益:測(cè)試真實(shí)世界的數(shù)據(jù)效果
很難想象一個(gè)SoC設(shè)計(jì)不符合輸入數(shù)據(jù)的基本結(jié)構(gòu),并對(duì)輸入數(shù)據(jù)進(jìn)行一些處理以產(chǎn)生輸出數(shù)據(jù)。事實(shí)上,如果我們推進(jìn)SoC設(shè)計(jì),我們將發(fā)現(xiàn)許多遵循相同結(jié)構(gòu)的子塊,以此類推,一直到單獨(dú)的門級(jí)別。
驗(yàn)證這些級(jí)別上的正確處理需要我們提供一組完整的輸入數(shù)據(jù)集,并觀察正確的輸出數(shù)據(jù)是由于處理的結(jié)果而創(chuàng)建的。對(duì)于單個(gè)的門,這是微不足道的,而對(duì)于小的RTL塊,這仍然是可能的。然而,隨著系統(tǒng)復(fù)雜性的增長(zhǎng),在統(tǒng)計(jì)上很快就不可能確保輸入數(shù)據(jù)和初始條件的完整性,特別是當(dāng)軟件在多個(gè)處理器上運(yùn)行時(shí)。
為了提高傳統(tǒng)驗(yàn)證方法的效率和覆蓋范圍,并克服這種復(fù)雜性的挑戰(zhàn),已經(jīng)進(jìn)行了大量的研究和投資。在完整的SoC級(jí)別上,我們需要使用各種不同的驗(yàn)證方法,以覆蓋所有可能的輸入組合,并防止不太可能的組合。
這最后一點(diǎn)很重要,因?yàn)椴豢深A(yù)測(cè)的輸入數(shù)據(jù)可能會(huì)打亂除了最精心設(shè)計(jì)的基于soc的關(guān)鍵系統(tǒng)之外的所有系統(tǒng)。SoC的許多可能的狀態(tài)加上新的輸入數(shù)據(jù),或不尋常的組合或序列的輸入數(shù)據(jù),可以使SoC進(jìn)入未驗(yàn)證的狀態(tài)。當(dāng)然,這可能不是一個(gè)問(wèn)題,而且SoC可以在系統(tǒng)的任何其他部分或用戶沒有意識(shí)到的情況下進(jìn)行恢復(fù)。
然而,在最終的芯片中要避免未經(jīng)驗(yàn)證的狀態(tài),因此我們需要盡可能徹底地測(cè)試設(shè)計(jì)的方法。驗(yàn)證工程師使用強(qiáng)大的方法,如約束隨機(jī)刺激和先進(jìn)的測(cè)試安全帶,在設(shè)計(jì)的功能模擬中執(zhí)行各種各樣的測(cè)試,旨在達(dá)到可接受的覆蓋范圍。然而,完整性仍然受驗(yàn)證工程師給出的方向和約束以及可用來(lái)運(yùn)行模擬本身。因此,約束隨機(jī)驗(yàn)證永遠(yuǎn)不是完全詳盡的,但它將大大增加我們測(cè)試了所有輸入組合的信心,包括可能的和不可能的。
為了防止角的情況組合,我們可以通過(guò)在現(xiàn)實(shí)世界中運(yùn)行的基于FPGA的原型上運(yùn)行的設(shè)計(jì)觀察來(lái)補(bǔ)充我們的驗(yàn)證結(jié)果。通過(guò)將SoC設(shè)計(jì)放在原型中,我們可以以一個(gè)速度和精度點(diǎn)運(yùn)行,與最終芯片非常比較,允許在最終環(huán)境數(shù)據(jù)中“浸泡”測(cè)試,就像最終芯片所做的一樣。
將SoC設(shè)計(jì)沉浸到現(xiàn)實(shí)世界場(chǎng)景中的一個(gè)例子是在西班牙巴倫西亞的DS2中使用了基于FPGA的原型設(shè)計(jì)。
3 示例:原型沉浸在真實(shí)世界的數(shù)據(jù)中
寬帶過(guò)電力線(BPL)技術(shù)使用通常無(wú)法檢測(cè)到的信號(hào),通過(guò)電力總電電力線傳輸和接收信息。BPL的一個(gè)典型用途是通過(guò)主電線將高清視頻從接收器分發(fā)到任何顯示器上,如圖17所示。
DS2的BPL設(shè)計(jì)的核心是硬件和嵌入式軟件中的復(fù)雜算法,這些軟件可以編碼和檢索高速傳輸?shù)男盘?hào)進(jìn)出電力線。這些電力線可能是非常嘈雜的電氣環(huán)境,因此開發(fā)的一個(gè)關(guān)鍵部分是在各種各樣的真實(shí)條件下驗(yàn)證這些算法,如圖18所示。
DS2的ASIC設(shè)計(jì)經(jīng)理哈維爾·希門尼斯解釋了基于FPGA的原型為他們做了什么。
“為了開發(fā)可靠和高速的通信,有必要使用一種可靠的驗(yàn)證技術(shù)。它需要使用不同的信道和噪聲模型進(jìn)行多次試驗(yàn),只有基于FPGA的原型允許我們完全測(cè)試算法,并在原型上運(yùn)行設(shè)計(jì)的嵌入式軟件。此外,我們還可以將原型機(jī)帶出實(shí)驗(yàn)室,進(jìn)行廣泛的現(xiàn)場(chǎng)測(cè)試。我們能夠在真實(shí)的家庭和工作場(chǎng)所中放置多個(gè)原型,其中一些確實(shí)是惡劣的電氣環(huán)境。我們不能為此目的考慮模擬器系統(tǒng),因?yàn)樗鼈冎皇翘嘿F,而且不可移植。
在實(shí)驗(yàn)室之外使用基于FPGA的原型設(shè)計(jì)具有指導(dǎo)意義,因?yàn)槲覀兛吹?,使平臺(tái)可靠和便攜是成功的關(guān)鍵。我們將在第5章和第12章中進(jìn)一步探討這一點(diǎn)。
4 可行性實(shí)驗(yàn)室實(shí)驗(yàn)的好處
在項(xiàng)目開始時(shí),就會(huì)對(duì)芯片的拓?fù)浣Y(jié)構(gòu)、性能、功耗和片上通信結(jié)構(gòu)做出基本的決策。其中一些實(shí)驗(yàn)最好使用算法或系統(tǒng)級(jí)建模工具來(lái)執(zhí)行,但一些額外的實(shí)驗(yàn)也可以使用FPGAs來(lái)執(zhí)行。
這真的是基于FPGA的原型設(shè)計(jì)嗎?我們使用FPGAs來(lái)原型一個(gè)想法,但它與使用算法或數(shù)學(xué)工具不同,因?yàn)槲覀冃枰恍㏑TL,可能是由這些高級(jí)工具生成的。
但是一旦在FPGA,早期的信息可以聚集起來(lái)來(lái)幫助推動(dòng)算法的優(yōu)化和最終的SoC架構(gòu)?;贔PGA的原型給項(xiàng)目的這個(gè)階段帶來(lái)的額外好處是,可以使用更精確的模型,它可以運(yùn)行得足夠快,從而與實(shí)時(shí)輸入進(jìn)行交互。
這類實(shí)驗(yàn)原型并不是本書的主題,但值得一提,因?yàn)樗鼈兪窃谕暾腟oC項(xiàng)目之間使用基于FPGA的原型硬件和工具的另一種方式,從而為我們的投資獲得進(jìn)一步的回報(bào)。
5 在實(shí)驗(yàn)室外的原型使用情況
基于FPGA的驗(yàn)證SoC設(shè)計(jì)的原型設(shè)計(jì)的一個(gè)真正獨(dú)特的方面是它獨(dú)立工作的能力。這是因?yàn)閒pga可以配置,也許可以從閃存EEPROM卡或其他獨(dú)立的介質(zhì),而不需要從主機(jī)電腦的監(jiān)督。因此,該原型可以獨(dú)立運(yùn)行,并用于在與其他建模技術(shù)提供的情況完全不同的情況下測(cè)試SoC設(shè)計(jì),例如依賴于主機(jī)干預(yù)的仿真。
在極端情況下,原型可能會(huì)完全從實(shí)驗(yàn)室?guī)У浆F(xiàn)場(chǎng)的現(xiàn)實(shí)環(huán)境中。一個(gè)很好的例子可能是能夠?qū)⒃桶惭b在一個(gè)移動(dòng)的車輛上,并探索設(shè)計(jì)對(duì)外部噪聲、運(yùn)動(dòng)、天線場(chǎng)強(qiáng)等變化的依賴性。例如,作者知道移動(dòng)電話基帶原型已經(jīng)被放置在車輛中,并用于通過(guò)公共GSM網(wǎng)絡(luò)進(jìn)行移動(dòng)電話呼叫。
芯片架構(gòu)師和其他產(chǎn)品專家需要與早期采用者的客戶進(jìn)行交互,并演示其算法的關(guān)鍵特性?;贔PGA的原型設(shè)計(jì)在這個(gè)項(xiàng)目的早期階段可能是一個(gè)至關(guān)重要的好處,但該方法與主流的SoC原型設(shè)計(jì)略有不同。
實(shí)驗(yàn)室中另一個(gè)非常流行的基于FPGA的原型的使用是在貿(mào)易展上進(jìn)行新產(chǎn)品能力的預(yù)生產(chǎn)演示。我們將探索具體需要使用原型在實(shí)驗(yàn)室12章但現(xiàn)在讓我們考慮使用FPGA-based原型的BBC在英國(guó)(是的,BBB)說(shuō)明了實(shí)驗(yàn)室外使用和使用在貿(mào)易展。
6 例子:現(xiàn)實(shí)世界中的一個(gè)原型
英國(guó)廣播公司在英國(guó)推出DVB-T2的一個(gè)研發(fā)項(xiàng)目證明了fpga獨(dú)立運(yùn)營(yíng)的強(qiáng)大能力。DVB-T2是一種新的、最先進(jìn)的開放標(biāo)準(zhǔn),它允許高清電視從地面發(fā)射機(jī)上進(jìn)行廣播。
使用基于FPGA的原型設(shè)計(jì)的原因是,像大多數(shù)國(guó)際標(biāo)準(zhǔn)一樣,DVB-T2技術(shù)規(guī)范花了幾年時(shí)間才完成,事實(shí)上,來(lái)自世界各地的研究人員和技術(shù)人員花了3萬(wàn)個(gè)工程師小時(shí)。只有fpga提供了在此過(guò)程中發(fā)生變化時(shí)所需的靈活性。該規(guī)范在2008年3月被凍結(jié),三個(gè)月后在2008年6月26日以DVB藍(lán)皮書的形式出版。
由于BBC使用的是基于FPGA的原型,與規(guī)范工作并行,由BBC研發(fā)公司的賈斯汀·米切爾領(lǐng)導(dǎo)的BBC實(shí)現(xiàn)團(tuán)隊(duì)能夠?yàn)镈VB-T2開發(fā)一種基于硬件的調(diào)制器和解調(diào)器。
如圖19所示的調(diào)制器是基于同步系統(tǒng)HAPS-51卡,使用來(lái)自Xilinx的Virtex-5 FPGA。HAPS-51卡與BBC研發(fā)公司設(shè)計(jì)的子卡相連。這個(gè)子卡提供了一個(gè)ASI接口來(lái)接受傳入的傳輸流。然后將輸入的傳輸流傳遞到FPGA,根據(jù)DVB-T2標(biāo)準(zhǔn)進(jìn)行編碼,并傳遞回子卡,直接上轉(zhuǎn)換到UHF。
該調(diào)制器用于世界上第一個(gè)從直播電視發(fā)射機(jī)進(jìn)行的DVB-T2傳輸,能夠在規(guī)范發(fā)布的同一天開始。
解調(diào)器,也使用HAPS作為另一個(gè)基于FPGA的原型的基礎(chǔ),完成了端到端鏈,這在2008年9月阿姆斯特丹的IBC展覽上得到了演示,所有在規(guī)范達(dá)成后的三個(gè)月內(nèi)。這是一項(xiàng)了不起的成就,有助于建立人們對(duì)該系統(tǒng)已準(zhǔn)備在2009年推出的信心。
BBC研發(fā)還為DVB-T2項(xiàng)目的其他基本環(huán)節(jié)做出了貢獻(xiàn),包括2009年3月在都靈舉行的一個(gè)非常成功的“PlugFest”,5個(gè)不同的調(diào)制器和6個(gè)不同的解調(diào)器以各種模式一起工作。BBC原型機(jī)的堅(jiān)固和便攜式結(jié)構(gòu)使它成為這種插頭節(jié)活動(dòng)的理想選擇。
Justin解釋了基于FPGA的原型為他們做了什么:
“FPGA最大的優(yōu)勢(shì)之一是能夠跟蹤傳輸發(fā)布日期的后期變化。在對(duì)規(guī)范進(jìn)行更改時(shí),能夠快速更改調(diào)制器是很重要的。很難想象還有另一種技術(shù)能使調(diào)制器和解調(diào)器的快速發(fā)展,以及便攜性,使調(diào)制器和解調(diào)器能夠在現(xiàn)場(chǎng)發(fā)射機(jī)和公開展覽中單獨(dú)使用?!?/p>
7 基于FPGA的原型設(shè)計(jì)不能為我們做些什么?
我們開始這一章的目的是對(duì)基于FPGA的原型設(shè)計(jì)的好處和局限性提供一個(gè)平衡的看法,因此,我們應(yīng)該在這里強(qiáng)調(diào)一些弱點(diǎn)來(lái)平衡之前聲明的優(yōu)勢(shì)是正確的。
(哈哈哈哈哈哈 求生欲)
7.1.一個(gè)基于FPGA的原型機(jī)并不是一個(gè)模擬器
首先,F(xiàn)PGA原型不是RTL模擬器。如果我們的目標(biāo)是編寫一些RTL,然后盡快在FPGA中實(shí)現(xiàn)它,以便看看它是否有效,那么我們應(yīng)該重新考慮被繞過(guò)了什么。
模擬器有兩個(gè)基本組件;可以把它們看作是引擎和儀表盤。
該引擎的工作是刺激模型并記錄結(jié)果。儀表板允許我們檢查這些結(jié)果。我們可能會(huì)以小的增量運(yùn)行模擬器,并通過(guò)我們的儀表盤進(jìn)行調(diào)整,我們可能會(huì)使用一些非常復(fù)雜的刺激——但這幾乎就是模擬器所做的。一個(gè)基于FPGA的原型也能做同樣的事情嗎?答案是否定的。
的確,F(xiàn)PGA是一個(gè)運(yùn)行RTL“模型”的更快的引擎,但是當(dāng)我們添加到設(shè)置該模型的努力中(即,這本書的主要內(nèi)容)時(shí),速度的好處很快就被淹沒了。最重要的是,模擬器的儀表板部分提供了對(duì)刺激的完全控制和結(jié)果的可見性。
我們應(yīng)考慮儀器FPGA的方法,以獲得設(shè)計(jì)功能的一些可見性,但即使是最儀器的設(shè)計(jì)也只提供RTL模擬器儀表板中可獲得的一小部分信息。
因此,模擬器是一個(gè)重復(fù)編寫和評(píng)估RTL代碼的更好的環(huán)境,因此我們應(yīng)該一直等到模擬基本完成并且RTL相當(dāng)成熟之后,然后再將其傳遞給基于FPGA的原型團(tuán)隊(duì)。我們將在第四章中更詳細(xì)地考慮這個(gè)交接點(diǎn)。
7.2.基于FPGA的原型不是ESL
正如我們?cè)诮榻B中所描述的,電子系統(tǒng)級(jí)(ESL)或算法工具,如同步系統(tǒng)的創(chuàng)新者或同步系統(tǒng),允許將設(shè)計(jì)輸入SystemC或從預(yù)定義的模型庫(kù)中構(gòu)建。
然后,我們?cè)谙嗤墓ぞ咧心M這些設(shè)計(jì),并探索它們的系統(tǒng)級(jí)行為,包括在項(xiàng)目的早期階段運(yùn)行軟件和進(jìn)行硬件-軟件權(quán)衡。
為了使用基于FPGA的原型,我們需要RTL,因此它不是探索算法或架構(gòu)的最佳場(chǎng)所,而這些算法在RTL中不經(jīng)常表達(dá)。
基于FPGA的軟件原型設(shè)計(jì)的優(yōu)勢(shì)在于,當(dāng)RTL足夠成熟,允許硬件平臺(tái)被構(gòu)建,然后軟件就可以在一個(gè)更準(zhǔn)確和更真實(shí)的環(huán)境中運(yùn)行。有些人有關(guān)于藍(lán)天的想法,并寫了少量的RTL來(lái)運(yùn)行在FPGA中進(jìn)行可行性研究,如前面在第2.3節(jié)中所述。這是基于FPGAs的原型設(shè)計(jì)的一個(gè)次要但重要的使用,但不要與運(yùn)行整個(gè)SoC的系統(tǒng)級(jí)或算法探索相混淆。
7.3.連續(xù)性是關(guān)鍵
優(yōu)秀的工程師總是為工作選擇正確的工具,但是應(yīng)該有一種方法讓正在進(jìn)行的工作讓其他人繼續(xù)。我們應(yīng)該能夠用盡可能少的工作將來(lái)自ESL模擬的設(shè)計(jì)傳遞到基于FPGA的原型中。一些ESL工具也有一個(gè)使用高級(jí)合成(HLS)實(shí)現(xiàn)芯片的實(shí)現(xiàn)路徑,它生成RTL以包含在整個(gè)SoC項(xiàng)目中。一個(gè)基于FPGA的原型可以使用RTL并在具有周期精度的板上運(yùn)行,但同樣,我們應(yīng)該等到RTL相對(duì)穩(wěn)定,這將在項(xiàng)目的硬件軟件分區(qū)和架構(gòu)探索階段完成之后。
在第13章中,我們將探索如何將基于FPGA的原型鏈接到ESL和RTL模擬中的方法。原型可以補(bǔ)充這些模擬,但不能真正取代它們,所以我們將在這本書中關(guān)注什么基于FPGA的原型可以做得很好。
8 總結(jié):那么為什么要使用基于FPGA的原型設(shè)計(jì)呢?
今天的soc是許多不同專家工作的結(jié)合,從算法研究人員、硬件設(shè)計(jì)師、軟件工程師到芯片布局團(tuán)隊(duì),隨著項(xiàng)目的進(jìn)展,每個(gè)團(tuán)隊(duì)都有自己的需求。SoC項(xiàng)目的成功在很大程度上取決于上述每一位專家所使用的硬件驗(yàn)證、硬件軟件共同驗(yàn)證和軟件驗(yàn)證方法?;贔PGA的原型設(shè)計(jì)為這些專家?guī)?lái)了不同的好處:
8.1.對(duì)于硬件團(tuán)隊(duì)
對(duì)于硬件團(tuán)隊(duì)來(lái)說(shuō),驗(yàn)證工具的速度對(duì)驗(yàn)證吞吐量起著重要的作用。在大多數(shù)SoC開發(fā)中,隨著項(xiàng)目的成熟,有必要進(jìn)行許多模擬和重復(fù)的回歸測(cè)試。仿真器和模擬器是對(duì)這種類型的RTL驗(yàn)證最常用的平臺(tái)。
然而,由于運(yùn)行時(shí)間長(zhǎng),RTL內(nèi)部或RTL和外部模擬之間的一些交互不能被重新創(chuàng)建,即使使用基于TLM的模擬和建模因此,一些團(tuán)隊(duì)使用基于FPGA的原型來(lái)為這種硬件測(cè)試提供更高性能的平臺(tái)。例如,我們可以相對(duì)實(shí)時(shí)地運(yùn)行整個(gè)操作系統(tǒng)引導(dǎo),節(jié)省了幾天的模擬時(shí)間來(lái)實(shí)現(xiàn)相同的事情。
8.2.對(duì)于軟件團(tuán)隊(duì)
對(duì)于軟件團(tuán)隊(duì)來(lái)說(shuō),基于FPGA的原型設(shè)計(jì)提供了一種獨(dú)特的目標(biāo)芯片的預(yù)芯片模型,它足夠快速和準(zhǔn)確,可以在接近最終的條件下進(jìn)行軟件調(diào)試。
8.3.對(duì)于整個(gè)團(tuán)隊(duì)
對(duì)于整個(gè)團(tuán)隊(duì)來(lái)說(shuō),SoC項(xiàng)目的一個(gè)關(guān)鍵階段是軟件和硬件第一次相互介紹。硬件將由最終的軟件以硬件驗(yàn)證計(jì)劃并不總是單獨(dú)設(shè)想或預(yù)測(cè)的方式運(yùn)行,從而暴露出新的硬件問(wèn)題。這在多核系統(tǒng)或那些運(yùn)行并發(fā)實(shí)時(shí)應(yīng)用程序的系統(tǒng)中尤其普遍。如果這種硬件軟件的引入只是在第一次芯片制造之后,那么委婉地說(shuō),在那個(gè)時(shí)候發(fā)現(xiàn)新的漏洞就不理想了。
一個(gè)基于FPGA的原型允許盡早將軟件引入一個(gè)周期準(zhǔn)確和快速的硬件模型。SoC團(tuán)隊(duì)經(jīng)常告訴我們,基于FPGA的原型設(shè)計(jì)的最大好處是,當(dāng)?shù)谝粋€(gè)芯片可用時(shí),系統(tǒng)和軟件就會(huì)在一天內(nèi)啟動(dòng)并運(yùn)行。
編輯:黃飛
?
評(píng)論