新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于SystemC描述的嵌入式系統的自動化驗證

        基于SystemC描述的嵌入式系統的自動化驗證

        作者: 時間:2012-04-05 來源:網絡 收藏

        在國民經濟和國防各個領域中得到了越來越廣泛的應用。隨著微電子技術和超大規模集成電路的高速發展,的規模越來越大,硬件部分的異構程度和軟件部分的功能復雜程度都達到了歷史最高點。在更高的設計復雜度和更短的面市時間壓力下,提高抽象層次進行系統級設計已成為解決問題的必然手段。另外,基于IP (intellectualproperty) 構件的開發方法,在IP 的開發、交換和重用上,也亟待系統級開發方法的廣泛采用。

        系統級開發方法要求在較高的抽象層次上描述系統,并模擬和驗證。由于系統的復雜性,一般不能由系統功能級描述直接綜合到具體的軟硬件實現,需要有多種不同抽象層次的中間級描述。傳統的設計方法采用不同的語言描述各種抽象層次,不僅帶來系統描述的不一致性,而且難以勝任軟硬件的協同驗證,不能滿足復雜的設計需求。因此,人們迫切需要用一種單一語言來完成全部設計描述,分析系統體系結構和建立軟硬件協同驗證平臺。這就是所謂的系統級( system level description language ,SLDL) 。

        基于C + + 的 語言主要由眾多EDA(electronic design automation) 工具廠商推出,是目前最受矚目的系統級。它通過擴展C + + 類庫來提供對系統硬件結構的描述能力,不僅可以實現對嵌入式系統軟硬件的統一描述,而且支持從寄存器級硬件模型到系統級計算模型等各種不同抽象層次的建模,能產生多種抽象層共存的可執行模型。因其對軟件的兼容性,以及支持交易級建模( transactionlevel modeling ,TLM) 所帶來的高效模擬速度等特征,近年來迅速成為流行的系統級設計和驗證語言,尤其適用于軟硬件協同設計、驗證以及體系結構分析與優化等方面。

        現有的 2.0 語言標準已經可以進行基本的設計驗證,而新近推出的 驗證標準(systemC verification standard) 則通過提供一些應用程序接口( application programming interface ,API) ,如支持基于交易的驗證、可約束的隨機數產生、異常處理等,更增強了其驗證方面的能力。但是在設計過程中,驗證方法一般還是采用傳統手段,比如手工實現測試代碼,然后通過波形圖查看工具等人為的驗證等,缺乏對斷言的支持,整個驗證過程的自動化程度低。考慮到在典型的設計中,驗證通常會占用整個設計周期的2/ 3 左右時間,因此亟需采用高效和精確的驗證方法。

        因為SystemC 的本質是C ++ 的類庫,嵌入式系統SystemC 模型的驗證就等同于軟件領域內的測試,所以可以借鑒C/ C + + 軟件領域內大量的經驗、工具和新的技術進展。 本文就是如此嘗試:一方面,借鑒C + + 語言的自動化測試框架(automated testing f ramework ,ATF) 來實現驗證過程的自動化;另一方面,應用面向方面編程技術(aspect oriented programming ,AOP) ,分離和封裝測試代碼。采用這種驗證方法,可按需要隨時靈活地進行測試代碼到被測系統的動態植入,對被測系統無干擾,并實現驗證過程的自動化。

        自動化測試框架

        目前在軟件領域內,測試活動受到了前所未有的重視,主要表現為測試驅動的開發方法 。該方法要求在設計系統的同時(甚至之前) 設計相關的測試模型,通過不斷測試來反復迭代,得到最后的設計。可見,在目前的軟件開發流程中,設計、編碼和測試各個階段的迭代周期變短,需要對代碼頻繁地重構,這就要求測試活動能夠自動、簡便、高速地運行,自動化測試框架(ATF) 因此而得到了廣泛的采用。

        在圖1 所示的嵌入式系統開發流程中,系統級開發方法著重在較高抽象級對系統的分析和驗證,然后自上而下地細化直到最后的實現。其間也意味著有頻繁的迭代過程,一方面表現為體系結構、軟硬件劃分上的搜索迭代,另一方面表現為軟硬件協同模擬和驗證,進行早期嵌入式軟件的調試,在更早的階段發現錯誤。 在采用SystemC 作為建模語言的情況下,整個系統可以方便地用一種語言描述,然后細化到最后實現;同時可以利用C ++ 語言的自動化測試框架,保證各個階段測試活動的自動化運行。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 张家川| 义乌市| 紫云| 青川县| 夏津县| 昌江| 闵行区| 河间市| 铁岭县| 云梦县| 河北区| 霍林郭勒市| 渭源县| 班戈县| 合水县| 白河县| 平凉市| 留坝县| 天等县| 临沂市| 潜山县| 塘沽区| 云南省| 金乡县| 舒城县| 法库县| 合阳县| 南通市| 德钦县| 喀喇沁旗| 蚌埠市| 普格县| 若羌县| 当涂县| 綦江县| 杂多县| 阿坝| 喀喇| 英吉沙县| 尼勒克县| 乌兰察布市|