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