基于SystemC描述的嵌入式系統(tǒng)的自動(dòng)化驗(yàn)證
CppUnit 測(cè)試框架在這里的職責(zé)是對(duì)測(cè)試過程的自動(dòng)化封裝?;A(chǔ)的CppUnit 測(cè)試框架,無法與測(cè)試點(diǎn)收集器建立聯(lián)系,并且不提供連續(xù)狀態(tài)的斷言機(jī)制。本文的方法,一方面讓測(cè)試用例引用的測(cè)試點(diǎn)收集器對(duì)象與AOP 植入的收集器對(duì)象保持一致,然后將測(cè)試點(diǎn)收集器的數(shù)據(jù)發(fā)送到測(cè)試用例中來;另一方面,用鎖的形式實(shí)現(xiàn)測(cè)試輸入與測(cè)試響應(yīng)異步過程同步化的機(jī)制,以適應(yīng)測(cè)試過程同步化的特點(diǎn)。連續(xù)輸入輸出的測(cè)試,可以通過擴(kuò)展測(cè)試點(diǎn)收集器的儲(chǔ)存能力,收集全部連續(xù)輸出,統(tǒng)一通知測(cè)試單元,完成連續(xù)信號(hào)的期望判斷。在有黃金模型的聯(lián)合模擬框架下,連續(xù)輸入輸出的測(cè)試,也可以由測(cè)試點(diǎn)收集器即時(shí)收集響應(yīng),即時(shí)通知測(cè)試單元,與黃金模型輸出的即時(shí)期望數(shù)據(jù)比較。
SystemC 的TLM 和簡(jiǎn)單片上總線的測(cè)試實(shí)例
SystemC 語言的一個(gè)重要特征是支持系統(tǒng)的交易級(jí)建模( TLM) 和驗(yàn)證。在系統(tǒng)級(jí)設(shè)計(jì)與驗(yàn)證中,交易(t ransaction) 成為越來越重要的一個(gè)概念。一般來說,交易可以理解為系統(tǒng)模型中2 個(gè)模塊之間的一次數(shù)據(jù)交換。這個(gè)交換與采用的協(xié)議無關(guān),通常不涉及具體的總線時(shí)序等細(xì)節(jié)。最常見的是讀交易和寫交易,以保證模塊之間同步操作是事件交易。另外,模塊之間的中斷也是一種交易。TLM 模型較RTL (register t ransfer level ) 級(jí)容易編寫,而且模擬速度較RTL 級(jí)提高了100~1 000 倍,每秒鐘能仿真至少10 萬個(gè)交易。TLM 的一個(gè)重要用途,是可以作為RTL 級(jí)驗(yàn)證的黃金參考模型,系統(tǒng)級(jí)測(cè)試用例可以重用;另外, TLM 模型對(duì)于軟件開發(fā)已足夠精確,因此可以在硬件RTL 級(jí)設(shè)計(jì)的同時(shí),并行在TLM 模型上進(jìn)行嵌入式軟件的開發(fā),加速開發(fā)流程。
TLM 模型包含了事件之間的正確順序,而沒有底層的物理延時(shí),可以為軟件設(shè)計(jì)者提供一些初步的性能分析。另外,含有時(shí)間信息的TLM 模型可對(duì)系統(tǒng)結(jié)構(gòu)做出一些評(píng)價(jià),從而探索和優(yōu)化系統(tǒng)結(jié)構(gòu)。TLM 的嵌入式系統(tǒng)設(shè)計(jì)一般都帶有一個(gè)總線通信結(jié)構(gòu), 完成各個(gè)功能模塊之間的相互通信。TLM 的主要任務(wù)就是相應(yīng)的通信抽象,實(shí)現(xiàn)通信機(jī)制。一個(gè)簡(jiǎn)單片上的總線系統(tǒng)包括主從設(shè)備接口、快/ 慢速存儲(chǔ)器通道、通用串口通道、仲裁器接口和仲裁器模塊等。測(cè)試的目的一是驗(yàn)證各個(gè)模塊之間通信實(shí)現(xiàn)的正確性,為軟硬件協(xié)同設(shè)計(jì)提供正確的TLM 模型;二是可以評(píng)估系統(tǒng)的體系結(jié)構(gòu),如確定系統(tǒng)的資源如儲(chǔ)存器和FIFO(first in first out) 的大小等。圖5 給出了一個(gè)簡(jiǎn)單片上總線的測(cè)試實(shí)例。
在這個(gè)例子中, 由AspectC ++ 實(shí)現(xiàn)的Aop Test Probe 直接加在了各通信接口的通信方法上, 各通信方法在調(diào)用之前或之后, 都被Aop Test Probe 準(zhǔn)確捕獲; 然后由TraceRecord 類收集相應(yīng)的信息,再將信息通過接口NotifyTest 通知測(cè)試用例SimpleBusTestCase ;測(cè)試用例實(shí)例化被測(cè)體SimpleBus , 準(zhǔn)備輸入數(shù)據(jù), 然后鎖定等待TraceRecord 發(fā)過來的響應(yīng)數(shù)據(jù),通過與期望的斷言比較, 完成一個(gè)測(cè)試過程。 這里, SimpleBus 與TraceRecord 的關(guān)聯(lián)是由方面編譯器編譯Aop Test Probe 而植入的。測(cè)試完畢,就可以不再用方面編譯器編譯而去掉這個(gè)關(guān)聯(lián)。被測(cè)體在發(fā)布時(shí)不會(huì)由于測(cè)試代碼的冗余而影響效率和占用內(nèi)存。
通過這個(gè)實(shí)例可以發(fā)現(xiàn),該自動(dòng)化測(cè)試方法雖然由于AOP 的方面編譯帶來了更長(zhǎng)的編譯時(shí)間,但AspectC ++ 實(shí)現(xiàn)了與C/ C + + 同樣高效的代碼同時(shí)帶來了更加明顯的優(yōu)點(diǎn),比如消除測(cè)試代碼的冗余,減少出錯(cuò)的可能,滿足測(cè)試要求的靈活性和可移植性等;自動(dòng)化測(cè)試框架的結(jié)合,更是大大提高了測(cè)試過程的效率。所以該方法可為嵌入式系統(tǒng)模型的驗(yàn)證和評(píng)估提供十分有效的自動(dòng)化手段。
結(jié)語
本文在對(duì)嵌入式系統(tǒng)SystemC 描述的基礎(chǔ)上,提出了一種全新的自動(dòng)化驗(yàn)證方法。該方法采用AOP 技術(shù),并結(jié)合ATP 的使用。該方法支持測(cè)試自動(dòng)化,并實(shí)現(xiàn)了測(cè)試代碼的分離和封裝,隨時(shí)可滿足被測(cè)系統(tǒng)的測(cè)試要求;對(duì)嵌入式系統(tǒng)的系統(tǒng)模型,可自動(dòng)化、重復(fù)性地驗(yàn)證,能夠滿足系統(tǒng)模型在較高抽象級(jí)的驗(yàn)證和評(píng)估要求。面向方面的思想和技術(shù)在各方面的應(yīng)用,已經(jīng)得到人們?cè)絹碓蕉嗟年P(guān)注,實(shí)際上,可以進(jìn)一步引用AOP 技術(shù)到嵌入式系統(tǒng)的設(shè)計(jì)過程中,為系統(tǒng)設(shè)計(jì)提供更好的模塊化和復(fù)用性。
評(píng)論