1.引言
隨著集成電路制造技術的發展,VLSI 已經進入了SoC(System-on-Chip )片上系統時代。對于復雜的片上系統而言,系統驗證占整個設計時間的60%-70%,其中涉及到軟件與硬件的協同工作等等。傳統的系統驗證在RTL 級進行,RTL 提供更精確接近實現的同時,也加長了驗證時間以及此時發現問題再修改帶來的成本增加,所以非常有必要地在盡可能早地進行有效的系統驗證。
SystemC 作為一種系統描述語言應運而生,它支持從系統級到門級的描述,解決了傳統片上系統設計方法中不同級別使用不同描述語言帶來的過渡問題,而其事務級(TransacTIon-Level,TL)建模仿真方法可以在早期有效地進行系統驗證,同時速度較RTL 級仿真更快。
目前,事務級建模得到廣泛的使用和認同,Synopsys 公司現已提供關于AMBA 架構的事務級模型,以供進行由AMBA 架構組成的SoC 系統的事務級建模仿真所用。
2.SystemC 事務級建模
SystemC 由C++衍生而來,在C++基礎上添加硬件擴展庫和仿真庫構成,從而使SystemC 可以建模不同抽象級別的包括軟件和硬件的復雜電子系統,既可以描述純功能模型和系統體系結構,也可以描述軟硬件的具體實現。
在使用SystemC 進行高層次建模時,引出一個新的概念——TLM(Transaction-Level Model )事務級模型,該建模方法創建一可執行平臺模型,對系統進行仿真,但其不僅僅是功能級描述,仿真也具有一定時序。
事務級模型建模因不考慮很多底層細節,所以進行建模時間短,并且可以將重點放在如何通信,而不是通信在更底層如何實現;事務級建模可以使用事件驅動,由一事件可以驅動一系列行為,因此建模可以在早期進行。所以,SystemC 事務級模型具有建模效率高和仿真速度快的優點。另外,SystemC 事務級建模作為高層次建模方法,還具有如下特點:
–模型之間依靠時鐘和(動態)事件同步;
–模型內部是周期精確的;
–模塊pin 沒有明確進行建模實現,但可通過適配器外部實現;
–模塊之間通過端口(port)和層次化通道(hierarchy channel )進行通信。
上述特點描述中,端口(port)和層次化通道(hierarchy channel )概念為SystemC 事務級建模引入的新概念:
. 接口(inteRFace):定義一組方法來實現設計目標,但不實現這些方法;
. 通道(channel): 實現接口定義的方法;根據通道內部所實現方法的情況,又分為基本 通道和層次化通道;基本通道中沒有可見的結構,不包括進程,也不能直接訪問其他的基本通道;層次化通道則包括模塊、進程等,可以直接訪問其他的通道;
. 端口(port):總是與一定的接口類型相關聯,端口也只能連接到實現了該類接口的通道上,通過端口模塊和進程來訪問通道內定義的接口方法; 通過接口又引出接口方法調用(interface-method-call,IMC) 的概念,是指一個進程通過端口調用通道內實現的接口方法。方法在接口中定義,在通道內實現,但在進程內執行。基于以上概念,提出一種事務級建模思想:
①設備若僅作為被訪問者,如存儲器、FIFO 等,那么只需要定義接口,以備被訪問,實現接口方法,此設備作為基本通道存在;
②設備若僅作為訪問者,如CPU,那么只需要定義端口,來訪問其他設備;
③設備若既可作為訪問者和被訪問者,如總線,那么它就需要同時定義端口和接口,同時也要實現接口,這也就是層次化通道,接口用來被訪問,端口用來發起訪問。
對于SoC 設計而言,事務級建模屬于架構型設計。在架構的事務級建模中,模塊在共享的通信通道(如總線)彼此進行交易。同時在進行系統的SystemC 事務級建模中,可以有效地對軟件部分進行描述,結合其進行協同仿真。所以,對所設計的系統使用事務級模型進行仿真時,不僅系統架構可以找到系統級的瓶頸并能有效解決,而且軟件開發者也可以評估軟件的運行吞吐量,同時也可以研究在系統背景下軟件和硬件模型之間的交互。
3.CoCentric System Studio(CCSS)內事務級建模仿真
CCSS 是Synopsys 公司提供的一SystemC 仿真平臺,支持使用完全事務級模型進行設計、分析、調試驗證SoC 架構。
事務級仿真中,對于源代碼的調試,CCSS 內嵌調試軟件DDD。使用事務級模型組建系統,在編譯之后的系統仿真中,當系統工作運行到將要調試的特定模塊部分,則可以將該模塊部分調入DDD,進行普通設置斷點的調試,顯示該模塊的執行情況以及對系統的影響。對于系統中整體特定模塊而言,可以在實例上設置斷點、在連線上設置數據監控點(data watch point)、在端口和參數上設置層次監控點(level watch point)。仿真進行時,仿真控制面板上的Level Watch 中,可以改變參數值,以得出不同參數值的仿真情況。若觀察波形,則可以調入Virsim 波形仿真軟件。
此外,對于整個系統的事務級仿真,更需要一些直接明確的數據來對系統性能進行評估,例如需要知道系統中發送數據的數目,某一時刻系統的狀態、發生的事件等等。CCSS 提供的監控器(monitor )可以解決這一問題。
對于監控系統仿真情況,CCSS 提供了3 種類型的監控器,分別為表格、消息以及數據類型。程序中設置此三種監控器,對期望的系統行為進行監控,調整系統參數帶來的性能改變也可以清晰顯示。根據記錄結果,觀察系統弱點,以此為出發點進行改進系統。
圖1 總結出系統的TLM 建立及仿真流程,TLM 建模思想見部分2 中描述,在整個系統仿真、修改過程中,驗證平臺(testbench )保持不變從而減少工作量,同時系統修改前后的性能也有更好的可比性。

4.具體實例
這部分給出一例子,結合數據來說明由TLM 組建的系統在CCSS 中進行仿真的方法及特點。如圖2 所示一簡單IP 路由系統。該系統實現簡單路由尋址,分析數據屬于本地地址還是其他地址。該系統有四個主設備:DMA 控制器、路由分析(Router)、本地輸出(Local)、其他輸出(Forward)模塊,兩個從設備:存儲器(Memory)、仲裁(Arbiter)模塊。
遵循部分2 中所敘述思想對系統中模塊進行事務級建模。
IP 數據包產生(IP Packet Generator )模塊這里為testbench,IP 數據包分析(IP Packet Parser)模塊分析接收來的IP 包,然后送入DMA 控制器,DMA 控制器再將數據送入存儲器中,路由分析模塊進行路由分析,本地輸出模塊為本地地址端口輸出、其他輸出模塊為其他地址端口輸出。
初步系統設計,對于Router 模塊,考慮使用軟件或者硬件實現,具體根據系統性能結果決定。

探測系統性能,在此主要分析IP 包丟失率。鑒于存儲器的大小直接關系整個系統的成本,同時系統的路由延遲(latency )關系到系統性能。可以同時考慮該兩項對IP 包的丟失的影響。對于使用硬件實現Router 模塊,路由延遲范圍值在1-40 時間單位之間;而使用軟件實現范圍值則在3000-7000 時間單位之間。
整個系統中使用三種類型的監控器進行驗證系統行為,在IP Packet Parser 模塊內考察IP 包丟失情況,分析存儲器大小和系統延遲帶來的影響。改變存儲器大小和延遲大小,根據IP Packet Parser 模塊內監控器記錄得出結果。如圖3 所示。

結合圖3,可以看出,當存儲器容量一定時,延遲越大,系統性能也就越差,也就是說,這種情況下,系統為了達到較好的性能,就需要使用硬件實現Router 模塊。使用軟件實現Router 模塊雖然可以降低成本,但是帶來的是系統性能的降低;提高存儲器容量可以對此進行補償,但是同時也增加了一定的成本。所以需要同時考慮兩方面的因素,進行折衷選擇。
另外一方面,在延遲latency = 1 時,即使用硬件實現路由分析模塊時,系統在存儲器容量大于20K 以后,性能幾乎沒有提高,這時,考慮到到系統瓶頸,重點將不放在延遲及存儲器大小,而轉為分析系統架構的原因。
5.結論
SystemC 語言中TLM 具有建模效率高、仿真速度快的特點,本文結合其特點給出了一種建模思想。CoCentric System Studio(CCSS )支持完全的TLM 仿真,并且支持各種調試,可以明確分析系統性能,給出仿真流程。結合例子來說明在CCSS 內進行TL 建模組建系統并仿真,可以得出對系統改進的指導結果。