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