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