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