掃描二維碼
隨時(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ì)要求。
硬件設(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ā)展趨勢(shì)[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è)測(cè)試平臺(tái)。因?yàn)樵谙到y(tǒng)級(jí)建立起來的針對(duì)C語言描述的模塊測(cè)試平臺(tái)無法直接轉(zhuǎn)換成針對(duì)HDL語言描述的模塊所需要的測(cè)試平臺(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í)間就越長(zhǎng)。相反,描述的抽象級(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ā)展趨勢(shì)。
3SystemC簡(jiǎn)介
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),這大大簡(jiǎn)化了時(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語法在功能上是等效的。
為了支持寄存器傳輸級(jí)的并行描述,SystemC還采用了與傳統(tǒng)硬件描述語言基本相同的調(diào)度模型基于Δ(delta)延遲。一個(gè)Δ周期包括求值和更新2個(gè)階段,在一個(gè)時(shí)間點(diǎn)上,這樣的Δ周期會(huì)出現(xiàn)直到再求值前后的結(jié)果不再發(fā)生變化。而在宏觀上,時(shí)間并沒有前進(jìn)。SystemC 2.01調(diào)度模型中,在初始化階段(相當(dāng)于時(shí)間0點(diǎn)),所有進(jìn)程包括方法進(jìn)程和線程都將執(zhí)行一次。不同的是,在SystemC中,所有的信號(hào)和變量的初始化工作在構(gòu)造函數(shù)中進(jìn)行,他比其他函數(shù)先執(zhí)行,避免了像Verilog HDL中由于初始化順序不同引起的不同仿真器仿真結(jié)果的不一致。
為了支持進(jìn)程同步和通信細(xì)化,SystemC支持用戶自定義的接口,端口和通道。接口是方法的集合,但不具體實(shí)現(xiàn)這些方法,在C++語法中,他們都是純虛函數(shù)。通道具體實(shí)現(xiàn)一個(gè)或者多個(gè)接口。端口定義了他能夠連接的具體的接口類型,只能被用于連接實(shí)現(xiàn)了該類型接口的通道。在有些情況下,進(jìn)程可以直接讀寫通道而不必通過端口,而其他情況下則必須通過端口進(jìn)程才能讀寫通道。
在SystemC中,進(jìn)程只調(diào)用通道提供的接口方法。雖然接口方法是在通道中實(shí)現(xiàn)的,然而他是在進(jìn)程上下文中被執(zhí)行的。這被稱作接口方法調(diào)用(InterfaceMethodCall,IMC),接口方法調(diào)用和支持不同抽象級(jí)別的混合建模是通信細(xì)化的基礎(chǔ)。
4基于SystemC的設(shè)計(jì)思想和設(shè)計(jì)流程
用SystemC可以在抽象層次的不同級(jí)描述系統(tǒng)。在系統(tǒng)最高層的系統(tǒng)級(jí)可以用C/C++描述系統(tǒng)的功能和算法。在系統(tǒng)的硬件實(shí)現(xiàn)部分可以在行為級(jí)到RTL級(jí)用SystemC 的類來描述,系統(tǒng)的軟件部分自然可以用C/C++語言描述。而且,系統(tǒng)的不同部分可以在不同的抽象層次描述,這些描述在系統(tǒng)仿真時(shí)可以協(xié)同工作。并且,用SystemC不但可以描述要開發(fā)的系統(tǒng)本身,還可以描述系統(tǒng)的測(cè)試平臺(tái)Testbench,以提供測(cè)試信號(hào)用于系統(tǒng)的仿真。
SystemC由一組描述類的頭文件和一個(gè)包含仿真核的連接庫Link Library所組成,在用戶的建模描述程序中必須包括相應(yīng)的頭文件,然后可以用通常的C++編譯器編譯該程序。在連接Link時(shí)要調(diào)用SystemC的連接庫產(chǎn)生可執(zhí)行的系統(tǒng)仿真程序。利用SystemC建模的思想如圖2所示。
基于SystemC的設(shè)計(jì)流程與以前的設(shè)計(jì)流程的本質(zhì)區(qū)別在于,使用一種語言就可以完成從系統(tǒng)到RTL、從軟件到硬件的全部設(shè)計(jì),整個(gè)設(shè)計(jì)的軟硬件可以協(xié)同設(shè)計(jì)和仿真,恰好彌補(bǔ)了傳統(tǒng)設(shè)計(jì)方法中的這些不足。
基于SystemC的設(shè)計(jì)流程如圖3所示。
5應(yīng)用實(shí)例
下面給出一個(gè)基于SystemC設(shè)計(jì)的實(shí)例:RS(15,9)的設(shè)計(jì)詳細(xì)地說明整個(gè)設(shè)計(jì)流程。
RS(Reed-Solomon)[4]糾錯(cuò)碼是目前最有效、應(yīng)用最廣泛的差錯(cuò)控制編碼之一,是一類具有很強(qiáng)糾錯(cuò)能力的多進(jìn)制的線性分組碼,RS(15,9)碼編碼器,主要應(yīng)用于移動(dòng)通信系統(tǒng)的差錯(cuò)控制,由于該編碼器小巧、靈活,糾錯(cuò)性能好,對(duì)于移動(dòng)通信系統(tǒng)可靠性的提高、復(fù)雜度的降低有至關(guān)重要的作用[5]。整個(gè)系統(tǒng)如圖4所示。
整個(gè)設(shè)計(jì)從用SystemC為整個(gè)系統(tǒng)建模開始,同時(shí)為模塊建立Testbench。然后使用VC ++6.0和Modelsim進(jìn)行功能仿真,接著在SystemC可綜合子集的范圍內(nèi)對(duì)代碼進(jìn)行約束,使用支持SystemC的綜合工具SCC(SystemC Compiler)完成綜合,SystemC的綜合實(shí)際上還是靠綜合HDL語言文件得到的網(wǎng)表,而SCC這個(gè)工具是SystemC和HDL之間的一個(gè)橋梁,因此對(duì)于SystemC的綜合首先是將SystemC描述的RTL級(jí)電路通過SCC綜合,綜合的結(jié)果是生成相應(yīng)的Verilog文件,在這個(gè)轉(zhuǎn)變過程中,模塊的整體結(jié)構(gòu)被保存,如每一個(gè)sc _module被轉(zhuǎn)換成獨(dú)立的Verilog模塊,并存放在module_namev文件中;每一個(gè)進(jìn)程(SC_METHOD)被轉(zhuǎn)換成帶進(jìn)程名的always塊;變量和端口也以同樣的名字在Verilog文件中生成。因此,后續(xù)流程就與傳統(tǒng)設(shè)計(jì)語言設(shè)計(jì)的FPGA流程連接上了。
本文選用Xilinx的SPARTAN2系列的FPGA XC2S50PQ28對(duì)本設(shè)計(jì)進(jìn)行驗(yàn)證。軟件平臺(tái)主要使用的是Xilinx的集成開發(fā)環(huán)境ISE。其中第三方工具使用了綜合工具FPGA CompilerⅡ,布局布線工具選用的是ISE中的Webpack suite。
把前面用SystemC Compiler綜合生成的Verilog文件倒入ISE中,調(diào)用FCⅡ(FPGA Compiler Ⅱ),對(duì)代碼加約束,包括時(shí)間約束、引腳約束、時(shí)鐘頻率等,進(jìn)行邏輯綜合和優(yōu)化,得到的網(wǎng)表可以以EDIF格式輸出,并與布局布線工具(webpack suite)接口,完成布局布線操作。布局布線完成后會(huì)產(chǎn)生一個(gè)布局布線后的網(wǎng)表文件、標(biāo)準(zhǔn)延遲文件(SDF)和一個(gè)后綴名位b it的二進(jìn)制配置文件,其中SDF包含從布線之后提取出來的邏輯單元和連線的時(shí)序信息。然后連接好下載電路,運(yùn)行下載配置文件,實(shí)現(xiàn)對(duì)FPGA的配置,配置采用的是EDA實(shí)驗(yàn)板O PEN FPGA4.0。把ISE生成的配置文件bit文件燒錄到FPGA XC2S50上完成。整個(gè)實(shí)現(xiàn)流程如圖5所示。
從對(duì)FPGA XC2S50中消耗的邏輯資源分析可以看到,系統(tǒng)的等效門為1 124個(gè)門。
值得注意的是,在整個(gè)設(shè)計(jì)過程中,測(cè)試平臺(tái)一直沒有改變,這樣在設(shè)計(jì)被不斷完善的過程中,保證不引入新的設(shè)計(jì)錯(cuò)誤而始終符合設(shè)計(jì)要求。
6結(jié)語
本文針對(duì)目前業(yè)界比較熱門的新型系統(tǒng)設(shè)計(jì)語言SystemC的設(shè)計(jì)方法進(jìn)行了深入研究,并結(jié)合具體實(shí)例開發(fā)提出了一套完整的采用SystemC及其平臺(tái)設(shè)計(jì)的思路和方法。實(shí)驗(yàn)結(jié)果證明這套方法的可行性。由于目前如何采用SystemC進(jìn)行設(shè)計(jì)還沒有一個(gè)完全的設(shè)計(jì)規(guī)范流程,因此,如何將本文中的設(shè)計(jì)思路和流程完善使之更為通用,仍需進(jìn)一步深入研究。我們相信基于SystemC的設(shè)計(jì)必將成為IC設(shè)計(jì)領(lǐng)域系統(tǒng)級(jí)設(shè)計(jì)的最佳標(biāo)準(zhǔn)之一。
參考文獻(xiàn)
[1]Synopsys Inc.SystemC version1.0 User′s Guide.http://www.systemC.org.
[2]Synopsys Inc.SystemC version2.0 User′s Guide.http://www.systemC.org.
[3]Synopsys Inc.Functional Specification for SystemC 2.http://www.systemc.org. ?
[4]Berlekamp Elwnr.Bitserial ReedSolomon encoders[J].IEEE Transon Information Theory,1982,IT28(6):869-873.
[5]Kwon S,Shin H.An Areaefficient VLSI Architecture of Reedsolo mon Decoder/Encoder ro Digital VCRS[J]. IEEE Trans. Consumer Electronics,199 7,43(4):1 019-1 027.
上海概倫電子股份有限公司是一家具備國際市場(chǎng)競(jìng)爭(zhēng)力的EDA企業(yè),擁有領(lǐng)先的EDA關(guān)鍵核心技術(shù),致力于提高集成電路行業(yè)的整體技術(shù)水平和市場(chǎng)價(jià)值,提供專業(yè)高效的EDA流程和工具支撐。公司通過EDA方法學(xué)創(chuàng)新,推動(dòng)集成電路設(shè)計(jì)和...
關(guān)鍵字: EDA 集成電路 芯片設(shè)計(jì)據(jù)業(yè)內(nèi)消息,因?yàn)槿蛳M(fèi)電子市場(chǎng)的低迷,老牌IDM公司Intel將陸續(xù)從本月開始進(jìn)行較大規(guī)模裁員。Intel公司CEO帕特·基爾辛格自從上任以來不斷試圖調(diào)整公司策略以保證提高利潤(rùn)和產(chǎn)業(yè)規(guī)劃,信息表示Intel將對(duì)芯片設(shè)計(jì)...
關(guān)鍵字: IDM Intel 晶圓代工 芯片設(shè)計(jì)近日,中興遠(yuǎn)航 30S 5G 手機(jī)正式開售。這是繼電信天翼 1 號(hào) 2022、海信手機(jī)及平板之后,又一款采用展銳 5G 二代芯片的終端上市,標(biāo)志著展銳 5G 二代芯片再次得到市場(chǎng)認(rèn)可。
關(guān)鍵字: 芯片 半導(dǎo)體 芯片設(shè)計(jì)EDA 社區(qū)是一個(gè)軟件開發(fā)者社區(qū),我們的客戶是系統(tǒng)或半導(dǎo)體公司,他們開發(fā)下一代芯片,從汽車到數(shù)據(jù)中心再到物聯(lián)網(wǎng),甚至是制藥芯片。
關(guān)鍵字: 芯片設(shè)計(jì) Siemens EDA為了增進(jìn)大家對(duì)芯片的認(rèn)識(shí),本文將對(duì)芯片在設(shè)計(jì)的過程中存在的兩個(gè)難點(diǎn)予以介紹。
關(guān)鍵字: 芯片 指數(shù) 芯片設(shè)計(jì)2022年8月18日,世界半導(dǎo)體大會(huì)暨南京國際半導(dǎo)體博覽會(huì)正式開幕。此次大會(huì)以“世界芯·未來夢(mèng)”為主題,旨在進(jìn)一步聚集國內(nèi)國際資源,推進(jìn)全球半導(dǎo)體組織、企業(yè)有效交流合作,共同探討新環(huán)境、新背景、新業(yè)態(tài)下全球半導(dǎo)體產(chǎn)業(yè)的發(fā)...
關(guān)鍵字: 瀾起科技 芯片設(shè)計(jì) 世界半導(dǎo)體大會(huì)本月,Google開發(fā)者上線了一個(gè)芯片設(shè)計(jì)的網(wǎng)站,網(wǎng)站的宣傳語表示該網(wǎng)站會(huì)讓每個(gè)人更容易大規(guī)模地構(gòu)建定制芯片。
關(guān)鍵字: 半導(dǎo)體 Google 芯片設(shè)計(jì) 芯片設(shè)計(jì)網(wǎng)站作為專注于核心智能控制芯片設(shè)計(jì)的國產(chǎn)一線廠商,公司旗下小華半導(dǎo)體受邀參加此次投資大會(huì),小華半導(dǎo)體董事長(zhǎng)謝文錄代表企業(yè)完成重大產(chǎn)業(yè)項(xiàng)目線上簽約。
關(guān)鍵字: 華大半導(dǎo)體 芯片設(shè)計(jì) MCU據(jù)悉,本輪融資由中車資本領(lǐng)投,匯川技術(shù)、尚頎資本、君桐資本、基石資本、聚合資本、得彼投資跟投。本輪融資資金主要用于投入新產(chǎn)品研發(fā)和產(chǎn)能儲(chǔ)備,同時(shí)用于擴(kuò)大研發(fā)團(tuán)隊(duì)、銷售團(tuán)隊(duì)、補(bǔ)充流動(dòng)資金等方面,為公司的發(fā)展提速,助力芯進(jìn)電...
關(guān)鍵字: 芯進(jìn)電子 芯片設(shè)計(jì) 磁傳感器第25屆全球量子信息處理會(huì)議QIP 2022召開。大會(huì)期間,百度研究院量子計(jì)算研究所所長(zhǎng)段潤(rùn)堯博士發(fā)表題為《Quantum Computing at Baidu》的主題演講,介紹了百度量子的最新研究進(jìn)展。
關(guān)鍵字: 國產(chǎn) 量子 芯片設(shè)計(jì)