文獻標識碼: B
文章編號: 0258-7998(2011)11-0134-03
隨著集成電路設計和工藝的不斷發(fā)展,人們已經(jīng)可以把復雜的電子系統(tǒng)集成到一個芯片上,即片上系統(tǒng)SoC(System on Chip)。SoC的設計以應該是一個軟件、硬件協(xié)同設計的過程,而傳統(tǒng)的以寄存器傳輸級(RTL)建模為基礎的設計方法,只有在全部的硬件設計完成后才能進行軟件測試和系統(tǒng)集成,降低了開發(fā)的效率,延長了產(chǎn)品面市的時間。
近來,為了解決上述問題,國內(nèi)外提出了很多不同的方法。其中,電子系統(tǒng)級設計(ESL)被認為是用來解決諸如系統(tǒng)級仿真和驗證、架構探測、片上總線設計和系統(tǒng)性能評估等系統(tǒng)級問題最有前途的一種方法。ESL的關鍵就是用事務級建模(TLM)來建立一個SoC系統(tǒng)的模型。所謂事務,一方面指把低層次的信息傳輸組合成較高級別的傳輸,例如把讀寫一大塊數(shù)據(jù)作為一個事務,包含總線上的若干次突發(fā)傳輸,每個突發(fā)傳輸又會包含地址連續(xù)的多個數(shù)據(jù)傳輸;另一方面指不牽涉具體的信號,而是把傳輸中涉及到的信息分類作為整體表示。在事務級的傳輸機制可以通過信道來完成,模塊之間的通信則可以通過調(diào)用接口函數(shù)來完成,這樣可以大大提高仿真的速度[1]。
在事務級建模領域,國內(nèi)外做了大量的研究。OSCI組織推出的SystemC語言為SoC的事務級建模提供了良好的語言支持,Synopsys公司已經(jīng)推出AMBA的事務級模型。國內(nèi)在事務級建模方面也取得了一些成就[2-3]。國芯CLB總線具有優(yōu)良的數(shù)據(jù)傳輸性能和可擴展性,因此,它具有很強的發(fā)展?jié)摿?。但是,如何建立CLB周期精確的事務級模型仍是一個有待解決的問題。
1 CLB事務級模型的建立
1.1 建模語言
本文采用SystemC建立國芯CLB總線的事務級模型。SystemC在C++的基礎上發(fā)展而來,可以支持門級、RTL級和系統(tǒng)級等不同抽象層次的建模和仿真。在SystemC TLM 2.0中,定義了非定時模型、近似定時模型、松散定時模型和周期精確定時模型,分別用于滿足不同級別精度的需要,并且支持多個時鐘之間的任意相位關系[4]。同時,SystemC具有所有硬件描述語言所共有的基本特征,包括模塊、進程、端口和信號等,這使得SystemC可以很好地完成CLB的事務級建模。
1.2 CLB總線
CLB總線是基于我國具有自主知識產(chǎn)權的32位RISC嵌入式CPU-C*Core的SoC平臺中使用的層次化片上總線體系結構[4]研制的。CLB總線采用了高效的流水線 (Pipeline)結構,能在讀寫數(shù)據(jù)的同時產(chǎn)生下一訪問的地址信號;總線支持字節(jié)、半字和字三種類型的數(shù)據(jù)傳輸;總線接口支持C*Core和系統(tǒng)中的其他設備之間的數(shù)據(jù)同步傳輸,內(nèi)部分布的時鐘信號用來提供邏輯時序。
圖1所示為CLB的工作示意圖,其中BCU(Bus Control Unit)相當于總線仲裁器,由它控制總線的使用權;Slave0、Slave1的選擇由CLB內(nèi)部的地址譯碼邏輯完成。
1.3 CLB的VCI封裝及建模的設計
IP(Intellectual Property)是構成SoC的基本單元,IP的復用可以有效縮短產(chǎn)品的開發(fā)時間、減少產(chǎn)品投放市場的時間、降低產(chǎn)品的開發(fā)成本。因此,IP復用是SoC設計的一個重要的組成部分。為了增加CLB總線模型的可復用性,本文對其進行了標準的VCI封裝。根據(jù)VCI協(xié)議的標準[5],本文將CLB的VCI封裝設計成BCU、CLB Initiator Wrapper和CLB Target Wrapper三個部分,如圖2所示。
圖中BCU負責總線的控制部分,包括總線的仲裁和地址譯碼。地址譯碼部分通過存儲器映射機制完成,每一個從設備都有一個屬于它自己的存儲器映射地址。這樣,通過總線上的地址就可以很容易地確定所需要選擇的從設備。Initiator Wrapper的作用則是把接收到的外部VCI信號轉換成為能夠在CLB總線上進行傳輸?shù)腃LB總線信號。這就涉及到不同協(xié)議之間信號時序的轉換與匹配的問題。對此,本文采用以下策略:(1)對于協(xié)議兩側功能相同、時序上無差別的信號,將其直連; (2)對于協(xié)議兩側功能有對應關系、時序上無差別的信號,采取組合邏輯的方法進行轉換;(3)對于協(xié)議兩側功能上有對應關系而時序上又有一定差別的信號,采用有限狀態(tài)機的方法對其進行時序的轉換; (4)對于協(xié)議兩側無對應關系的信號,對其進行舍去或者懸空處理[6]。
在進行協(xié)議轉換時,如果采用同一時鐘進行轉換,會導致CLB總線上信號時序與實際的時序有較大的差異。為了保證系統(tǒng)模型時序的周期精確,本文采用多時鐘技術,將系統(tǒng)時鐘和控制總線的時鐘分離,并采用一個四倍于系統(tǒng)時鐘的虛擬時鐘來控制總線狀態(tài)的轉換。這樣,可以使有限狀態(tài)機能夠有充足的時間進行協(xié)議的轉換,也能保證時序的周期精確。
在進行信號轉換時,有限狀態(tài)機由transition()和genMealy()兩個方法來描述。其中transition()方法根據(jù)狀態(tài)機中寄存器的當前值和從輸入端口得到的值來計算寄存器下一時刻的值,并可用來控制狀態(tài)機的狀態(tài)轉換;而genMealy()方法則根據(jù)狀態(tài)機內(nèi)部寄存器的值和輸入端口的輸入值來計算輸出端口的輸出信號的值,并可用來產(chǎn)生狀態(tài)機的輸出。同樣Target Wrapper也可以采用相同的策略來實現(xiàn)。
2 仿真驗證平臺的設計
在完成了對CLB的事務級建模后,將對其進行仿真和驗證。本文采用的驗證環(huán)境為SoCLib平臺。SoCLib平臺是一個由法國TIMA Lab、Lip6等研究機構與STMicroelectronics等知名企業(yè)聯(lián)合開發(fā)、用于多核SoC系統(tǒng)架構設計的開放式ESL建模仿真平臺。
本文所建立的基于SoCLib的仿真驗證平臺如圖3所示。其中,CLB/VCI和BCU組成整個SoC的片上總線,它帶有標準的VCI接口協(xié)議的封裝,負責整個SoC的通信工作;C*Core ISS是C*Core的指令集仿真器,用來執(zhí)行編譯好的C*Core的程序代碼;RAM是整個SoC的片上存儲器,用來存儲編譯好的程序;TTY是一個虛擬的可視化終端,可用它來觀察程序運行的結果;TIMER則是一個定時器,用來記錄程序運行的時間,便于性能分析。所有這些模塊均帶有標準的VCI接口協(xié)議的封裝。
系統(tǒng)在運行時,首先將編譯好的程序代碼加載到RAM中,通過總線將RAM中的指令傳輸?shù)紺*Core ISS仿真器,最后,C*Core ISS通過總線將運算結果輸出到TTY上,同時,TIMER完成程序運行時間的計時工作。
3 結果分析
利用搭建好的SoCLib平臺,對所建立的CLB模型進行了大量仿真和測試,其結果表明CLB模型的功能完全正確。為了驗證所建立模型與實際波形在時序周期上是否精確,可在頂層配置文件加入產(chǎn)生波形文件的語句,并用這些語句將仿真信息輸出到一個擴展名為.vcd的文件中。最后,利用Debussy將SoCLib仿真產(chǎn)生的波形文件與國芯公司提供的CLB的RTL級的仿真平臺NCVerilog產(chǎn)生的波形文件進行比較。其仿真波形對比如圖4所示。
從圖中可以看出,在第一個時鐘周期的上升沿,處理器核將所有訪問的地址(0x80001234)及所要進行的操作(讀/寫)置于總線上,并在第二個時鐘周期到所需要的數(shù)據(jù)(0x12345678)。而在SoCLib平臺上,由于采用了多時鐘的方法控制CLB的傳輸狀態(tài)的轉換,因此能夠做到周期精確。此外,兩個平臺上運行相同的國芯公司提供的測試程序所用的時間如表1所示。
從表中可以看出,由于在SoCLib平臺上事務級總線每次的讀、寫均是以事務進行,NCVerilog平臺上的總線則是按位進行的,因此SoCLib平臺的仿真速度要比NCVerilog平臺的仿真速度快很多。
與寄存器傳輸級(RTL)模型相比,CLB總線事務級模型(TLM)是在更高的抽象層次對系統(tǒng)硬件進行建模,相比RTL模型更容易開發(fā),在設計初期就可得到系統(tǒng)的硬件模型,并且事務級平臺的仿真速度要比RTL級快很多,因此該模型非常適合于架構和性能分析及早期的軟硬件協(xié)同設計和驗證。另外,對CLB進行標準的VCI協(xié)議的封裝,提高了CLB模塊的復用性,也可以為SoCLib提供一種新的片上總線的模型;同時,此次建模也是首次對國內(nèi)具有自主知識產(chǎn)權CPU的片上總線CLB的事務級建模,對推動我國自主CPU的發(fā)展和使用具有重要的意義。
參考文獻
[1] CHANG C Y, HSIAO C Y, LEE K J. Transaction level modeling and design space exploration for SoC test architectures[C]. Asian Test Symposium, 2009.
[2] Home page of OSCI [EB/OL].http://www.systemc.org,2010
[3] 朱小虎,曹陽,羅娟. 基于SystemC的周期精確事務級AMBA總線建模[J]. 武漢大學學報(理學版),2005,50(5):629-632.
[4] C*Core Technology(Suzhou) Co., Ltd. C*Core 310 User manual version 1.0 [R], 2009.
[5] Virtual Socket Interface Alliance. VSI alliance virtual component Interface Standard Version 2.0(OCB 2.2.0)[S]. OnChip Bus Development Working Group, 2001.
[6] Zhang Qingli, Yu Mingyan, Wang Jinxiang. The design of AMBA AHB/VCI wrapper [C]. 5th International Conference on ASIC, 2003.