《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種基于SystemC的系統(tǒng)級(jí)軟硬件協(xié)同設(shè)計(jì)新模型
一種基于SystemC的系統(tǒng)級(jí)軟硬件協(xié)同設(shè)計(jì)新模型
王 泉1, 史維峰1, 田 澤2
1. 西北大學(xué) 信息科學(xué)與技術(shù)學(xué)院, 陜西 西安 710127;2. 中國航空計(jì)算技術(shù)研究所, 陜西
摘要: 分析了SystemC的建模特性,提出了一種基于SystemC的系統(tǒng)級(jí)設(shè)計(jì)新模型,即從系統(tǒng)功能描述開始逐步細(xì)化,建立模型間通信抽象的事務(wù)模型,對(duì)抽象通信具體化,最后形成通信模型。以此為基礎(chǔ)進(jìn)行RTL級(jí)綜合,完成軟硬件協(xié)同設(shè)計(jì)。本方法應(yīng)用于一款導(dǎo)航芯片的設(shè)計(jì),有效地縮短了研制周期,降低了開發(fā)成本,提高了系統(tǒng)設(shè)計(jì)質(zhì)量。
Abstract:
Key words :

摘   要: 分析了SystemC的建模特性,提出了一種基于SystemC的系統(tǒng)級(jí)設(shè)計(jì)新模型,即從系統(tǒng)功能描述開始逐步細(xì)化,建立模型間通信抽象的事務(wù)模型,對(duì)抽象通信具體化,最后形成通信模型。以此為基礎(chǔ)進(jìn)行RTL級(jí)綜合,完成軟硬件協(xié)同設(shè)計(jì)。本方法應(yīng)用于一款導(dǎo)航芯片的設(shè)計(jì),有效地縮短了研制周期,降低了開發(fā)成本,提高了系統(tǒng)設(shè)計(jì)質(zhì)量。
關(guān)鍵詞: 嵌入式系統(tǒng); 軟硬件協(xié)同設(shè)計(jì); SystemC語言

  隨著嵌入式技術(shù)的迅速發(fā)展和嵌入式系統(tǒng)在眾多領(lǐng)域中的廣泛應(yīng)用,特別是系統(tǒng)級(jí)芯片SoC 的誕生,嵌入式系統(tǒng)設(shè)計(jì)面臨許多新的問題。軟硬件協(xié)同設(shè)計(jì)是目前嵌入式系統(tǒng)設(shè)計(jì)的新方法,其方法依據(jù)系統(tǒng)目標(biāo)要求,通過綜合分析系統(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語言建模,可以方便地進(jìn)行需求分析、系統(tǒng)功能描述,但UML不能對(duì)系統(tǒng)硬件進(jìn)行描述,無法精確和嚴(yán)格地描述模型的行為;采用C/C++等描述語言時(shí),在設(shè)計(jì)細(xì)化階段,原始的C/C++描述必須手工轉(zhuǎn)換為VHDL或Verilog,容易產(chǎn)生不一致性,使系統(tǒng)綜合變得復(fù)雜。
  SystemC建模語言是在C++的基礎(chǔ)上增加硬件擴(kuò)展庫和仿真內(nèi)核[1],不僅有支持硬件操作的信號(hào)、時(shí)序和接口,在不同抽象層次上對(duì)設(shè)計(jì)進(jìn)行建模,而且還可以通過仿真內(nèi)核搭建仿真平臺(tái),對(duì)設(shè)計(jì)各階段進(jìn)行驗(yàn)證。SystemC已經(jīng)成為事實(shí)上的系統(tǒng)級(jí)設(shè)計(jì)語言的標(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)下,通過綜合分析系統(tǒng)軟硬件功能及現(xiàn)有資源,最大限度地挖掘系統(tǒng)軟硬件之間的并發(fā)性,協(xié)同設(shè)計(jì)軟硬件體系結(jié)構(gòu),以便系統(tǒng)能夠工作在最佳狀態(tài)。其核心問題是在設(shè)計(jì)過程中如何協(xié)調(diào)軟件系統(tǒng)和硬件系統(tǒng)[2]。協(xié)同設(shè)計(jì)技術(shù)強(qiáng)調(diào)軟件和硬件設(shè)計(jì)開發(fā)是一個(gè)并行和相互反饋的過程,也就是使軟件設(shè)計(jì)和硬件設(shè)計(jì)作為一個(gè)整體并行設(shè)計(jì),找到軟硬件的最佳結(jié)合點(diǎn),使它們能夠以最有效的方式相互作用、相互結(jié)合,從而獲得滿足綜合性能指標(biāo)的最佳解決方案[3]。這種相互作用體現(xiàn)在設(shè)計(jì)過程中的各個(gè)階段和各個(gè)層次,設(shè)計(jì)過程充分實(shí)現(xiàn)了軟硬件的協(xié)同性。在軟硬件功能劃分時(shí)就考慮了現(xiàn)有的軟硬件資源,在軟硬件功能設(shè)計(jì)和仿真評(píng)價(jià)過程中,軟件和硬件是互相支持的,這就使得軟硬件功能模塊能夠在設(shè)計(jì)開發(fā)的早期互相結(jié)合,從而及早發(fā)現(xiàn)和解決系統(tǒng)設(shè)計(jì)中的問題,避免了在設(shè)計(jì)開發(fā)后期反復(fù)修改所帶來的一系列問題,有利于充分挖掘系統(tǒng)潛能、縮小體積、降低成本、提高整體性能。
  軟硬件協(xié)同設(shè)計(jì)的基本思路如圖1所示。

  軟硬件協(xié)同設(shè)計(jì)過程可以分為系統(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種或多種描述語言對(duì)所要設(shè)計(jì)系統(tǒng)的功能和性能進(jìn)行全面描述,是建立系統(tǒng)軟硬件模型的過程。采用的方法包括有限態(tài)自動(dòng)機(jī)、統(tǒng)一化規(guī)格語言或其他基于圖形表示工具,其作用是對(duì)系統(tǒng)需求統(tǒng)一表示,方便功能劃分和綜合。
  (2)系統(tǒng)設(shè)計(jì):可以分為軟硬件功能劃分和系統(tǒng)映射2個(gè)階段。軟硬件功能劃分就是要確定軟/硬件模塊分別要實(shí)現(xiàn)的系統(tǒng)功能。硬件能提供較好的性能,軟件則易于開發(fā)和修改,成本也較低。由于硬件模塊的可配置性、可編程性以及某些軟件功能的硬件化、固件化,導(dǎo)致軟硬件的界限已經(jīng)不是很明顯。此外,在進(jìn)行軟硬件功能劃分時(shí),還要考慮市場(chǎng)可以提供的資源狀況、現(xiàn)有軟硬件資源、系統(tǒng)成本、開發(fā)時(shí)間等諸多因素。因此,軟硬件功能劃分是一個(gè)復(fù)雜的過程。系統(tǒng)映射是根據(jù)系統(tǒng)描述和軟硬件任務(wù)劃分的結(jié)果,分別選擇系統(tǒng)軟硬件模塊以及其接口的具體實(shí)現(xiàn)方法,并將其集成,最終確定系統(tǒng)的體系結(jié)構(gòu)。在整個(gè)細(xì)化過程中,應(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ì)正確性的過程,對(duì)設(shè)計(jì)結(jié)果的正確性進(jìn)行評(píng)估,以達(dá)到避免在系統(tǒng)實(shí)現(xiàn)過程中發(fā)現(xiàn)問題時(shí)再進(jìn)行反復(fù)修改的目的。
  (4)綜合實(shí)現(xiàn):其過程是軟件、硬件系統(tǒng)的具體設(shè)計(jì)過程。設(shè)計(jì)結(jié)果經(jīng)過仿真驗(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í)建模語言,提供了通道、接口和事件[6-7]的概念,用以描述通信和同步。同時(shí)SystemC也提供了動(dòng)態(tài)事件敏感方法,滿足對(duì)消息傳遞響應(yīng)等系統(tǒng)級(jí)行為的建模要求。接口和通道的概念將通信和計(jì)算分開,提高了設(shè)計(jì)的重用性。
  通道用來表示設(shè)計(jì)中的通信機(jī)制。在系統(tǒng)級(jí)設(shè)計(jì)中,模塊互連通常采用較復(fù)雜的總線機(jī)制,系統(tǒng)初始設(shè)計(jì)時(shí),可以僅仿真總線功能而不描述具體實(shí)現(xiàn)細(xì)節(jié),此時(shí)可以用通道方便地描述通信機(jī)制。
  接口定義了通道的訪問方法,如read( )、write( ),這些方法的實(shí)現(xiàn)由通道來完成。模塊及其進(jì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)程間通過通道進(jìn)行通信。

  各模型介紹如下:
  (1)功能模型:是系統(tǒng)純功能的抽象模型,是設(shè)計(jì)流程的入口,主要目的是為了描述、驗(yàn)證系統(tǒng)功能。在功能模型中,sc_module的層次性只是反映了系統(tǒng)的功能,不涉及時(shí)間概念。功能模型由SystemC的Event和Wait來進(jìn)行同步。
  (2)事務(wù)模型:事務(wù)建模的主要任務(wù)是利用SystemC進(jìn)行功能模型相應(yīng)的通信抽象,實(shí)現(xiàn)通信機(jī)制。事務(wù)模型是SystemC系統(tǒng)級(jí)模型中的重要概念。一個(gè)系統(tǒng)的事務(wù)模型一般具有如下基本特征:
 ?、俟δ苣K通過抽象通信通道進(jìn)行通信。
 ?、谒械耐ㄐ哦际鞘聞?wù)(數(shù)據(jù)交換)。
  ③通過功能調(diào)用而不是對(duì)信號(hào)賦值來執(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ì)化過程。從事務(wù)模型到通信模型的細(xì)化過程可分為如下步驟:
 ?、偻ǖ兰?xì)化(Channel Refinement):抽象的通信通道被實(shí)際的通信協(xié)議所代替,通過協(xié)議通道的接口,協(xié)議通道對(duì)外提供最基本的由協(xié)議所支持事務(wù)的方法。
 ?、谶m配器插入(Adapter Insert):因?yàn)橥ǖ啦迦胪ㄐ艆f(xié)議后接口已經(jīng)改變了,必須在模塊和協(xié)議通道間插入適配器來完成接口之間的轉(zhuǎn)換。適配器相當(dāng)于協(xié)議層上的應(yīng)用層,利用協(xié)議通道提供的協(xié)議接口來實(shí)現(xiàn)模塊間的數(shù)據(jù)通信。
 ?、蹍f(xié)議內(nèi)連(Protocol Inline):通信最終被內(nèi)連到功能模塊中。用來包含應(yīng)用層和協(xié)議層方法的適配器通道被內(nèi)連進(jìn)模塊內(nèi)部,使抽象端口消失,模塊通過相應(yīng)端口連接到總線線路上。
  在設(shè)計(jì)一種導(dǎo)航芯片的過程中,采用軟硬件協(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)線,用來連接各模塊的輸入輸出信號(hào)線并用來跟蹤各模塊輸入輸出端口信號(hào)變化。sc_clock定義并生成系統(tǒng)的時(shí)鐘信號(hào),用來同步仿真時(shí)每一個(gè)模塊內(nèi)觸發(fā)的事件,sc_trace用來跟蹤信號(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++語言描述,同時(shí)為硬件部分建立SystemC行為級(jí)模型,具體過程:(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ì)過程中,Testbench始終未改變,這樣可以保證系統(tǒng)在被不斷完善的過程中不會(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)開發(fā)方法——“先硬件后軟件”的弊端,使得嵌入式系統(tǒng)設(shè)計(jì)質(zhì)量得以提高,能夠提前進(jìn)行系統(tǒng)性能評(píng)估,驗(yàn)證系統(tǒng)設(shè)計(jì)方案,大大縮短了系統(tǒng)的研制周期。
  SystemC語言是一種系統(tǒng)級(jí)描述語言,它的產(chǎn)生促進(jìn)了軟硬件協(xié)同設(shè)計(jì)技術(shù)的發(fā)展。本文描述了SystemC語言在系統(tǒng)開發(fā)各個(gè)階段的建模特性,提出系統(tǒng)級(jí)設(shè)計(jì)新模型。該模型采用逐步細(xì)化流程描述系統(tǒng)功能,為系統(tǒng)軟硬件協(xié)同設(shè)計(jì)提供了系統(tǒng)級(jí)模型,相對(duì)于傳統(tǒng)設(shè)計(jì)方案更加靈活、有效,縮短了開發(fā)周期,降低了開發(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.
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。