摘 要: 分析了SystemC的建模特性,,提出了一種基于SystemC的系統(tǒng)級(jí)設(shè)計(jì)新模型,即從系統(tǒng)功能描述開(kāi)始逐步細(xì)化,,建立模型間通信抽象的事務(wù)模型,,對(duì)抽象通信具體化,最后形成通信模型,。以此為基礎(chǔ)進(jìn)行RTL級(jí)綜合,,完成軟硬件協(xié)同設(shè)計(jì)。本方法應(yīng)用于一款導(dǎo)航芯片的設(shè)計(jì),,有效地縮短了研制周期,降低了開(kāi)發(fā)成本,提高了系統(tǒng)設(shè)計(jì)質(zhì)量,。
關(guān)鍵詞: 嵌入式系統(tǒng); 軟硬件協(xié)同設(shè)計(jì),; SystemC語(yǔ)言
隨著嵌入式技術(shù)的迅速發(fā)展和嵌入式系統(tǒng)在眾多領(lǐng)域中的廣泛應(yīng)用,,特別是系統(tǒng)級(jí)芯片SoC 的誕生,嵌入式系統(tǒng)設(shè)計(jì)面臨許多新的問(wèn)題,。軟硬件協(xié)同設(shè)計(jì)是目前嵌入式系統(tǒng)設(shè)計(jì)的新方法,,其方法依據(jù)系統(tǒng)目標(biāo)要求,通過(guò)綜合分析系統(tǒng)軟硬件功能及現(xiàn)有資源,,最大限度地挖掘系統(tǒng)軟硬件之間的并發(fā)性,,協(xié)同設(shè)計(jì)軟硬件體系結(jié)構(gòu),使得系統(tǒng)能工作在最佳狀態(tài),。因此,,建立系統(tǒng)級(jí)模型對(duì)系統(tǒng)功能進(jìn)行抽象描述是實(shí)現(xiàn)軟硬件協(xié)同設(shè)計(jì)的關(guān)鍵。目前存在多種建模方法,,但是都有其局限性,,如采用UML語(yǔ)言建模,可以方便地進(jìn)行需求分析,、系統(tǒng)功能描述,,但UML不能對(duì)系統(tǒng)硬件進(jìn)行描述,無(wú)法精確和嚴(yán)格地描述模型的行為,;采用C/C++等描述語(yǔ)言時(shí),,在設(shè)計(jì)細(xì)化階段,原始的C/C++描述必須手工轉(zhuǎn)換為VHDL或Verilog,,容易產(chǎn)生不一致性,,使系統(tǒng)綜合變得復(fù)雜,。
SystemC建模語(yǔ)言是在C++的基礎(chǔ)上增加硬件擴(kuò)展庫(kù)和仿真內(nèi)核[1],不僅有支持硬件操作的信號(hào),、時(shí)序和接口,,在不同抽象層次上對(duì)設(shè)計(jì)進(jìn)行建模,而且還可以通過(guò)仿真內(nèi)核搭建仿真平臺(tái),對(duì)設(shè)計(jì)各階段進(jìn)行驗(yàn)證,。SystemC已經(jīng)成為事實(shí)上的系統(tǒng)級(jí)設(shè)計(jì)語(yǔ)言的標(biāo)準(zhǔn),。本文將討論SystemC的建模特性,并且提出一種基于SystemC的系統(tǒng)級(jí)軟硬件協(xié)同設(shè)計(jì)模型,。
1 軟硬件協(xié)同設(shè)計(jì)方法
軟硬件協(xié)同設(shè)計(jì)是將軟件設(shè)計(jì)和硬件設(shè)計(jì)作為一個(gè)有機(jī)的整體進(jìn)行并行設(shè)計(jì),是在系統(tǒng)目標(biāo)要求的指導(dǎo)下,,通過(guò)綜合分析系統(tǒng)軟硬件功能及現(xiàn)有資源,,最大限度地挖掘系統(tǒng)軟硬件之間的并發(fā)性,協(xié)同設(shè)計(jì)軟硬件體系結(jié)構(gòu),,以便系統(tǒng)能夠工作在最佳狀態(tài)。其核心問(wèn)題是在設(shè)計(jì)過(guò)程中如何協(xié)調(diào)軟件系統(tǒng)和硬件系統(tǒng)[2]。協(xié)同設(shè)計(jì)技術(shù)強(qiáng)調(diào)軟件和硬件設(shè)計(jì)開(kāi)發(fā)是一個(gè)并行和相互反饋的過(guò)程,,也就是使軟件設(shè)計(jì)和硬件設(shè)計(jì)作為一個(gè)整體并行設(shè)計(jì),,找到軟硬件的最佳結(jié)合點(diǎn),使它們能夠以最有效的方式相互作用,、相互結(jié)合,,從而獲得滿足綜合性能指標(biāo)的最佳解決方案[3]。這種相互作用體現(xiàn)在設(shè)計(jì)過(guò)程中的各個(gè)階段和各個(gè)層次,,設(shè)計(jì)過(guò)程充分實(shí)現(xiàn)了軟硬件的協(xié)同性,。在軟硬件功能劃分時(shí)就考慮了現(xiàn)有的軟硬件資源,在軟硬件功能設(shè)計(jì)和仿真評(píng)價(jià)過(guò)程中,,軟件和硬件是互相支持的,,這就使得軟硬件功能模塊能夠在設(shè)計(jì)開(kāi)發(fā)的早期互相結(jié)合,從而及早發(fā)現(xiàn)和解決系統(tǒng)設(shè)計(jì)中的問(wèn)題,,避免了在設(shè)計(jì)開(kāi)發(fā)后期反復(fù)修改所帶來(lái)的一系列問(wèn)題,,有利于充分挖掘系統(tǒng)潛能、縮小體積,、降低成本,、提高整體性能。
軟硬件協(xié)同設(shè)計(jì)的基本思路如圖1所示,。
軟硬件協(xié)同設(shè)計(jì)過(guò)程可以分為系統(tǒng)描述,、系統(tǒng)設(shè)計(jì)、仿真驗(yàn)證和綜合實(shí)現(xiàn)4個(gè)階段[4-5],。首先應(yīng)用獨(dú)立于任何硬件和軟件的功能性規(guī)格方法對(duì)系統(tǒng)進(jìn)行整體描述,;然后對(duì)系統(tǒng)進(jìn)行軟硬件功能劃分,,將系統(tǒng)行為劃分為簡(jiǎn)單的行為模塊,并確定每個(gè)模塊的軟硬件實(shí)現(xiàn)方式;最后從抽象描述級(jí)進(jìn)行細(xì)化,,直至每個(gè)模塊最終由基本虛元件組成,,形成系統(tǒng)原型,接著在系統(tǒng)原型層與廠商提供的虛元件相匯合,,完成設(shè)計(jì)的實(shí)現(xiàn)[2],。各個(gè)階段需要完成的工作如下[3,5]:
(1)系統(tǒng)描述:是用1種或多種描述語(yǔ)言對(duì)所要設(shè)計(jì)系統(tǒng)的功能和性能進(jìn)行全面描述,,是建立系統(tǒng)軟硬件模型的過(guò)程,。采用的方法包括有限態(tài)自動(dòng)機(jī)、統(tǒng)一化規(guī)格語(yǔ)言或其他基于圖形表示工具,,其作用是對(duì)系統(tǒng)需求統(tǒng)一表示,,方便功能劃分和綜合。
(2)系統(tǒng)設(shè)計(jì):可以分為軟硬件功能劃分和系統(tǒng)映射2個(gè)階段,。軟硬件功能劃分就是要確定軟/硬件模塊分別要實(shí)現(xiàn)的系統(tǒng)功能,。硬件能提供較好的性能,軟件則易于開(kāi)發(fā)和修改,,成本也較低,。由于硬件模塊的可配置性、可編程性以及某些軟件功能的硬件化,、固件化,,導(dǎo)致軟硬件的界限已經(jīng)不是很明顯。此外,在進(jìn)行軟硬件功能劃分時(shí),,還要考慮市場(chǎng)可以提供的資源狀況,、現(xiàn)有軟硬件資源、系統(tǒng)成本,、開(kāi)發(fā)時(shí)間等諸多因素,。因此,軟硬件功能劃分是一個(gè)復(fù)雜的過(guò)程,。系統(tǒng)映射是根據(jù)系統(tǒng)描述和軟硬件任務(wù)劃分的結(jié)果,,分別選擇系統(tǒng)軟硬件模塊以及其接口的具體實(shí)現(xiàn)方法,并將其集成,,最終確定系統(tǒng)的體系結(jié)構(gòu),。在整個(gè)細(xì)化過(guò)程中,應(yīng)多次進(jìn)行軟硬件協(xié)同驗(yàn)證和協(xié)同仿真,,及時(shí)發(fā)現(xiàn)細(xì)化中的錯(cuò)誤,。在完成軟硬件劃分后,要對(duì)系統(tǒng)的性能,、靈活性等參數(shù)進(jìn)行預(yù)測(cè),,以評(píng)估軟硬件劃分,,甚至功能劃分的合理性。如果劃分不合理,,就需要重新進(jìn)行軟硬件劃分,。劃分的目的主要是滿足系統(tǒng)速度、延遲,、體積,、成本等方面的要求,使整個(gè)系統(tǒng)獲得最好的功能和性能,。劃分策略既可以采用人為劃分,,也可以使用EDA工具自動(dòng)劃分。
(3)仿真驗(yàn)證:是檢驗(yàn)系統(tǒng)設(shè)計(jì)正確性的過(guò)程,,對(duì)設(shè)計(jì)結(jié)果的正確性進(jìn)行評(píng)估,,以達(dá)到避免在系統(tǒng)實(shí)現(xiàn)過(guò)程中發(fā)現(xiàn)問(wèn)題時(shí)再進(jìn)行反復(fù)修改的目的。
(4)綜合實(shí)現(xiàn):其過(guò)程是軟件,、硬件系統(tǒng)的具體設(shè)計(jì)過(guò)程,。設(shè)計(jì)結(jié)果經(jīng)過(guò)仿真驗(yàn)證后,,可按系統(tǒng)設(shè)計(jì)的要求進(jìn)行系統(tǒng)研制生產(chǎn),,即按照前述工作的要求設(shè)計(jì)硬件軟件,并使其能夠協(xié)調(diào)一致地工作,,而后再進(jìn)行各種試驗(yàn),。
2 基于SystemC系統(tǒng)級(jí)新模型
SystemC作為系統(tǒng)級(jí)建模語(yǔ)言,提供了通道,、接口和事件[6-7]的概念,,用以描述通信和同步。同時(shí)SystemC也提供了動(dòng)態(tài)事件敏感方法,,滿足對(duì)消息傳遞響應(yīng)等系統(tǒng)級(jí)行為的建模要求,。接口和通道的概念將通信和計(jì)算分開(kāi),提高了設(shè)計(jì)的重用性,。
通道用來(lái)表示設(shè)計(jì)中的通信機(jī)制,。在系統(tǒng)級(jí)設(shè)計(jì)中,模塊互連通常采用較復(fù)雜的總線機(jī)制,,系統(tǒng)初始設(shè)計(jì)時(shí),,可以僅仿真總線功能而不描述具體實(shí)現(xiàn)細(xì)節(jié),此時(shí)可以用通道方便地描述通信機(jī)制,。
接口定義了通道的訪問(wèn)方法,,如read( )、write( ),,這些方法的實(shí)現(xiàn)由通道來(lái)完成,。模塊及其進(jìn)程需要通過(guò)端口來(lái)訪問(wèn)一個(gè)通道的接口,,不同模塊的信號(hào)端口必須與通道接口綁定。
事件是一種基本的同步對(duì)象,,主要用于模塊內(nèi)進(jìn)程間的同步,。
系統(tǒng)級(jí)模型主要用于描述系統(tǒng)要實(shí)現(xiàn)的功能,系統(tǒng)級(jí)模型設(shè)計(jì)流程如圖2所示。首先對(duì)系統(tǒng)進(jìn)行純功能性結(jié)構(gòu)描述,,然后建立描述抽象通信通道的事務(wù)模型,,最后細(xì)化抽象通信通道形成通信模型。整個(gè)系統(tǒng)由一系列的模塊組成, 每個(gè)模塊包括許多并發(fā)的進(jìn)程, 進(jìn)程定義了模塊的功能, 進(jìn)程間通過(guò)通道進(jìn)行通信,。
各模型介紹如下:
(1)功能模型:是系統(tǒng)純功能的抽象模型,,是設(shè)計(jì)流程的入口,主要目的是為了描述,、驗(yàn)證系統(tǒng)功能,。在功能模型中,sc_module的層次性只是反映了系統(tǒng)的功能,不涉及時(shí)間概念,。功能模型由SystemC的Event和Wait來(lái)進(jìn)行同步,。
(2)事務(wù)模型:事務(wù)建模的主要任務(wù)是利用SystemC進(jìn)行功能模型相應(yīng)的通信抽象,實(shí)現(xiàn)通信機(jī)制,。事務(wù)模型是SystemC系統(tǒng)級(jí)模型中的重要概念,。一個(gè)系統(tǒng)的事務(wù)模型一般具有如下基本特征:
①功能模塊通過(guò)抽象通信通道進(jìn)行通信,。
?、谒械耐ㄐ哦际鞘聞?wù)(數(shù)據(jù)交換)。
?、弁ㄟ^(guò)功能調(diào)用而不是對(duì)信號(hào)賦值來(lái)執(zhí)行事務(wù),。
SystemC中,通道,、接口和事件可方便地進(jìn)行系統(tǒng)事務(wù)級(jí)的建模,。事務(wù)級(jí)模型是有時(shí)間的模型(Timed Model),對(duì)于各個(gè)功能模塊可以賦予運(yùn)行時(shí)間,以便進(jìn)行系統(tǒng)的仿真反饋,、驗(yàn)證和進(jìn)一步的綜合,。
(3)通信模型:通信模型中,抽象的通信事務(wù)被實(shí)際的通信通道所代替,。通信模型定義了系統(tǒng)的結(jié)構(gòu)框架,,包括各功能模塊及其之間的連接。系統(tǒng)計(jì)算被映射到功能模塊上,,系統(tǒng)通信被映射到各通信通道上,。SystemC擁有接口和通道等,支持基于接口的設(shè)計(jì)方法,可以方便地進(jìn)行通信細(xì)化過(guò)程,。從事務(wù)模型到通信模型的細(xì)化過(guò)程可分為如下步驟:
?、偻ǖ兰?xì)化(Channel Refinement):抽象的通信通道被實(shí)際的通信協(xié)議所代替,通過(guò)協(xié)議通道的接口,,協(xié)議通道對(duì)外提供最基本的由協(xié)議所支持事務(wù)的方法,。
②適配器插入(Adapter Insert):因?yàn)橥ǖ啦迦胪ㄐ艆f(xié)議后接口已經(jīng)改變了,,必須在模塊和協(xié)議通道間插入適配器來(lái)完成接口之間的轉(zhuǎn)換,。適配器相當(dāng)于協(xié)議層上的應(yīng)用層,利用協(xié)議通道提供的協(xié)議接口來(lái)實(shí)現(xiàn)模塊間的數(shù)據(jù)通信,。
?、蹍f(xié)議內(nèi)連(Protocol Inline):通信最終被內(nèi)連到功能模塊中。用來(lái)包含應(yīng)用層和協(xié)議層方法的適配器通道被內(nèi)連進(jìn)模塊內(nèi)部,,使抽象端口消失,,模塊通過(guò)相應(yīng)端口連接到總線線路上。
在設(shè)計(jì)一種導(dǎo)航芯片的過(guò)程中,,采用軟硬件協(xié)同設(shè)計(jì)方法進(jìn)行設(shè)計(jì),,有效地降低了設(shè)計(jì)成本,提高了設(shè)計(jì)成功率,。該芯片主要功能是接收衛(wèi)星信號(hào)后完成數(shù)據(jù)提取,,將有用的數(shù)據(jù)信息傳至處理器,由處理器進(jìn)行導(dǎo)航處理,。
設(shè)計(jì)采用SystemC為整個(gè)系統(tǒng)建模,其模型如圖3所示,。系統(tǒng)主要分為4個(gè)部分:數(shù)字變頻器,、維特比譯碼器,、數(shù)據(jù)提取和數(shù)據(jù)處理。衛(wèi)星信號(hào)進(jìn)入導(dǎo)航芯片后首先完成數(shù)字變頻,,成為可處理的數(shù)字信號(hào),,然后對(duì)信號(hào)進(jìn)行維特比譯碼,根據(jù)處理器指定要求提取相關(guān)數(shù)據(jù)并完成數(shù)據(jù)處理,,形成有效的導(dǎo)航數(shù)據(jù),。
下面給出系統(tǒng)模型的部分SystemC代碼。
sc_main函數(shù)作為主函數(shù)在頂層例化整個(gè)系統(tǒng)的每一個(gè)硬件模塊并綁定,。sc_signal定義頂層的各種信號(hào)線,,用來(lái)連接各模塊的輸入輸出信號(hào)線并用來(lái)跟蹤各模塊輸入輸出端口信號(hào)變化。sc_clock定義并生成系統(tǒng)的時(shí)鐘信號(hào),,用來(lái)同步仿真時(shí)每一個(gè)模塊內(nèi)觸發(fā)的事件,,sc_trace用來(lái)跟蹤信號(hào)的變化,并以標(biāo)準(zhǔn)的格式輸出到跟蹤文件。
在相應(yīng)的SystemC文件中可以使用sc_module定義各個(gè)模塊。以數(shù)字變頻器模塊為例,,下面是該模塊的部分SystemC代碼,。
sc_module用于聲明模塊,然后定義端口數(shù)據(jù)類型,。sc_method方法使得對(duì)每一個(gè)敏感信號(hào)的觸發(fā)都進(jìn)行處理,,其作用相當(dāng)于Verilog中的always方法,sensitive_pos聲明敏感信號(hào)觸發(fā)方式,。
系統(tǒng)設(shè)計(jì)時(shí)根據(jù)系統(tǒng)級(jí)模型描述功能,,同時(shí)為模型建立Testbench(仿真測(cè)試文件)驗(yàn)證系統(tǒng)方案是否可行,然后使用VC ++6.0和Modelsim進(jìn)行功能仿真,,接著按照系統(tǒng)工作原理進(jìn)行軟硬件劃分,。軟件實(shí)現(xiàn)部分采用C++語(yǔ)言描述,同時(shí)為硬件部分建立SystemC行為級(jí)模型,,具體過(guò)程:(1)在系統(tǒng)級(jí)模型基礎(chǔ)上對(duì)計(jì)算單元進(jìn)行詳細(xì)描述和通信組件細(xì)化,;(2)在SystemC可綜合子集的范圍內(nèi)對(duì)代碼進(jìn)行約束,形成RTL級(jí)模型,;(3)將RTL級(jí)電路進(jìn)行綜合,,生成Verilog文件,將此文件導(dǎo)入ISE中,,對(duì)代碼進(jìn)行約束,,包括時(shí)間約束、引腳約束,、時(shí)鐘頻率約束等,;(4)進(jìn)行邏輯綜合、優(yōu)化和布局布線,,得到二進(jìn)制配置文件(bit),; (5)將配置文件加載到測(cè)試板的FPGA(Xilinx公司Virtex4系列FPGA XC4VLX40-10FFG668C)中,驗(yàn)證是否可以實(shí)現(xiàn)導(dǎo)航芯片的功能,。如果性能不滿足要求可以重新建模,,進(jìn)行軟硬件劃分調(diào)整,直至滿足系統(tǒng)要求,。在整個(gè)設(shè)計(jì)過(guò)程中,,Testbench始終未改變,這樣可以保證系統(tǒng)在被不斷完善的過(guò)程中不會(huì)引入新的錯(cuò)誤,,使系統(tǒng)始終符合設(shè)計(jì)要求,。經(jīng)測(cè)試,采用基于SystemC的軟硬件協(xié)同設(shè)計(jì)模型進(jìn)行導(dǎo)航芯片設(shè)計(jì)比傳統(tǒng)設(shè)計(jì)方案節(jié)省了30%的時(shí)間,。
軟硬件協(xié)同設(shè)計(jì)方法是一種新的嵌入式系統(tǒng)設(shè)計(jì)方法,,它消除了傳統(tǒng)的嵌入式系統(tǒng)開(kāi)發(fā)方法——“先硬件后軟件”的弊端,,使得嵌入式系統(tǒng)設(shè)計(jì)質(zhì)量得以提高,能夠提前進(jìn)行系統(tǒng)性能評(píng)估,,驗(yàn)證系統(tǒng)設(shè)計(jì)方案,,大大縮短了系統(tǒng)的研制周期。
SystemC語(yǔ)言是一種系統(tǒng)級(jí)描述語(yǔ)言,,它的產(chǎn)生促進(jìn)了軟硬件協(xié)同設(shè)計(jì)技術(shù)的發(fā)展,。本文描述了SystemC語(yǔ)言在系統(tǒng)開(kāi)發(fā)各個(gè)階段的建模特性,提出系統(tǒng)級(jí)設(shè)計(jì)新模型,。該模型采用逐步細(xì)化流程描述系統(tǒng)功能,,為系統(tǒng)軟硬件協(xié)同設(shè)計(jì)提供了系統(tǒng)級(jí)模型,相對(duì)于傳統(tǒng)設(shè)計(jì)方案更加靈活,、有效,,縮短了開(kāi)發(fā)周期,降低了開(kāi)發(fā)成本,,提高了系統(tǒng)設(shè)計(jì)質(zhì)量,。
參考文獻(xiàn)
[1] 張志杰. 林濤.基于SystemC的軟硬件協(xié)同驗(yàn)證[J].今日電子,20079(2):49-52.
[2] 熊光澤,,詹瑾瑜.嵌入式系統(tǒng)軟/硬件協(xié)同設(shè)計(jì)技術(shù)綜述 [J].計(jì)算機(jī)應(yīng)用,,2006,26(4):757-760.
[3] 徐思剛,,桑楠.基于SystemC的軟硬件協(xié)同設(shè)計(jì)[J].湖北民族學(xué)院學(xué)報(bào)(自然科學(xué)版),,2004,22(1):65-68.
[4] 潘新祥,,胡習(xí)霜,,韓立宏.軟硬件協(xié)同設(shè)計(jì)分析[J].指揮控制與仿真,2008,,30(3):117-119.
[5] 王少平,,王京謙,錢瑋.嵌入式系統(tǒng)的軟硬件協(xié)同設(shè)計(jì)[J].嵌入式與單片機(jī),,2005,,193(2):83-84.
[6] 劉強(qiáng).基于SystemC的系統(tǒng)級(jí)芯片設(shè)計(jì)方法研究[EB/OL]. http://www.eepw.com.cn/article/83115.htm. 2008-05-27.
[7] SystemC介紹[EB/0L].http://www.chinaitpower.com/2005September/201800.html. 2005-09-13.