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