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