基于ESL并采用System C和System Verilog的設計流程
ESL解決方案的目標在于提供讓設計人員能夠在一種抽象層次上對芯片進行描述和分析的工具和方法,在這種抽象層次上,設計人員可以對芯片特性進行功能性的描述,而沒有必要求助于硬件(RTL)實現(xiàn)的具體細節(jié)。
當今,芯片設計需要進行深入的系統(tǒng)級仿真,以確保設計的體系架構合適均衡。在絕大多數(shù)情況下,所進行的這些仿真還要求在芯片的仿真模型上運行大量的軟件, 以覆蓋所需的功能。為了讓這些仿真具有合適的執(zhí)行性能,架構設計正在向電子系統(tǒng)級(ESL)解決方案發(fā)展。本文探討了一種基于SystemC和 SystemVerilog的設計流程如何滿足極為復雜的硬/軟件系統(tǒng)級芯片(SoC)的設計周期和降低風險的目標。
復雜性催生ESL方法學
為了探討ESL在設計流程中的作用,我們首先看一下當今的主要設計原則。下面的圖1所示是一個十分典型的芯片。目前,這類SoC的一大部分是采用IP 模塊進行組裝的。這些模塊部分來源于以前的設計,其它是從內部IP庫獲取的,或者是由外部IP提供商所許可使用的。當然,SoC中還包含了需要重新創(chuàng)建以 加入關鍵性功能的模塊。
據(jù)普遍預計,對于下一代90納米和65納米
設計而言, IP的使用將進一步增加。SoC還將包含多個可編程部件,例如中央處理器(CPU)和數(shù)字信號處理器(DSP)。有了這些部件和眾多的(甚至更大的)IP 模塊,為了SoC設計的成功,在性能、功耗和芯片制造成本之間通過快速組裝、仿真和分析各項體系結構方案尋求最佳平衡的能力正在變得越來越關鍵。
除了硬件設計任務以外,軟件設計任務也正在成為SoC設計流程中一個不可或缺的組成部分。傳統(tǒng)上,軟件設計任務標準情況下只在芯片的硬件原型已經提供 后才執(zhí)行。例如,在無線領域,這種方式經常導致產品推出時間計劃的延遲,原因是“軟件尚未完成”。為了解決這個問題,一種“虛擬原型”的概念出現(xiàn)了。虛擬 原型是目標芯片的一種高速(20MHz以上)事務處理級模型,這個模型讓軟件開發(fā)工作在硬件原型完成前數(shù)個月前就可以開始了。
新興的SoC設計流程
圖2所描述的設計流程有利于引導SoC開發(fā)人員盡力解決這些難題。這一設計流程以ESL流程為起點,包含三項緊密相關的行動——產品規(guī)格確定、體系架 構設計以及軟件執(zhí)行平臺的開發(fā)。這個ESL流程的一項關鍵要求是它催生了一種硬件和軟件并行開發(fā)的流程,為需要設計的新邏輯模塊提供了詳盡的規(guī)格,并提供 事務處理級的虛擬原型,而軟件開發(fā)任務就可以在這一原型上執(zhí)行。
ESL階段之后是RTL設計/驗證和軟件開發(fā)任務的并行執(zhí)行,這樣在創(chuàng)建了硬件原型(要求提供RTL)的同時,也能夠提供必需的軟件。
與此類似,在芯片物理設計完成,代工廠即將交貨之時,絕大多數(shù)或全部的所需軟件均已經準備好并經過驗證,從而確保大幅縮短最后的硬件/軟件集成階段。
事務處理級建模——ESL的關鍵
事務處理級建模提供了用于構建上述虛擬原型的關鍵技術。系統(tǒng)的事務處理級模型描述了系統(tǒng)各個功能單元之間的抽象操作(事務處理)。典型情況下,這些事務處理是各個功能單元之間交換的整個的數(shù)據(jù)結構(或對象)上讀取/寫入或發(fā)送/接收操作。
事務處理級模型的仿真速度比RTL模型快出若干個數(shù)量級。首先,它不對每一個硬件信號的功能進行建模,而是在抽象數(shù)據(jù)類型(可能代表了許多單個信號) 上操作的模型,從而實質性地加快了仿真的速度。第二,通過使用抽象數(shù)據(jù)類型來代表RTL內多時鐘周期的數(shù)據(jù)傳輸,甚至可以讓仿真的速度增加更快。因此,將 這些因素結合起來,TLM模型比同等的RTL模型的運行速度快出100倍至1000倍以上都是常見的,這個速度已經快到足以運行相當大的軟件。
當今,在RT上的抽象層次已經十分明確,但TLM尚未達到這樣的程度。實際上,適當?shù)腡L抽象層次經常取決于應用領域和運行仿真的首要目的。某些應用 要求周期上的精確性,例如對具體的高速緩存器特性的分析。而某些應用甚至可能要求在開發(fā)流程中與RTL模型建立部分關聯(lián),而其它應用(典型為軟件開發(fā)任 務)只需要功能上的精確度。
目前,SystemC和SystemVerilog均得到了廣泛應用,并由IEEE和其它工業(yè)組織進行了標準化,得到了由各家EDA供應商提供的工具的廣泛支持。而將SystemC和SystemVerilog組合起來,能夠最大范圍地解決可能出現(xiàn)的對事務處理級的建模問題以及滿足工程師的偏好,并提供一套從ESL至RTL驗證的完整解決方案。
SystemC
SystemC是一種靈活的基于對象的結構化建模語言,設計用于對包括TLM在內的多種抽象層級進行建模。SystemC以C++庫來實現(xiàn),其中將并發(fā)性結合進傳統(tǒng)C++語言框架中。
雖然SystemC語言相對較新,但SystemC的采用具有重要的意義。原因之一是,在SystemC成為標準以前, 許多公司和大學已經在采用以前的各自專有C/C++庫在事務處理級上對系統(tǒng)進行建模。這樣,SystemC就向這些設計人員提供了一種實現(xiàn)他們的事務處理 級方法學的工作標準方式,并提供了一種更為便捷的途徑交換系統(tǒng)級IP和知識。第二個原因是,SystemC使各種(基于C語言的)工具和仿真器相對較為容 易的集成,例如,集成微處理器核心用的指令集仿真器(ISS),并具備借助C++大量的專家,采用這一語言方便地來加快工作。
關于SystemC的典型使用情況,根據(jù)最近有關SystemC的出版物以及各項調查中得知,例如SystemC用戶中的絕大多數(shù)正使用這種語言來執(zhí)行建模(68%)、體系架構開發(fā)(68%)、事務處理級建模(56%)和硬件/軟件協(xié)同仿真(56%)。
SystemC最初在OSCI(開放SystemC發(fā)起組織)中發(fā)展而來,它的語言參考手冊(LRM)最近已經獲批成為IEEE 1666標準(見參考文獻[1])。
SystemVerilog
SystemVerilog是一種相當新的語言,它建立在Verilog語言的基礎上,并新近成為下一代硬件設計和驗證的語言。SystemVerilog結合了來自
Verilog、VHDL、C++的概念,還有驗證平臺語言和斷言語言,也就是說,它將硬件描述語言(HDL)與現(xiàn)代的高層級驗證語言(HVL)結合了起 來。由于擁有這樣的概念以及它與Verilog的向上兼容性,使其對于進行當今高度復雜的設計驗證的驗證工程師具有相當大的吸引力。能夠采用 SystemVerilog進行驗證的另一項成功因素是方法學手冊和架構的更早可用性,例如在SystemVerilog的驗證方法手冊(VMM)(見參 考文獻[2])中所描述的驗證平臺方法(這一方法是由ARM和Synopsys合作開發(fā)的)。
上述這些特點,以及SystemVerilog是一項得到了所有主要EDA供應商支持的IEEE標準的事實,使得SystemVerilog實質上成為了硬件設計和驗證的首選語言。
SystemC與SystemVerilog特點比較
就SystemC和SystemVerilog這兩種語言而言, SystemC擴展了C++在硬件方面的適用范圍,而SystemVerilog擴展了Verilog在基于對象和驗證平臺方面的適用范圍。而這兩種語言 均支持諸如信號、事件、接口和面向對象的概念,但每一種語言又均擁有自己明確的應用重點:
● SystemC對于體系架構開發(fā)編寫抽象事務處理級(TL)模型、或執(zhí)行建模來說最為有效,特別是對于具有很強C++實力的團隊和有基于C/C++ IP 集成要求(如處理器仿真器),以及為早期軟件開發(fā)設計的虛擬原型來說,更是如此。
● SystemVerilog對于RTL、抽象模型和先進的驗證平臺的開發(fā)來說最有效率,因為它具備了執(zhí)行這方面任務所需的基礎架構,例如受限制隨機激勵生成、功能覆蓋或斷言。
● SystemVerilog顯然是描述最終的RTL設計本身的首選語言,不僅在于其描述真實硬件和斷言的能力,還在于對工具支持方面的考慮。
這并不意味著每種語言不可以用在不同的應用中。 實際上,SystemC可以用于驗證平臺和描述RTL結構,而SystemVerilog也可以用于編寫高層事務處理級模型。但是,每一種語言都用于自己 的重點應用時,它們可以達到最佳的效率。這點對于復雜的項目特別適用,在這種項目中,不同的任務分屬于不同的組,通常有不同的技能要求。注重實效的解決方 案以及符合設計團隊的多種技術要求的方法是同時使用SystemC和SystemVerilog來開發(fā)和驗證當今設計流程需要的虛擬原型的事務處理級模 型。
集成的仿真環(huán)境
將SystemC和SystemVerilog集成在同一個解決方案中,歸根結底是需要提供混合SystemC和SystemVerilog的仿真和 調試環(huán)境。這項集成的核心在于能夠直接從SystemVerilog任務中調用SystemC成員的能力,反之亦然,可以從SystemC成員中直接調用 SystemVerilog任務。很明顯,這樣就要求在SystemC和SystemVerilog的時間概念之間達到同步。
為了建立SystemC和SystemVerilog的高效集成解決方案,讓諸如信號和事務處理這樣的基層概念在語言設計中,盡管已經在各自的語言中 進行了各自方面的優(yōu)化,在語義上又能夠跨越語言分界實現(xiàn)有效的映射。實際上,SystemC和SystemVerilog的標準化組織,OSCI和 Accellera,已經認識到在這兩種語言之間建立有效接口連接機制的需求。
SystemC和SystemVerilog集成的核心支持了混合層級結合的建模,而有能力創(chuàng)建部分處于事務處理級和部分處于具體硬 件級的仿真模型。因此,集成讓SystemC和SystemVerilog能夠在不同的抽象層級上進行通訊。
一個典型的應用實例是將一個SystemVerilog RTL模塊集成到整個系統(tǒng)的一個SystemC模型中,例如,為了實現(xiàn)早期集成檢查。由于SystemC典型情況下應用在事務處理級,就有必要使用一個作為抽象層級之間橋梁的適配器(圖3)。
這些適配器的目的在于將事務處理轉換成信號操作,而反之亦然。這樣,就可以讓設計的一部分在事務處理層次上進行仿真,而另一些部分在具體硬件層級上進行仿真。采用這種方法,設計人員擁有對于仿真具體層級的完全控制。
這些適配器可以用SystemC或以SystemVerilog(圖3)來編寫。使用一項SystemC適配器是相當直接的方式,并且以將 SystemC信號映射到SystemVerilog信號為基礎,反之亦然。而以SystemVerilog來縮寫轉換器時,典型情況下能夠提供更高的性 能,但要求在SystemC與SystemVerilog之間建立事務處理級接口。
SystemC與SystemVerilog之間的事務處理級接口
在System
C中,將通訊與功能區(qū)隔開來的目的導致了接口概念的形成。在SystemVerilog中,與接口類似的概念也進行了設計。雖然 SystemVerilog接口和SystemC接口并不完全一致,它們在語言上具有足夠的匹配度,能夠提供這兩種語言之間的有效事務處理級連接。 SystemVerilog接口是一種能夠將信號捆綁在一起的結構,并且具有與SystemC接口完全一樣的接口方法。通過使用 SystemVerilog基于DPI的服務層,驗證引擎可以直接將SystemC接口映射在SystemVerilog接口上,從而可以從 SystemVerilog驗證平臺中直接調用SystemC事務處理級模型。
例1所示為在參考文獻[3]中所述的以SystemC編寫的simple_bus的模塊接口部分。它描述了接口方法burst_read。而 simple_bus的整個代碼可以在任何SystemC 2.x版本的安裝版本中找到。但是,simple_bus是如何實現(xiàn)此接口方法的,例如,使用了什么樣的總線帶寬或使用了哪一類型的仲裁,對于該接口方法 的調用者來說都是不可見的,因此,可以在體系結構開發(fā)中很方便地進行改變。
例2所示為simple-bus的一個SystemVerilog接口部分,這個總線可以直接映射到如例1所示的SystemC接口。為了確保 SystemVerilog接口向SystemC成員的正確映射,其實現(xiàn)通過一個SystemVerilog的直接過程接口(DPI)服務層來完成。
這樣就可以實現(xiàn)如例3所示的從SystemVerilog驗證平臺中直接調用SystemC對象的接口方法。
有了這種能力,驗證團隊就可以充分利用SystemVerilog的驗證平臺技術來驗證SystemC事務處理級模型,并可以使用SystemC事務 處理級模型作為硬件驗證流程的參考模型,這點在圖4中進行了概略的描述。此外,SystemVerilog功能覆蓋和斷言可以用于實現(xiàn)完整的由覆蓋率驅動 的事務處理級模型的驗證解決方案,為SystemC模型提供新型和前所未有的驗證能力。
Synopsys的Discovery驗證平臺是這類集成驗證環(huán)境最好的實例之一,它同時集成了對SystemC和SystemVerilog的支 持。它提供了高性能的RTL驗證,包括仿真和形式分析、體系架構開發(fā)以及提供一個對廣泛的測試平臺所需的基礎支持,來處理事務處理級建模的驗證。
通過觀察目前的SoC設計,我們可以大致了解為什么ESL工具和方法在控制設計成本和幫助準時發(fā)布產品方面起到了關鍵性的作用,并且了解到那些影響到SoC性能和成本的關鍵性決策是在項目早期通過采用事務處理級建模方法建立的虛擬原型做出的。
SystemC是一種非常適合于創(chuàng)建、仿真和分析設計的事務處理級模型的語言。SystemVerilog是理想的硬件實現(xiàn)語言。SystemC和 SystemVerilog的良好結合能支持混合(事務處理和硬件)模型。此外,這項結合讓SystemVerilog的強大驗證能力能夠在事務處理級模 型的驗證工作中充分發(fā)揮,而相同的驗證平臺還可以適用于硬件驗證工作。
SystemC和SystemVerilog結合起來提供了當今先進芯片所需的一套從ESL至RTL設計流程的真正的、基于標準的解決方案。通過將 SystemC和SystemVerilog結合到一個單一的驗證環(huán)境中,可以高效地建立和驗證分析體系結構所需要的事務處理級虛擬原型,并在設計工作的 早期開發(fā)內嵌的軟件。