新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 通過將SystemC和SystemVerilog集成在單個環(huán)境中獲得事務級建模和高級驗證功能

通過將SystemC和SystemVerilog集成在單個環(huán)境中獲得事務級建模和高級驗證功能

作者: 時間:2017-06-06 來源:網(wǎng)絡 收藏
盡管業(yè)界對SystemC或SystemVerilog哪個更適用于系統(tǒng)設計和驗證仍有爭論,但已經(jīng)不需要在兩個之間作出選擇。通過互補的方式對它們高效地加以利用可以促進那些高級驗證方法的成功運用。這些高級驗證方法通常會采用受限隨機測試生成、功能覆蓋、聲明和事務級建模(TLM)功能。

通過支持面向?qū)ο蟮木幊谭椒?,這兩種語言都能對更高層的抽象進行建模,而且都包含象隨機化這樣的驗證組件。兩者之間也有些區(qū)別。例如SystemC完全支持TLM,包括在高層抽象進行描述、記錄和事務瀏覽;而SystemVerilog不完全支持TLM,但它支持聲明、功能覆蓋和改進的受限隨機測試生成功能,因此也具有顯著的驗證優(yōu)勢。這兩種語言在功能上多少有些重疊,因此用這兩種語言建立系統(tǒng)時可以做到平滑轉換。

可以在多個抽象層實現(xiàn)的高級驗證方法和建模技術能夠最佳地發(fā)揮TLM的優(yōu)勢。事務常用于建模硬件系統(tǒng),而系統(tǒng)軟件的語義很容易被表示為高層事務。這樣系統(tǒng)架構師、軟件、驗證和硬件工程師之間就能直接進行交流。更高層抽象和TLM可以使大量軟件被用作測試平臺的一部分,并允許在RTL編碼完成之前開始測試平臺開發(fā)。當RTL設計實現(xiàn)時,驗證工程師就可以插入將RTL事務轉換成信號層事務的事務處理器。

另外,設計領域和學科之間的這種高性能橋梁可以改善公司各個設計與驗證團隊的所有成員之間的交流和合作。它允許軟件工程師和系統(tǒng)架構師與驗證和硬件工程師直接分享數(shù)據(jù)。這種交叉學科交流本身也有助于發(fā)現(xiàn)和解決設計過程早期出現(xiàn)的問題,從而進一步提高設計質(zhì)量和驗證的產(chǎn)能。


圖1:在多個抽象層工作并使用高級驗證方法可以為系統(tǒng)級平臺的建立提供極好的機會,此時驗證復雜SoC所需的多學科匯聚要比以前早得多。

標準集成可進一步方便高級驗證

設計復雜性意味著驗證小組必須能夠產(chǎn)生更多冗余度更少的測試,以便更快地覆蓋目標性能。最佳的驗證解決方案可以幫助工程師利用高級驗證技術和方法實現(xiàn)更高的驗證產(chǎn)能,例如基于聲明的驗證、受約束的隨機測試、功能覆蓋和測試平臺自動化。

這些方法已被一些前沿設計公司所采用,其中大多數(shù)設計公司開發(fā)私有工具來支持這些方法。這些私有工具被證明可以增加驗證效率和產(chǎn)能,并能提高設計質(zhì)量。然而,私有特性也阻礙了這些工具的廣泛采納。通常這些定制語言的集成以及獨立內(nèi)核和專用接口的整合限制被證明是相當困難的。

克服這些障礙的第一步是由公認的標準組織如OSCI、Accellera和IEEE開發(fā)出標準的驗證語言和庫。這些新語言也必須克服其它HDL語言的設計與驗證限制,因為這些HDL語言缺少對更高層抽象的驗證支持。第二步是提供能夠全面支持在單個內(nèi)核和用戶接口中集成這些語言的仿真環(huán)境。這種語言的集成可以從根本上改變高級驗證方法的部署,使之最佳匹配項目需要,而不受語言或工具的限制。

SystemVerilog和SystemC是適合高級設計與驗證使用的最重要語言。SystemVerilog和SystemC設計構造允許在更高抽象層進行建模,從而有利于下一代設計的創(chuàng)建與驗證。

SystemVerilog是許多現(xiàn)成的專有和標準驗證與設計語言積累的結果,因此它能與現(xiàn)有的HDL環(huán)境無縫集成。SystemVerilog可以加快高級功能驗證的構建,實現(xiàn)缺陷檢測的自動化和設計的完全覆蓋,包括難以預料的偏僻案例。它能改善建模質(zhì)量,使之具有更好的可視性和更少的缺陷,并且能夠通過支持受限隨機測試、自動化、聲明、覆蓋和測試平臺復用改善測試平臺架構的質(zhì)量。

SystemC能讓工程師在更高抽象層捕獲設計,并使用包括軟件在內(nèi)的高層測試策略執(zhí)行驗證。系統(tǒng)級測試平臺也可以在RTL級復用,實現(xiàn)驗證產(chǎn)能的提高。SystemC包括一個功能強大的并發(fā)建模層,非常方便創(chuàng)建無時序、并發(fā)的系統(tǒng)級架構模型。因為SystemC是C++的擴展,因此它有許多固有屬性,如類、模板和多種繼承性,這些屬性自己就能建立適合功能驗證的可復用事務級組件。用于開發(fā)軟件的同一可執(zhí)行平臺常被用于整個系統(tǒng)的驗證。這種驗證在項目初期就會發(fā)生,而事務級模型可以成為整個系統(tǒng)非常好的參考。

一個全面集成的多語言仿真環(huán)境允許用SystemVerilog或SystemC編寫的高級測試平臺和設計組件使用任何設計語言?;旌虾推ヅ涠鄠€語言的能力可以使設計人員在多個抽象層上共享數(shù)據(jù),并在單次仿真中集成多個運算模型。不管設計人員處于哪個設計階段,工程師都可以使用事務器接口從不同抽象層連接即插即用模型,從而滿足不同層的需求。這樣不僅擴展了通過接口的數(shù)據(jù)類型,還能對包括VHDL在內(nèi)的所有標準語言之間的測試平臺復用提供支持,從而推進高級驗證方法的廣泛采用。

進一步的功能驗證

高效驗證需要兩個關鍵要素,而這兩個要素都可以由SystemVerilog和SystemC保證。首先,驗證環(huán)境必須能夠盡可能自動地檢測缺陷,在這樣的環(huán)境中象聲明、自動化響應檢查器和記分板等功能都會派上用場。其次,驗證環(huán)境必須能夠產(chǎn)生能引起缺陷的正確激勵信號。激勵可以通過定向測試或受限隨機技術生成,這些技術能以相對較少的代碼遍歷各種情況。

SystemVerilog和SystemC SCV允許用戶在約束方面描述激勵情景,規(guī)定驅(qū)動設計的信號或事務所需的邏輯值。這樣仿真器可以為激勵產(chǎn)生隨機值,并具有能確保所生成的情景有效的約束條件。新的情景可以通過簡單地重新運行具有不同隨機種子的仿真器形成,從而產(chǎn)生不同但等同有效的激勵,因此可以用來檢查新的功能。

使用隨機化和約束條件可以在驗證產(chǎn)能方面產(chǎn)生許多實質(zhì)性的改善。其它語言只能通過使用面向?qū)ο蠡蛎嫦蚍绞降膹碗s編程技術才能提供這些性能。雖然SystemVerilog在其面向?qū)ο蟮募軜嬛邪S機化和約束條件,但它也能提供多種方式來部署這些性能,而且不需要學習面向?qū)ο蟮木幊碳夹g,因此這些先進技術得到了廣泛使用。

一旦測試平臺中整合了隨機化功能,就需要通過功能覆蓋判斷實際上可能會發(fā)生哪一種情景。SystemVerilog功能覆蓋將跟蹤設計的哪個功能會被運用,因此不會在同一功能上浪費時間。

橋接設計和小組層次

因為考慮驗證過程的前后總是有所幫助,因此高效的方法是把測試平臺的重點放在設計該做什么,而不要放在如何做設計上。最便利的做事方式是在事務級編寫測試平臺。提高抽象層次可以增加產(chǎn)能,因為這樣可以使高層功能得到驗證,并且糾正速度比較低抽象層快??梢酝ㄟ^某種自動方式使用受限隨機、聲明、形式或其它技術處理細節(jié),也可以在更廣泛的設計和驗證工程師之間劃分細節(jié)。

事務是指在受限時間周期內(nèi)系統(tǒng)中發(fā)生的所有活動集合。感興趣活動在特定時間開始,在一段時間后結束。在特定設計單元中或在兩個單元之間發(fā)生的所有操作、狀態(tài)修改、數(shù)據(jù)移動和運算都是事務。事務級模型用來在高層抽象描述復雜系統(tǒng),允許設計師在進入完整實現(xiàn)的低層細節(jié)之前解決架構問題。在功能驗證方面,基于事務的測試平臺允許驗證工程師在構思設計的層次驗證正確操作。

因為事務級模型提供的細節(jié)要比Verilog和VHDL RTL模型少得多,因此與在寄存器傳輸級建模的可執(zhí)行平臺相比,它們在仿真時的運行速度非???。SystemC事務模型也很快,甚至可以用作軟件開發(fā)平臺,從而支持早期的軟件開發(fā)和軟硬件協(xié)同仿真。另外,事務級和SystemC功能模型也具有足夠快的速度,可用于系統(tǒng)級架構化建模和分析。

事務瀏覽功能可使SystemC TLM供從事項目的所有工程師使用,從而進一步提高設計和調(diào)試的效率。SystemC和TLM可以為系統(tǒng)架構師和編程人員建立多產(chǎn)的公共平臺。事務的可視性可以表明由模型產(chǎn)生和消耗的特殊事務序列以及彼此之間的關系。

SystemC和TLM還能為所有等級的設計層次上的復用提供重要的機會。例如,硬件設計師可以在預先定義的接口上用較低層RTL模型代替高層C模型。通過復用不同抽象層上的測試平臺組件可以在多個工程學科之間建立聯(lián)系路徑,增加信息共享,提高效率。

集成語言的價值

將多個先進的編程語言集成在單個環(huán)境中可以使硬件設計師選擇復用用SystemC編寫的測試平臺,或選擇用SystemVerilog創(chuàng)建的額外驗證組件?,F(xiàn)在架構師、編程人員和硬件設計師可以充分利用具有SystemVerilog聲明、受限隨機生成、功能覆蓋和測試平臺自動化等功能的可復用測試平臺組件。

有許多理由要求在同一仿真中整合用不同語言編寫的以及在不同抽象層次的模塊。IP有許多來源,也有許多種形式。而且在集成過程中,很有可能所有的模塊不會同時出現(xiàn)在相同的抽象層次。比如,在自頂向下的流程中,原本所有模塊都是事務級模型。在逐步調(diào)整的過程中,一些模塊會被RTL所替換。

SystemVerilog直接編程接口(DPI)可以在SystemC和SystemVerilog之間提供必要的高性能、易用性鏈接。有了SystemVerilog DPI后,系統(tǒng)架構師和軟件工程師就可以用SystemC做設計,然后直接移動到SystemVerilog域進行驗證,并允許他們充分利用受限隨機技術、測試平臺自動化、聲明和功能覆蓋等功能。

因為是直接連接,SystemVerilog DPI要比編程語言接口(PLI)等標準應用編程接口(API)更便利更快速。SystemVerilog面向?qū)ο蟮奶匦砸哺菀讋?chuàng)建可復用測試環(huán)境,因為它允許約束和其它方面通過繼承進行控制或覆蓋。不過對于不準備或不愿意從事面向?qū)ο蟮木幊倘藛T而言,在事務級編寫測試和約束的能力也能顯著增加測試效率。


SystemVerilog DPI開放了一個公共的通信通道,因此允許跨越許多語言和引擎實現(xiàn)測試平臺的復用。

統(tǒng)一的驗證環(huán)境

為了充分發(fā)揮這種混合語言環(huán)境的先進驗證性能,設計小組需要一個基于標準的解決方案,以便他們利用每種語言的長處,包括可應用于多個抽象層的可復用驗證組件。

仿真仍然是高級驗證方法的核心。仿真器應該從根本上支持SystemVerilog、SystemC、Verilog和VHDL。對單個內(nèi)核中HDL和高層驗證語言的根本性支持可以獲得更快的性能和高度集成的調(diào)試和分析環(huán)境。如果在使用公共圖形用戶接口的統(tǒng)一內(nèi)核中支持所有的語言,并且語言的混合是透明的,那么肯定能獲得很大的靈活性,語言之間也很容易移植。

仿真器應該將SystemVerilog和SystemC的設計與驗證功能集成在統(tǒng)一的環(huán)境中,并設定最大化產(chǎn)能的階段。一個全面的混合語言設計環(huán)境允許用SystemVerilog或SystemC編寫的高級測試平臺與包括Verilg或VHDL在內(nèi)的任何設計語言一起使用。

這樣,架構師和設計師就可以選用他們所專長的任何語言,然后與項目的其他成員一起共享成果。在不同學科之間的這座橋梁可建立用于開放通信線的整體協(xié)作過程。結果將形成在線對話,使得許多問題和機會可以在設計開發(fā)過程的早期獲得討論澄清,而此時這些問題解決起來會更容易,代價也較低。

高級驗證方法和事務級建模的有機結合可以創(chuàng)造出極大的靈活性,顯著地提高驗證產(chǎn)能和設計質(zhì)量,同時在系統(tǒng)架構師、軟件設計師、硬件設計師和驗證工程師之間促成更好的交流。使用高層SystemC和事務級模型可以加速設計創(chuàng)建,推進架構化選擇的開發(fā)。SystemVerilog可以通過聲明和功能覆蓋等高級驗證技術加快系統(tǒng)有效性的確認。


評論


技術專區(qū)

關閉