基于SystemC的系統(tǒng)級(jí)芯片設(shè)計(jì)方法研究
隨著集成電路制造技術(shù)的迅速發(fā)展,SOC設(shè)計(jì)已經(jīng)成為當(dāng)今集成電路設(shè)計(jì)的發(fā)展方向。SO C設(shè)計(jì)的復(fù)雜性對(duì)集成電路設(shè)計(jì)的各個(gè)層次,特別是對(duì)系統(tǒng)級(jí)芯片設(shè)計(jì)層次,帶來了新挑戰(zhàn),原有的HDL難以滿足新的設(shè)計(jì)要求。
本文引用地址:http://www.ex-cimer.com/article/83115.htm硬件設(shè)計(jì)領(lǐng)域有2種主要的設(shè)計(jì)語言:VHDL和Verilog HDL。而兩種語言的標(biāo)準(zhǔn)不統(tǒng)一,導(dǎo)致軟硬件設(shè)計(jì)工程師之間工作交流出現(xiàn)障礙,工作效率較低。因此,集成電路設(shè)計(jì)界一直在尋找一種能同時(shí)實(shí)現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級(jí)設(shè)計(jì)語言。Synopsys公司與Coware公司針對(duì)各方對(duì)系統(tǒng)級(jí)設(shè)計(jì)語言的需求,合作開發(fā)了SystemC,他可以較好地實(shí)現(xiàn)軟硬件的協(xié)同設(shè)計(jì),是系統(tǒng)級(jí)芯片設(shè)計(jì)語言的發(fā)展趨勢[1]。
1 傳統(tǒng)的系統(tǒng)級(jí)設(shè)計(jì)方法[1]
在傳統(tǒng)設(shè)計(jì)方法中,設(shè)計(jì)的系統(tǒng)級(jí)往往使用UML,SDL,C,C++等進(jìn)行描述以實(shí)現(xiàn)各功能模塊的算法,而在寄存器傳輸級(jí)使用硬件描述語言進(jìn)行描述。最廣泛使用的2種硬件描述語言是VHDL和Verilog HDL,傳統(tǒng)的系統(tǒng)設(shè)計(jì)方法流程如圖1所示。從圖中不難看出,傳統(tǒng)的設(shè)計(jì)方法會(huì)出現(xiàn)如下弊端:
首先,設(shè)計(jì)人員需要使用C/C++語言來建立系統(tǒng)級(jí)模型,并驗(yàn)證模型的正確性,在設(shè)計(jì)細(xì)化階段,原始的C和C++描述必須手工轉(zhuǎn)換為使用VHDL或Verilog HDL。在這個(gè)轉(zhuǎn)換過程中會(huì)花費(fèi)大量的時(shí)間,并產(chǎn)生一些錯(cuò)誤。
其次,當(dāng)使用C語言描述的模塊轉(zhuǎn)換成HDL描述的模塊之后,后者將會(huì)成為今后設(shè)計(jì)的焦點(diǎn),而設(shè)計(jì)人員花費(fèi)大量時(shí)間建立起來的C模型將再?zèng)]有什么用處。
再次,需要使用多個(gè)測試平臺(tái)。因?yàn)樵谙到y(tǒng)級(jí)建立起來的針對(duì)C語言描述的模塊測試平臺(tái)無法直接轉(zhuǎn)換成針對(duì)HDL語言描述的模塊所需要的測試平臺(tái)。
2 使用SystemC的必要性
無論采用什么樣的設(shè)計(jì)方法學(xué),人們都需要對(duì)SOC時(shí)代的復(fù)雜電子系統(tǒng)進(jìn)行描述,以選擇合 適的系統(tǒng)架構(gòu),進(jìn)行軟硬件劃分,算法仿真等等。描述的級(jí)別越低,細(xì)節(jié)問題就越突出,對(duì)實(shí)際系統(tǒng)的模仿就越精確,完成建模消耗的時(shí)間、仿真和驗(yàn)證時(shí)間就越長。相反,描述的抽象級(jí)別越高,完成建模需要的時(shí)間就越短,但對(duì)目標(biāo)系統(tǒng)的描述也就越不精確。作為設(shè)計(jì)人員必須在速度和精確性之間做出選擇。
人們對(duì)系統(tǒng)級(jí)描述語言的要求是:高仿真速度以及建模效率、時(shí)序和行為可以分開建模、支持基于接口的設(shè)計(jì)、支持軟硬件混合建模、支持從系統(tǒng)級(jí)到門級(jí)的無縫過渡、支持系統(tǒng)級(jí)調(diào)試和系統(tǒng)性能分析等。人們迫切需要一種語言單一地完成全部設(shè)計(jì)。這種語言必須能夠用于描述各種不同的抽象級(jí)別(如系統(tǒng)級(jí)、寄存器傳輸級(jí)等),能夠勝任軟硬件的協(xié)同設(shè)計(jì)和驗(yàn)證,并且仿真速度要快。這就是所謂的系統(tǒng)級(jí)描述語言SLDL,而傳統(tǒng)的硬件描述語言如VHDL和Verilog HDL都不能滿足這些要求。
SystemC就是目前這方面研究的最新、最好的成果,他擴(kuò)展傳統(tǒng)的軟件語言C和C++并使他們支持硬件描述,所以可以很好地實(shí)現(xiàn)軟硬件的協(xié)同設(shè)計(jì),是系統(tǒng)級(jí)芯片設(shè)計(jì)語言的發(fā)展趨勢。
3 SystemC簡介
1999年9月,微電子業(yè)內(nèi)的一些一流的EDA公司、IP提供商、半導(dǎo)體制造商及系統(tǒng)和內(nèi)嵌式軟件設(shè)計(jì)公司聯(lián)合創(chuàng)建了開放SystemC創(chuàng)始會(huì)組織(Open SystemC Intitiative,OSCI),并推出了基于C++的系統(tǒng)級(jí)設(shè)計(jì)語言SystemC。OSCI是一個(gè)非盈利性組織,他負(fù)責(zé)維護(hù)和發(fā)展SystemC。SystemC是完全免費(fèi)的,這使得EDA供應(yīng)商能夠充分自由地了解SystemC庫的源代碼以優(yōu)化他們的各種解釋工具;包括Synopsys,Cadence,F(xiàn)rontier Design,ARM,Eri ssion,Lucent,Sony,TI等核心成員。目前已經(jīng)有50多個(gè)著名的微電子公司支持該標(biāo)準(zhǔn)[2]。
SystemC本質(zhì)上是在C++的基礎(chǔ)上添加的硬件擴(kuò)展庫和仿真核,這使得SystemC可以建模不同抽象級(jí)別的(包括軟件和硬件的)復(fù)雜電子系統(tǒng)。他既可以描述純功能模型和系統(tǒng)體系結(jié)構(gòu),也可以描述軟硬件的具體實(shí)現(xiàn)。SystemC源代碼可以使用任何標(biāo)準(zhǔn)C++編譯環(huán)境進(jìn)行編譯,生成可執(zhí)行文件;可以使用綜合工具(如Synopsys SystemC Compiler)將SystemC的寄存器傳輸級(jí)描述綜合為Verilog HDL或者VHDL的代碼用于FPGA設(shè)計(jì),也可以綜合為EDIF網(wǎng)表用于A SIC設(shè)計(jì)[3]。
SystemC具有所有硬件描述語言所共有的基本特征,包括模塊、進(jìn)程、端口和信號(hào)等。不同的是,在SystemC中時(shí)鐘被單獨(dú)定義為一個(gè)特殊的信號(hào),這大大簡化了時(shí)鐘信號(hào)的定義,SystemC還支持具有任意相位關(guān)系的多個(gè)時(shí)鐘。在SystemC中使用了sc_set_tim e_resoluti on()和sc_set_default_time_unit()來定義時(shí)間分辨率和時(shí)間單位,這與Ve rilog HDL的timescale語法在功能上是等效的。
pic相關(guān)文章:pic是什么
c語言相關(guān)文章:c語言教程
c++相關(guān)文章:c++教程
評(píng)論