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