24小時聯系電話:18217114652、13661815404
中文
技術專題
自動化C測試用例以進行嵌入式系統驗證
隨著片上系統(SoC)設計的發展,其復雜性越來越高,包含數千行用于系統級驗證的代碼的測試套件繼續由人手工編寫,這是一個古老的傳統,無效的做法無視諺語“自動化只要有可能。” 對于在SoC的嵌入式處理器上運行以在制造之前驗證整個設備的C測試而言,尤其如此。
事實證明,在可能的情況下自動執行驗證測試組合可以提高SoC開發許多階段的生產率。約束隨機技術,例如,在通用驗證方法(UVM)測試平臺中,利用針對特定場景的隨機測試矢量來增加覆蓋范圍。盡管這些已提高了硬件塊級別的驗證效率,但該設計仍被視為黑匣子,其中刺激,支票和覆蓋代碼分別編寫,對于大塊而言仍然是繁重且容易出錯的任務。
鑒于需要將處理器測試代碼與I / O事務(通常在仿真器或原型系統上執行)結合在一起,因此很難將此方法擴展到系統級。為了正確驗證SoC,必須對處理器本身進行測試。UVM和其他約束隨機方法無法解決處理器上運行的代碼。實際上,要在SoC上使用UVM,通常會刪除處理器,并用虛擬輸入和輸出替換到SoC總線上,從而允許子系統減去處理器來進行驗證。
SoC驗證工程師意識到約束隨機測試平臺的局限性,即使它們在完全執行SoC設計方面受到限制,也迫使他們手寫C測試以在處理器上運行以進行仿真和硬件仿真。這些驗證平臺的性能不足以運行完整的操作系統(OS),因此這些測試執行“裸機”,這增加了編寫工作的開銷。手寫測試(特別是在沒有OS服務的幫助下)以協調的方式在利用多個線程的多核處理器之間運行是不尋常的。結果是最小限度地驗證了SoC行為的各個方面,例如并發操作和一致性。
自動生成C測試
當然,自動生成的C測試將更有效地利用工程資源。它們還增加了覆蓋范圍。與手寫測試相比,生成的C測試用例可以發揮SoC的更多功能,并且可以發現難以想象的復雜拐角處。多線程,多處理器測試用例可以使用設計中的所有并行路徑來驗證并發性。他們可以在內存段之間移動數據,以增強一致性算法,并在將數據發送到芯片的輸入或從芯片的輸出讀取數據時與I / O事務進行協調。這樣做的總體效果是增加了系統功能的覆蓋范圍,通常從特征上要低得多的數字開始,大于90%。
測試生成軟件稱為Test Suite Synthesis,它使用易于理解的基于圖形的方案模型來捕獲預期的設計行為。這些模型可以使用本機C ++使用Accellera便攜式刺激標準來編寫,也可以進行直觀描述。方案模型由設計或驗證工程師創建,是SoC開發的自然組成部分,因為它們類似于傳統的芯片數據流程圖,可能會在白板上繪制以解釋設計規范的一部分。
這些模型固有地包含激勵,檢查,覆蓋范圍詳細信息和調試信息,從而為生成器提供生成高質量,自我檢查的C測試用例所需的一切,從而對設計的各個方面產生壓力。由于它們是分層和模塊化的,因此在塊級別開發的任何測試都可以完全重用為完整SoC模型的一部分,并且可以輕松地與不同團隊和整個項目共享。最后,綜合工具可以分解單個意圖模型,以提供跨線程和I / O端口的并發測試,這些測試和同步全部同步在一起。
優勢測試套件綜合
測試套件綜合的一項重要優勢是能夠在意圖模型上預先定義覆蓋目標。一旦指定了意圖,該工具就可以對其進行分析,以了解可以進行的測試數量以及將要實現的功能意圖。
對于SoC,這可以進行成千上萬次測試。然后可以通過限制要測試的意圖并將工具集中在關鍵區域來設置覆蓋范圍目標。此功能可避免傳統方法中出現的痛苦的迭代循環,即設置測試,運行驗證工具,了解實現的覆蓋范圍以及一次又一次地重置測試。
在一個由知名半導體公司開發的大型SoC的典型項目中,驗證工程師將測試編寫時間減少到以前需要手寫測試的20%。自動化技術產生了更嚴格的測試用例,覆蓋率從84%增加到97%。另外,這些模型是便攜式的。
單個模型可以生成虛擬平臺的測試用例,寄存器傳輸級別(RTL)模擬,仿真,現場可編程門陣列(FPGA)原型或實驗室中經過硅驗證的實際芯片。
調試是工程師的又一個耗時,特別是在SoC級別。如果測試用例發現了一個潛伏的設計錯誤,則驗證工程師必須了解哪個測試觸發了該錯誤以追蹤其來源。測試用例失敗可能是由于場景模型中的錯誤所致,因此必須有可能將測試用例與捕獲設計意圖的圖形相關聯。此過程創建易于分解的高度模塊化和自包含的測試,因此易于發現發現的錯誤的測試。
應用場景
綜合測試用例可以用于設計的實際用例(稱為應用場景)。例如,考慮圖1所示的數碼相機SoC
圖1:圖像處理SoC示例
SoC塊級組件包括兩個處理器,外圍設備和內存。框圖下方顯示了SoC的簡單圖形。該圖包括SoC驗證過程中可能行使的可能的高級路徑。例如,在圖形的頂部路徑中表示的一種可能的情況是,從SD卡讀取JPEG圖像,并將其通過內存中分配的區域傳遞給照片處理器。圖像被處理成可以顯示的形式,并加載到內存中的第二個塊中。從那里,它傳遞到顯示控制器。當然,這些高級塊中的每一個本質上都是分層的,許多動作和決定作為流程的一部分被執行。
綜合工具將接受隨機測試并適當安排時間。如圖所示,以最簡單的形式,測試可能會調度到單個線程中,然后再進行下一個測試,依此類推。但是,測試用例對SoC施加壓力的能力來自跨多個線程和多個處理器的交錯應用程序。該工具將在設計固有的并發支持下并行運行多個應用程序,并以盡可能曲折的方式分配內存。在圖中,這也顯示為替代方案,其中測試分散在三個線程中,利用了在SoC存儲器中分配的各個區域。
當然,將以較高的級別顯示此示例,以使過程清晰明了。實際上,層次圖將由綜合工具展平,從而創建大量動作和連接。這些還將包括隨機決策,需要通過求解器算法來運行。隨著圖表的移動,采用了AI計劃算法,該算法檢查所需的輸出并優化輸入測試以匹配此輸出。綜合工具包括類似于OS的服務,這些服務分配內存,提供地址映射訪問,處理中斷和完成測試結構所需的其他任務。然后隨機安排測試的時間,并適當分配存儲空間和其他資源。