摘 要:為了克服RTL級AHB總線模型的局限性,提出了采用標準C++擴充的軟硬件統一建模語言SystemC構建事務級的AHB總線模型的方法。該方法利用端口來連接模塊和通道,利用通道來實現接口中定義的方法。經仿真驗證,時序完全符合AHB總線標準,運行速度遠高于RTL級下的同類模型。該模型可以有效地克服軟硬件協同設計中的時間瓶頸,提高SoC的設計效率,降低設計復雜度,縮短芯片產品的上市時間。
關鍵詞:片上系統; AHB總線; 事務級; 建模
中圖分類號:TN47文獻標志碼:A
文章編號:1001-3695(2009)09-3246-03
doi:10.3969/j.issn.1001-3695.2009.09.012
Research of transaction level AHB bus model
MA Qin-sheng CAO Yang1,2, YANG Jun ZHANG Ning3
(1.School of Electronic Information, Wuhan University, Wuhan 430079, China; 2.State Key Laboratory of Software Engineering, Wuhan 430072, China; 3.Firmware Technology Development Dept, Asustek Computer Inc, Suzhou Jiangsu 215000, China)
Abstract:In order to deal with the limitations of the AHB bus model on the register transfer level, this paper introduced a method of modeling AHB bus using SystemC at the transaction level. The main idea of this method was that connected the mo-dules to the channels through the ports and implemented the methods in the interfaces through the channels. The experimental results revealed that the bus model is completely compliant to AMBA AHB specification. The rapidity of modeling running under the transaction level is higher than that of under the register transfer level. The time bottleneck of current hardware/software co-design method can be eased effectively. The efficiency of design SoC and the complexity of design SoC are improved. The time-to-market of chip is reduced.
Key words:SoC; AHB bus; transaction level; modeling
0 引言
OCB(on-chip bus)片上總線是SoC(system-on-chip)片上系統的公共信道和骨架。SoC內部的各個硬件模塊與軟件模塊間的相互通信均是通過片上總線完成的。
近年來,許多公司相繼制定了一些商用的片上總線標準,如Core Connect、Open Core Protocol、Wishbone以及AMBA(ARM microcontroller bus architecture)等總線。其中由ARM公司提出的AMBA總線,由于其自身的高性能和ARM處理器的廣泛應用,已經成為SoC系統中使用最廣泛的總線標準。
目前,基于AMBA總線的SoC系統常用的設計方法是先用硬件描述語言(如VHDL、Verilog)和高級語言(如C、C++)分別建立硬件系統和軟件系統模型;然后再通過遠程過程調用、Socket通信等方式進行軟硬件系統的協同仿真和驗證[1,2]。通常這種方法存在著以下局限性:
a)硬件描述語言是在RTL級對硬件系統進行描述,其抽象層次較低,因此在仿真復雜度較高的SoC硬件系統時,時間較長[3~5]。
b)遠程過程調用、Socket通信時間開銷較大[2],易導致協同仿真和驗證的速度極大地下降。
c)設計完成硬件系統的RTL級模型后,才能進行軟硬件系統的協同仿真和驗證,延長系統的開發周期[6,7]。
d)完成軟硬件系統的協同仿真和驗證后,才能發現軟硬件系統劃分的結構性錯誤,增加修正錯誤的跌宕次數和深度[6,7]。
為了解決上述問題,需要在較RTL級更高的層次上對基于AMBA總線的SoC系統進行建模。目前,國內外先后提出了許多建模方法,如通過擴展軟件高級編程語言、通過建立專門的描述語言以及通過擴展硬件描述語言的建模方法[3,4]等。
雖然這些方法實現了在更高抽象層次上的系統建模,但是描述軟硬件系統模型的語言依然不同,仍然需要使用遠程過程調用等通信方式來實現軟硬件系統的協同仿真和驗證。為此,本文提出在RTL級之上的事務級,采用標準C++擴充的軟硬件統一建模語言SystemC,對AMBA的核心總線AHB總線進行建模的方法。
1 基于AMBA的SoC體系結構
典型的基于AMBA總線的SoC體系結構以高性能的系統總線AHB(advanced high-performance bus)總線為骨架。在AHB總線上,掛接有主設備(如CPU、DMA、DSP)、從設備(如片上存儲器、外部存儲器接口)、仲裁器、譯碼器以及總線橋等高帶寬模塊。AHB總線不僅可以支持多個主設備對多個從設備的訪問,同時可以提供高帶寬的操作,并且它還可以通過總線橋與窄帶總線APB(advanced peripheral bus)總線連接,以便主設備能夠訪問一些必要的低帶寬的外圍模塊,如串行接口、并行接口、鍵盤以及時鐘等,如圖1所示。
AHB總線主要用來支持主設備與從設備間的數據傳輸。當有多個主設備通過AHB控制信號線向仲裁器發出總線訪問請求信號時,仲裁器便依據仲裁協議裁決出具有最高優先級的當前主設備,然后該當前主設備通過AHB地址信號線和控制信號線將相關的傳輸地址、傳輸方向以及數據寬度等信息分別送到譯碼器和從設備;當譯碼器選通相應的從設備后,從設備便在給定的地址空間內產生相應的讀/寫傳輸操作。
2 事務級AHB總線的設計
在SoC設計中,事務是指在被建模和被仿真的系統中,兩個模塊間的一次數據或事件的傳輸[8]。實現事務級的一次事務相當于實現RTL級的一個或多個周期的行為。事務級的抽象層次高于RTL級。在事務級,模塊沒有定義管腳,因此模塊間的通信不是通過管腳信號實現,而是通過函數調用實現。
2.1 總線模型
SystemC中的端口(port)、通道(channel)和接口(interface)概念極大地方便了事務級模型的開發。端口用來連接模塊和通道,它在定義時需指明接口類型;通道用來實現接口中定義的方法,它必須符合端口指明的類型;接口用來聲明在通道中實現的方法,這些方法可以不規定實現的細節。一個模塊中的進程可以通過端口來調用通道里實現的方法。
事務級的AHB總線模型如圖2所示。模型中分別定義了主設備端口、AHB總線端口以及AHB總線接口、仲裁器接口、譯碼器接口、從設備接口。該模型的運行機制為:主設備端口調用AHB總線接口發起傳輸請求,AHB總線端口調用仲裁器接口裁決出當前主設備,AHB總線端口調用譯碼器接口選擇對應的從設備,總線端口調用從設備接口實現傳輸。
2.2 模塊設計
在AHB總線接口中定義了兩類方法供主設備模塊調用,即阻塞方式(blocking)和非阻塞方式(non-blocking)。在阻塞方式下,傳輸由總線模塊控制。在傳輸過程中,發起阻塞讀/寫的主設備不能響應其他事務(如中斷)。在非阻塞方式下,傳輸由主設備模塊控制。在傳輸過程中,發起非阻塞讀/寫的主設備可以通過檢查傳輸的狀態信息來響應其他事務。在本模型中,當主設備調用阻塞方式的方法時,主設備模塊中運行的進程將被掛起,待傳輸完成后,再恢復運行;當主設備調用非阻塞方式的方法時,主設備模塊中運行的進程不會被掛起。
圖3是AHB總線模塊的狀態轉換圖。圖中current_ id是當前請求正在被處理的主設備序號;next_id是下一拍請求將要被處理的主設備序號。
在每個狀態總線,模塊需要完成以下操作:
a)空閑(idle)
next _id==0, current_ id==0
總線上無地址傳輸,無數據傳輸。
b)起始(start)
next _id!=0,current_id==0
總線上有地址傳輸,無數據傳輸。在該狀態下,總線完成以下操作:
(a)調用譯碼器通道中的譯碼函數,選通地址傳輸的目標從設備。
(b)調用目標從設備通道中的地址傳輸函數、傳送地址和控制信息。
c)忙(busy)
next _id!=0, current_ id!=0
總線上既有地址傳輸,又有數據傳輸。在該狀態下,總線完成以下操作:
(a)根據讀/寫標志位調用數據傳輸的目標從設備通道中的讀/寫函數。
(b)更新地址和數據緩沖區指針,將地址信息送到地址傳輸的目標從設備。
(c)若是兩次傳輸的交接周期,調用譯碼函數,更新地址傳輸的目標從設備。
d)結束(end)
next _id==0, current _id!=0
總線上有數據傳輸,無地址傳輸。在該狀態下,總線完成以下操作:
(a)根據讀/寫標志位調用數據傳輸的目標從設備通道中的讀/寫函數。
(b)將與當前請求相關的數據結構清零。
此外,在主設備模塊中定義了一個連接AHB總線接口的端口,該端口可以連接到實現指定的總線接口類型方法的AHB總線通道上。在從設備接口中定義了地址傳輸函數、讀/寫函數,該函數可以實現主設備與從設備間的數據傳輸,它在從設備通道模塊中實現,并被總線端口調用。在譯碼器接口中定義了譯碼函數,該函數根據初始化時配置的地址空間進行譯碼,它在譯碼器通道中實現,并被AHB總線端口調用。在仲裁器接口中定義了仲裁函數,該函數采用固定優先級的仲裁算法對多個主設備的總線請求進行仲裁,它在仲裁器通道中實現,并被AHB總線端口調用。
3 實驗結果
在ModelSim仿真環境下,運行事務級的AHB總線系統,捕獲的阻塞方式和非阻塞方式操作的仿真波形分別如圖4、5所示。
在CPU主頻為1.4 GHz以及2.3 GHz,內存均為512 MB的兩個微機環境下,分別運行事務級和RTL級AHB總線系統的阻塞方式和非阻塞方式操作各100次,得到的平均運行速度如表1所示。
表1 平均運行速度
阻塞方式運行次數/s(1.4GHz)運行次數/s(2.3GHz)
事務級阻塞方式581.40 909.09
事務級非阻塞方式641.031 063.83
RTL級阻塞方式 11.4617.73
RTL級非阻塞方式 13.5821.65
4 結束語
經仿真驗證,本文設計并實現的事務級AHB總線模型,時序完全符合AMBA AHB總線標準,運行速度遠高于RTL級下的同類型模型,這充分表明基于事務級的AHB總線設計不僅是必要的,而且是可行的。采用基于標準C++擴充的軟硬件統一建模語言SystemC來構建事務級模型,可以使得軟硬件協同仿真提前進行,減少修正錯誤的跌宕次數和深度。事務級建模作為SoC設計流程中的一個補充環節,必將極大地提高SoC的設計效率,降低設計復雜度,有效地克服軟硬協同設計的時間瓶頸,縮短芯片產品的上市時間。
參考文獻:
[1]LIAO S Y. Towards a new standard for system-level design[C]//Proc of the 8th International Workshop on Hardware/Software Co-design. New York:ACM Press, 2000: 2-6.
[2]石柯. 基于SystemC的嵌入式系統軟硬件協同設計[J]. 計算機應用研究, 2002, 19(6): 117-119.
[3]CHUNG M K, NA S K, KYUNG C M. System-level performance analysis of embedded system using behavioral C/C++model[C]//Proc of IEEE VLSI-TSA International Symposium on VLSI Design, Automation Test. Hsinchu:ERSO/ITRI, 2005:188-191.
[4]CORNET J, MARANINCHI F, MAILLET-CONTOZ L. A method for the efficient development of timed and untimed transaction-level mo-dels of systems-on-chip[C]//Proc of International Conference on Design, Automation and Test in Europe. New York: ACM Press, 2008:9-14.
[5]MARANINCHI F, MOY M, CORNET J, et al. SystemC/TLM semantics for heterogeneous system-on-chip validation[C]//Proc of International Conference on Circuits and Systems and TAISA. 2008:281-284.
[6]PASRICHA S, DUTT N, BEN-ROMDHANE M. Using TLM for exploring bus-based SoC communication architecturesapplication-speci-fic systems[C]//Proc of the 16th IEEE International Conference.2005:79-85.
[7]KLINGAUF W, GADKE H, GUINZEL R. Train: a virtual transaction layer architecture for TLM-based HW/SW codesign of synthesizable MPSoC[C]//Proc of Design, Automation and Test in Europe. Leuven: European Design and Automation Association, 2006:1318-1323.
[8]PASRICHA S. Transaction level modeling of SoC using SystemC 2.0[C]//Proc of Synopsys User Group Conference’02. Bangalore: Kluwer Academic Publishers, 2002:11-15.