基于SystemC描述的嵌入式系統的自動(dòng)化驗證
嵌入式系統在國民經(jīng)濟和國防各個(gè)領(lǐng)域中得到了越來(lái)越廣泛的應用。隨著(zhù)微電子技術(shù)和超大規模集成電路的高速發(fā)展,嵌入式系統的規模越來(lái)越大,硬件部分的異構程度和軟件部分的功能復雜程度都達到了歷史最高點(diǎn)。在更高的設計復雜度和更短的面市時(shí)間壓力下,提高抽象層次進(jìn)行系統級設計已成為解決問(wèn)題的必然手段。另外,基于IP (intellectualproperty) 構件的開(kāi)發(fā)方法,在IP 的開(kāi)發(fā)、交換和重用上,也亟待系統級開(kāi)發(fā)方法的廣泛采用。
系統級開(kāi)發(fā)方法要求在較高的抽象層次上描述系統,并模擬和驗證。由于系統的復雜性,一般不能由系統功能級描述直接綜合到具體的軟硬件實(shí)現,需要有多種不同抽象層次的中間級描述。傳統的設計方法采用不同的語(yǔ)言描述各種抽象層次,不僅帶來(lái)系統描述的不一致性,而且難以勝任軟硬件的協(xié)同驗證,不能滿(mǎn)足復雜嵌入式系統的設計需求。因此,人們迫切需要用一種單一語(yǔ)言來(lái)完成全部設計描述,分析系統體系結構和建立軟硬件協(xié)同驗證平臺。這就是所謂的系統級設計語(yǔ)言( system level description language ,SLDL) 。
基于C + + 的SystemC 語(yǔ)言主要由眾多EDA(electronic design automation) 工具廠(chǎng)商推出,是目前最受矚目的系統級設計語(yǔ)言。它通過(guò)擴展C + + 類(lèi)庫來(lái)提供對系統硬件結構的描述能力,不僅可以實(shí)現對嵌入式系統軟硬件的統一描述,而且支持從寄存器級硬件模型到系統級計算模型等各種不同抽象層次的建模,能產(chǎn)生多種抽象層共存的可執行模型。因其對軟件的兼容性,以及支持交易級建模( transactionlevel modeling ,TLM) 所帶來(lái)的高效模擬速度等特征,近年來(lái)迅速成為流行的系統級設計和驗證語(yǔ)言,尤其適用于軟硬件協(xié)同設計、驗證以及體系結構分析與優(yōu)化等方面。
現有的SystemC 2.0 語(yǔ)言標準已經(jīng)可以進(jìn)行基本的設計驗證,而新近推出的SystemC 驗證標準(systemC verification standard) 則通過(guò)提供一些應用程序接口( application programming interface ,API) ,如支持基于交易的驗證、可約束的隨機數產(chǎn)生、異常處理等,更增強了其驗證方面的能力。但是在設計過(guò)程中,驗證方法一般還是采用傳統手段,比如手工實(shí)現測試代碼,然后通過(guò)波形圖查看工具等人為的驗證等,缺乏對斷言的支持,整個(gè)驗證過(guò)程的自動(dòng)化程度低??紤]到在典型的設計中,驗證通常會(huì )占用整個(gè)設計周期的2/ 3 左右時(shí)間,因此亟需采用高效和精確的驗證方法。
因為SystemC 的本質(zhì)是C ++ 的類(lèi)庫,嵌入式系統SystemC 模型的驗證就等同于軟件領(lǐng)域內的測試,所以可以借鑒C/ C + + 軟件領(lǐng)域內大量的經(jīng)驗、工具和新的技術(shù)進(jìn)展。 本文就是如此嘗試:一方面,借鑒C + + 語(yǔ)言的自動(dòng)化測試框架(automated testing f ramework ,ATF) 來(lái)實(shí)現驗證過(guò)程的自動(dòng)化;另一方面,應用面向方面編程技術(shù)(aspect oriented programming ,AOP) ,分離和封裝測試代碼。采用這種驗證方法,可按需要隨時(shí)靈活地進(jìn)行測試代碼到被測系統的動(dòng)態(tài)植入,對被測系統無(wú)干擾,并實(shí)現驗證過(guò)程的自動(dòng)化。
自動(dòng)化測試框架
目前在軟件領(lǐng)域內,測試活動(dòng)受到了前所未有的重視,主要表現為測試驅動(dòng)的開(kāi)發(fā)方法 。該方法要求在設計系統的同時(shí)(甚至之前) 設計相關(guān)的測試模型,通過(guò)不斷測試來(lái)反復迭代,得到最后的設計??梢?jiàn),在目前的軟件開(kāi)發(fā)流程中,設計、編碼和測試各個(gè)階段的迭代周期變短,需要對代碼頻繁地重構,這就要求測試活動(dòng)能夠自動(dòng)、簡(jiǎn)便、高速地運行,自動(dòng)化測試框架(ATF) 因此而得到了廣泛的采用。
在圖1 所示的嵌入式系統開(kāi)發(fā)流程中,系統級開(kāi)發(fā)方法著(zhù)重在較高抽象級對系統的分析和驗證,然后自上而下地細化直到最后的實(shí)現。其間也意味著(zhù)有頻繁的迭代過(guò)程,一方面表現為體系結構、軟硬件劃分上的搜索迭代,另一方面表現為軟硬件協(xié)同模擬和驗證,進(jìn)行早期嵌入式軟件的調試,在更早的階段發(fā)現錯誤。 在采用SystemC 作為建模語(yǔ)言的情況下,整個(gè)系統可以方便地用一種語(yǔ)言描述,然后細化到最后實(shí)現;同時(shí)可以利用C ++ 語(yǔ)言的自動(dòng)化測試框架,保證各個(gè)階段測試活動(dòng)的自動(dòng)化運行。
評論