可配置系統(tǒng)級(jí)驗(yàn)證環(huán)境加速SoC開(kāi)發(fā)
利用嵌入式硅IP可以縮短SoC設(shè)計(jì)所需的開(kāi)發(fā)時(shí)間,這已成為眾所公認(rèn)的事實(shí)。但要從完工后的整個(gè)系統(tǒng)角度出發(fā),整合及驗(yàn)證來(lái)自多家廠商的元件,需要相當(dāng)?shù)臅r(shí)間和努力,然而它們卻常被忽略。這會(huì)對(duì)嵌入式軟件開(kāi)發(fā)人員造成額外負(fù)擔(dān),因?yàn)樗麄冃枰?a class="contentlabel" href="http://cafeforensic.com/news/listbylabel/label/SoC">SoC的外圍和接口以及處理器的精確模型,才能在設(shè)計(jì)投片之前,針對(duì)正在開(kāi)發(fā)的SoC,迅速完成應(yīng)用固件的測(cè)試及除錯(cuò)。如果SoC平臺(tái)以可配置處理器和外圍IP為基礎(chǔ),這些IP又來(lái)自多家供貨商,這種情形就更加重要,因?yàn)樵O(shè)計(jì)人員必須確認(rèn)在特定配置下,每個(gè)元件的功能不會(huì)影響到其它元件的工作。
除此之外,可配置SoC的研發(fā)人員也需要一個(gè)強(qiáng)健可靠的協(xié)同仿真和軟/硬件協(xié)同驗(yàn)證環(huán)境,以及能對(duì)最終形式的SoC設(shè)計(jì)進(jìn)行仿真的可配置測(cè)試平臺(tái)方法。這類(lèi)方法或環(huán)境為研發(fā)人員提供并行處理能力,例如當(dāng)此環(huán)境同時(shí)執(zhí)行錯(cuò)誤檢查、測(cè)試覆蓋率分析,及在實(shí)際條件下進(jìn)行系統(tǒng)性能分析時(shí),工程師可執(zhí)行測(cè)試程序,對(duì)它們進(jìn)行調(diào)試,或當(dāng)外設(shè)收發(fā)數(shù)據(jù)時(shí),在處理器上執(zhí)行典型應(yīng)用。
所需技術(shù)
IP供應(yīng)商提供已驗(yàn)證的IP,某些廠商甚至提供工具及驗(yàn)證套件,以將其IP整合到客戶的最終系統(tǒng),并對(duì)整合結(jié)果進(jìn)行驗(yàn)證。但是卻沒(méi)有廠商提供靈活的、可擴(kuò)充的系統(tǒng)級(jí)功能驗(yàn)證環(huán)境-這是SoC開(kāi)發(fā)流程的一部分;也沒(méi)有廠商提供能在單一集成環(huán)境中執(zhí)行的軟硬件協(xié)同驗(yàn)證。理論上,系統(tǒng)級(jí)驗(yàn)證環(huán)境應(yīng)該把所需的仿真工作和運(yùn)行時(shí)間降至最低,并使設(shè)計(jì)人員充分管理復(fù)雜系統(tǒng)的相互作用,執(zhí)行實(shí)際軟件并確保很高的測(cè)試覆蓋率。
絕大多數(shù)廠商的IP驗(yàn)證策略是單獨(dú)對(duì)每個(gè)方塊進(jìn)行測(cè)試,而且使用的測(cè)試配置也不同于其它IP塊。系統(tǒng)測(cè)試僅限于基礎(chǔ)系統(tǒng)內(nèi)各個(gè)方塊的相互作用,包括處理器IP、內(nèi)存IP、外設(shè)IP和公共系統(tǒng)總線。絕大多數(shù)測(cè)試都屬于一般性測(cè)試,并只側(cè)重于系統(tǒng)的某些方面。它們不會(huì)采用偽隨機(jī)激勵(lì)(stimulus),也不會(huì)利用參考模型來(lái)支持靈活的檢測(cè)技術(shù),只有IP買(mǎi)方或是為了推出新產(chǎn)品的供貨商,才會(huì)利用部份周期執(zhí)行回歸測(cè)試。此外,沒(méi)有簡(jiǎn)單方法可用來(lái)試驗(yàn)可配置處理器和外設(shè)IP所支持的各種配置;測(cè)試方塊間復(fù)雜的相互作用情況;分析硬件及軟件性能;或讓用戶利用同一仿真平臺(tái)開(kāi)發(fā)及測(cè)試應(yīng)用程序。
傳統(tǒng)的系統(tǒng)級(jí)驗(yàn)證解決方案利用Verilog之類(lèi)的硬件描述語(yǔ)言來(lái)開(kāi)發(fā)測(cè)試平臺(tái)。但是以硬件描述語(yǔ)言為基礎(chǔ)的測(cè)試平臺(tái)不具備可移植性,這使工程師必須重新開(kāi)發(fā)測(cè)試平臺(tái)和測(cè)試內(nèi)容,才能在最終系統(tǒng)上驗(yàn)證IP。此外,這種平臺(tái)也缺乏靈活性,無(wú)論系統(tǒng)何時(shí)被修改都要求很多繁雜的變化。據(jù)估計(jì),開(kāi)發(fā)大型而復(fù)雜的SoC時(shí),驗(yàn)證會(huì)占用70%或更多的時(shí)間,因?yàn)榄h(huán)境模型的建立、測(cè)試平臺(tái)的設(shè)計(jì)以及測(cè)試內(nèi)容的撰寫(xiě)都需要很多時(shí)間。雖然進(jìn)行這些測(cè)試只需要幾個(gè)小時(shí),但測(cè)試平臺(tái)和測(cè)試內(nèi)容的開(kāi)發(fā)卻需要幾個(gè)月的時(shí)間。另外,傳統(tǒng)方法使實(shí)時(shí)檢查以及驗(yàn)證程序代碼的重復(fù)使用性變得非常困難,這些以硬件描述語(yǔ)言為基礎(chǔ)的環(huán)境也不適合固件研發(fā)人員,他們需要嵌入式軟件工具、快速的處理器執(zhí)行模型 (每秒最高執(zhí)行1百萬(wàn)個(gè)指令) 以及一套軟件方法,以便控制測(cè)試流程和測(cè)試平臺(tái)實(shí)用程序 (testbench utilities)。
一套較好的系統(tǒng)級(jí)驗(yàn)證環(huán)境若以固件研發(fā)人員為支持對(duì)象,那么它應(yīng)包含集成式硬件/軟件仿真及調(diào)試環(huán)境,并允許此環(huán)境通過(guò)實(shí)際界面,連接至控制SoC的測(cè)試平臺(tái)以及最終測(cè)試環(huán)境內(nèi)的其它任何組件。這個(gè)測(cè)試平臺(tái)可以是簡(jiǎn)單的內(nèi)存總線監(jiān)視程序,也可以是復(fù)雜的分組業(yè)務(wù)生成程序。要對(duì)可配置IP進(jìn)行適當(dāng)測(cè)試,測(cè)試平臺(tái)及其模型也必須可配置,以便適應(yīng)客戶的應(yīng)用需求。對(duì)于固件或應(yīng)用軟件來(lái)說(shuō),這種完整的系統(tǒng)級(jí)環(huán)境是一種系統(tǒng)內(nèi)驗(yàn)證模型或測(cè)試平臺(tái)。舉例來(lái)說(shuō),它能測(cè)試以10/100 Mbps速率通過(guò)以太網(wǎng)接口與外部系統(tǒng)進(jìn)行數(shù)據(jù)收發(fā)的處理器,同時(shí)對(duì)另一個(gè)必須執(zhí)行實(shí)時(shí)操作系統(tǒng)和協(xié)議棧的應(yīng)用進(jìn)行測(cè)試。因此,開(kāi)發(fā)環(huán)境必須包含一組測(cè)試平臺(tái)實(shí)用程序來(lái)執(zhí)行硬件檢查和診斷,這將使程序庫(kù)和測(cè)試程序變得很簡(jiǎn)單,并能嵌入應(yīng)用軟件。
此時(shí)所需要的是一套驗(yàn)證方法,讓SoC設(shè)計(jì)人員能驗(yàn)證硬件IP,同時(shí)提供平臺(tái)來(lái)仿真開(kāi)發(fā)人員的軟件IP。測(cè)試方法通常包含定向測(cè)試,它們會(huì)順序測(cè)試不同功能,但驗(yàn)證技術(shù)的最新趨勢(shì)包括:
* 隨機(jī)產(chǎn)生的系統(tǒng)事件或錯(cuò)誤插入,它們能和處理器及外圍的測(cè)試程序同時(shí)執(zhí)行,以便仿真實(shí)際的激勵(lì);
* 自動(dòng)產(chǎn)生的自我檢查測(cè)試,并使用參考模型和評(píng)分表 (scoreboard) 技術(shù),因此,不需在測(cè)試代碼中嵌入這些功能;
* 特定IP的系統(tǒng)級(jí)驗(yàn)證事件,無(wú)論這些IP是由使用者自行開(kāi)發(fā)或來(lái)自IP供應(yīng)商,這些驗(yàn)證事件都能重復(fù)用于整個(gè)SoC。
最適合可配置SoC IP的系統(tǒng)級(jí)驗(yàn)證環(huán)境應(yīng)能夠:
* 支持處理器和外設(shè)的并行處理,進(jìn)而把硬件及軟件協(xié)同仿真環(huán)境和測(cè)試平臺(tái)集成在一起;
* 由IP供貨商設(shè)計(jì)成使用者能夠共享和擴(kuò)充的公用環(huán)境;
* 使用者不必購(gòu)買(mǎi)昂貴的測(cè)試平臺(tái)設(shè)計(jì)工具;
* 允許使用者選擇特定的IP配置以及配合這些配置的仿真;
* 同時(shí)提供定向測(cè)試和隨機(jī)測(cè)試的匯編程序碼,以及隨機(jī)性的外圍數(shù)據(jù)流量;
* 提供覆蓋率監(jiān)測(cè)和報(bào)告,顯示IP被測(cè)試的程度;
* 可重復(fù)用于整個(gè)SoC和相關(guān)固件的驗(yàn)證;
* 提供實(shí)用程序以并行測(cè)量硬件和軟件性能;
* 可以運(yùn)行和驗(yàn)證應(yīng)用程序代碼。
系統(tǒng)級(jí)協(xié)同驗(yàn)證/仿真環(huán)境
雖然理想的系統(tǒng)級(jí)驗(yàn)證環(huán)境很容易轉(zhuǎn)換至原型開(kāi)發(fā)環(huán)境,但并不適合用來(lái)建立產(chǎn)品原型。盡管如此,它還是能大幅減少原型測(cè)試和調(diào)試工作,加快產(chǎn)品的上市時(shí)間。
ARC International公司執(zhí)行廣泛的系統(tǒng)級(jí)驗(yàn)證配置和測(cè)試,其主要目的是對(duì)包含ARC IP的系統(tǒng)進(jìn)行驗(yàn)證,確保它們的功能正常,并且滿足客戶的系統(tǒng)要求,進(jìn)而節(jié)省開(kāi)發(fā)時(shí)間。ARC提供的系統(tǒng)級(jí)驗(yàn)證環(huán)境(見(jiàn)圖1)包括:
* 一套基于Synopsys的Vera測(cè)試平臺(tái)語(yǔ)言的測(cè)試平臺(tái);
*由基本系統(tǒng)配置組成的待測(cè)器件;
* ARC的MetaWare工具鏈,可利用指令集仿真器 (ISS) 取代處理器的RTL程序代碼。
這套系統(tǒng)級(jí)驗(yàn)證環(huán)境把處理器驗(yàn)證環(huán)境和數(shù)據(jù)流驗(yàn)證環(huán)境這兩個(gè)不同的環(huán)境結(jié)合在一起(見(jiàn)圖2),以提供復(fù)雜的系統(tǒng)互動(dòng),同時(shí)在系統(tǒng)級(jí)并行驗(yàn)證ARC可擴(kuò)展式處理器核心、外設(shè)數(shù)據(jù)流以及可選擇的ARC系統(tǒng)配置。這兩種環(huán)境具有不同的特性和需求,處理器驗(yàn)證環(huán)境專(zhuān)注于指令執(zhí)行流程、分支、條件、中斷和跳躍,外設(shè)數(shù)據(jù)流環(huán)境則以系統(tǒng)內(nèi)的數(shù)據(jù)傳送為主。
外設(shè)數(shù)據(jù)流程也可配置,以便支持相同外設(shè)或不同外設(shè)的組合。利用協(xié)同仿真ISS模型,或與CPU的RTL模型相連的ISS調(diào)試器,即可同時(shí)從MetaWare調(diào)試環(huán)境以及硬件描述語(yǔ)言仿真器環(huán)境對(duì)系統(tǒng)進(jìn)行調(diào)試。
使用者可以設(shè)定這套系統(tǒng)級(jí)驗(yàn)證環(huán)境,使其支持ARC工具所能建立的各類(lèi)系統(tǒng)。這套驗(yàn)證環(huán)境的架構(gòu)也經(jīng)過(guò)特別設(shè)計(jì),能在系統(tǒng)級(jí)執(zhí)行硬件和軟件檢查,將分組數(shù)據(jù)送入系統(tǒng),執(zhí)行一系列復(fù)雜指令,檢查系統(tǒng)相互作用的情況;它還包含一系列功能測(cè)試,例如特定配置的置信度測(cè)試 (confidence test)。不同類(lèi)型的登錄信息可對(duì)執(zhí)行的測(cè)試進(jìn)行補(bǔ)充,為使用者提供配置狀態(tài)、指令執(zhí)行、總線數(shù)據(jù)傳輸、總線利用率統(tǒng)計(jì)以及總線協(xié)議違規(guī)的監(jiān)測(cè)。
這套系統(tǒng)級(jí)驗(yàn)證策略還可提供一套靈活的基礎(chǔ)設(shè)施,使設(shè)計(jì)人員不需要了解測(cè)試平臺(tái)的實(shí)施細(xì)節(jié),即可快速確認(rèn)和執(zhí)行用戶定義的測(cè)試方案。一組文本文件可對(duì)基本系統(tǒng)測(cè)試參數(shù)進(jìn)行控制,每個(gè)測(cè)試順序都成為在處理器上面執(zhí)行測(cè)試程序,其優(yōu)點(diǎn)是,只需一個(gè)測(cè)試文件,即可控制處理器指令和外設(shè)指令的產(chǎn)生。
在此環(huán)境中運(yùn)行的典型測(cè)試或應(yīng)用程序代碼包括可配置中斷向量表、可配置中斷服務(wù)例程、包含外設(shè)初始化例程的主程序、以及測(cè)試順序例程或應(yīng)用事件。測(cè)試代碼也包含最后清理階段 (clean-up phase),系統(tǒng)的統(tǒng)計(jì)信息就是在此階段搜集的。測(cè)試代碼的主程序還包含偽隨機(jī)指令發(fā)生器,它會(huì)協(xié)助產(chǎn)生測(cè)試激勵(lì)和匯編程序。ARC的指令集仿真器可做為參考模型,用于處理器隨機(jī)指令執(zhí)行的功能檢查,它還能做為協(xié)同仿真模型的基礎(chǔ)。
這套系統(tǒng)級(jí)驗(yàn)證環(huán)境和測(cè)試結(jié)構(gòu)的開(kāi)發(fā)已考慮面向目標(biāo)型方法和可重用性,讓工程師在自己的測(cè)試環(huán)境內(nèi),擴(kuò)充部分或全部的測(cè)試平臺(tái)組件及測(cè)試內(nèi)容。開(kāi)發(fā)應(yīng)用程序時(shí),工程師可以選擇協(xié)同仿真環(huán)境,以便利用ISS處理器模型迅速執(zhí)行指令。利用這套系統(tǒng)級(jí)驗(yàn)證環(huán)境的靈活性,工程師還能選擇內(nèi)存映像方式以及硬件和軟件仿真的多種同步模式。這套系統(tǒng)級(jí)驗(yàn)證也能作為一組驗(yàn)證實(shí)用程序,這對(duì)固件開(kāi)發(fā)人員很有用:只需在測(cè)試程序代碼中插入簡(jiǎn)單的API調(diào)用程序,即可從應(yīng)用程序內(nèi)調(diào)用測(cè)試平臺(tái)。可在測(cè)試平臺(tái)產(chǎn)生復(fù)雜的外設(shè)分組數(shù)據(jù)業(yè)務(wù),然后由處理器調(diào)用這些API進(jìn)行排序,使得處理器只需較少的cpu周期,即可完成某些動(dòng)作的執(zhí)行,例如發(fā)送一個(gè)輸入以太網(wǎng)分組。以RTL作業(yè)和平臺(tái)互動(dòng)為目標(biāo)的測(cè)試序列則是通過(guò)軟件API來(lái)執(zhí)行,每個(gè)API都能以多種形式提供給設(shè)計(jì)人員使用,例如匯編語(yǔ)言宏、C/C++或測(cè)試平臺(tái)驗(yàn)證語(yǔ)言的擴(kuò)展。系統(tǒng)級(jí)驗(yàn)證環(huán)境還為工程師提供了一組測(cè)試文件,使他們更容易控制基本測(cè)試參數(shù)。
設(shè)計(jì)范例
以消費(fèi)類(lèi)電子產(chǎn)品,如PDA及其嵌入式應(yīng)用為例,說(shuō)明設(shè)計(jì)人員如何利用ARC的系統(tǒng)級(jí)驗(yàn)證環(huán)境,將應(yīng)用移植到多個(gè)硬件平臺(tái),同時(shí)將硬件和軟件功能分開(kāi)。典型系統(tǒng)分為三層:一個(gè)應(yīng)用層,一個(gè)或多個(gè)協(xié)議層,和一個(gè)物理層。
設(shè)計(jì)一個(gè)消費(fèi)類(lèi)電子應(yīng)用,將它從某個(gè)物理實(shí)現(xiàn)轉(zhuǎn)到另一個(gè)物理實(shí)現(xiàn),并確保它的功能正常,此過(guò)程的主要工作在于修改固件。舉例來(lái)說(shuō),從包含MAC物理層的PDA轉(zhuǎn)到另一部同時(shí)包含MAC以及USB或無(wú)線局域網(wǎng)物理層的PDA,這個(gè)過(guò)程就需要將應(yīng)用移植,使它能在不同的協(xié)議層工作。同樣必要的是在搜集數(shù)據(jù)的最終環(huán)境內(nèi),對(duì)于性能分析的能力。例如,如果某個(gè)RAM復(fù)制例程的最初設(shè)計(jì)目標(biāo)是作為軟件初始化程序的一部分,那么最重要的事就是確定此例程能否在新的物理層所要求的時(shí)間內(nèi)完成工作,這個(gè)結(jié)果將決定是否需要利用硬件執(zhí)行這個(gè)例程,而不是處理器執(zhí)行。只要可以確定這個(gè)例程能在所要求的時(shí)間內(nèi)完成工作,就能節(jié)省開(kāi)發(fā)RAM復(fù)制硬件所需的時(shí)間和努力。
為了展開(kāi)設(shè)計(jì)工作,研發(fā)工程師必須先規(guī)劃PDA硬件架構(gòu)。假設(shè)用戶選擇ARC所提供的硬件配置,設(shè)計(jì)應(yīng)包含處理器、內(nèi)存子系統(tǒng)和兩個(gè)物理連接:用來(lái)連接至網(wǎng)絡(luò)的MAC,以及將PDA連接至PC或手機(jī)的USB。即使采用這種固定的系統(tǒng)劃分方式,使用者仍可選擇某些硬件以差異化最終配置。例如內(nèi)存:儲(chǔ)存開(kāi)機(jī)程序的ROM容量、系統(tǒng)內(nèi)存的種類(lèi) (閃存或SRAM) 和數(shù)據(jù)RAM的容量。某些性能分析對(duì)于確定最終系統(tǒng)配置的速度也是很必要的,這包括選擇時(shí)鐘頻率以及為系統(tǒng)增加數(shù)據(jù)高速緩存。核心處理器、USB和MAC的配置也需注意,以便在最后的ASIC邏輯門(mén)數(shù)目和最佳性能之間取得平衡。在這個(gè)階段,系統(tǒng)級(jí)驗(yàn)證環(huán)境可確認(rèn)系統(tǒng)工作符合預(yù)期要求,測(cè)試平臺(tái)實(shí)用程序則用來(lái)分析內(nèi)存數(shù)據(jù)傳輸、總線負(fù)載以及總線仲裁延遲時(shí)間。使用者也能利用MAC應(yīng)答器確定業(yè)務(wù)量,并仿真10/100Mbps半雙工或全雙工分組業(yè)務(wù),并且設(shè)定外部USB的工作模式為全速或高速,以便將這些業(yè)務(wù)量傳給系統(tǒng)。簡(jiǎn)單的系統(tǒng)級(jí)驗(yàn)證測(cè)試可確認(rèn)硬件在新配置的工作是否正常,這個(gè)環(huán)境還提供多個(gè)實(shí)用程序,控制這類(lèi)外部業(yè)務(wù)量,并且監(jiān)測(cè)總線協(xié)議的違規(guī)情形以及分組等待時(shí)間。
確定硬件配置和仿真流量負(fù)載可以提供適當(dāng)?shù)南到y(tǒng)功能覆蓋,研發(fā)人員僅須利用系統(tǒng)級(jí)驗(yàn)證環(huán)境執(zhí)行協(xié)同仿真,即可分析硬件和軟件之間的互操作性。固件或軟件工程師可利用這個(gè)環(huán)境測(cè)試新的應(yīng)用功能,ISS和軟件調(diào)試工具則會(huì)提供其它有用信息,除了代碼配置數(shù)據(jù)以及高速緩存的命中和故障外,還包括執(zhí)行這些功能時(shí),硬件所需的中斷服務(wù)時(shí)間。清楚某些功能所需的執(zhí)行時(shí)間,即可避免發(fā)生系統(tǒng)錯(cuò)誤,例如不完全的數(shù)據(jù)傳送或分組數(shù)據(jù)丟失。
系統(tǒng)級(jí)驗(yàn)證環(huán)境也能用來(lái)執(zhí)行完整的應(yīng)用程序,驗(yàn)證新的PDA設(shè)計(jì)和物理連接層是否正常工作。另外,它還能將協(xié)議錯(cuò)誤加入目標(biāo)系統(tǒng),以便了解系統(tǒng)會(huì)如何反應(yīng)以及如何恢復(fù)。
結(jié)語(yǔ)
隨著產(chǎn)品壽命周期不斷縮短,SoC的系統(tǒng)級(jí)協(xié)同驗(yàn)證和協(xié)同仿真環(huán)境必須繼續(xù)加強(qiáng)硬件和軟件環(huán)境的整合。這種整合應(yīng)該把更多個(gè)原型環(huán)境元素加入系統(tǒng)級(jí)驗(yàn)證環(huán)境,以便增加驗(yàn)證精度和系統(tǒng)性能。因此,隨著仿真在系統(tǒng)級(jí)驗(yàn)證中的不斷增加,原型環(huán)境和系統(tǒng)級(jí)驗(yàn)證環(huán)境之間的界限也會(huì)轉(zhuǎn)變?!?/P>
評(píng)論