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