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