EDA技術(shù)與FPGA設(shè)計(jì)應(yīng)用 (圖)
關(guān)鍵詞:電子設(shè)計(jì)自動(dòng)化;現(xiàn)場可編程門陣列;復(fù)雜可編程邏輯器件;專用集成電路;知識(shí)產(chǎn)權(quán);甚高速集成電路硬件描述語言
引言
---21世紀(jì)是電子信息產(chǎn)業(yè)主導(dǎo)的知識(shí)經(jīng)濟(jì)時(shí)代,信息領(lǐng)域正在發(fā)生一場巨大變革,其先導(dǎo)力量和決定性因素正是微電子集成電路。硅片技術(shù)的日益成熟,特別是深亞微米(dsm,deep sub-micron)和超深亞微米(vdsm,very deep sub-micron)技術(shù),極大促進(jìn)了集成電路產(chǎn)業(yè)的快速發(fā)展。
---集成電路發(fā)展經(jīng)歷了電路集成、功能集成、技術(shù)集成,直至今天基于計(jì)算機(jī)軟硬件的知識(shí)集成,這標(biāo)志著傳統(tǒng)電子系統(tǒng)已全面進(jìn)入現(xiàn)代電子系統(tǒng)階段,這也被譽(yù)為進(jìn)入3g時(shí)代,即單片集成度達(dá)到1g個(gè)晶體管、器件工作速度達(dá)到1ghz、數(shù)據(jù)傳輸速率達(dá)到1gbps。
---eda(electronic design automation,電子設(shè)計(jì)自動(dòng)化)技術(shù)基于計(jì)算機(jī)輔助設(shè)計(jì),它融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理技術(shù)、智能化技術(shù)的最新成果,以實(shí)現(xiàn)電子產(chǎn)品的自動(dòng)設(shè)計(jì)。eda是現(xiàn)代電子設(shè)計(jì)技術(shù)的核心,在現(xiàn)代集成電路設(shè)計(jì)中占據(jù)重要地位。fpga(field programmable gate array,現(xiàn)場可編程門陣列)作為可編程邏輯器件的典型代表,它的出現(xiàn)及日益完善適應(yīng)了當(dāng)今時(shí)代的數(shù)字化發(fā)展浪潮,它正廣泛應(yīng)用在現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)中。
eda技術(shù)與fpga原理
1.eda技術(shù)特征
---eda是電子設(shè)計(jì)領(lǐng)域的一場革命,它源于計(jì)算機(jī)輔助設(shè)計(jì)(cad,computer aided design)、計(jì)算機(jī)輔助制造(cam,computer aided made)、計(jì)算機(jī)輔助測試(cat,computer aided test)和計(jì)算機(jī)輔助工程(cae,computer aided engineering)。利用eda工具,電子設(shè)計(jì)師從概念、算法、協(xié)議開始設(shè)計(jì)電子系統(tǒng),從電路設(shè)計(jì)、性能分析直到ic版圖或pcb版圖生成的全過程均可在計(jì)算機(jī)上自動(dòng)完成。
---eda代表了當(dāng)今電子設(shè)計(jì)技術(shù)的最新發(fā)展方向,其基本特征是設(shè)計(jì)人員以計(jì)算機(jī)為工具,按照自頂向下的設(shè)計(jì)方法,對(duì)整個(gè)系統(tǒng)進(jìn)行方案設(shè)計(jì)和功能劃分,由硬件描述語言完成系統(tǒng)行為級(jí)設(shè)計(jì),利用先進(jìn)的開發(fā)工具自動(dòng)完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線(par,place and route)、仿真及特定目標(biāo)芯片的適配編譯和編程下載,這被稱為數(shù)字邏輯電路的高層次設(shè)計(jì)方法。
---作為現(xiàn)代電子系統(tǒng)設(shè)計(jì)的主導(dǎo)技術(shù),eda具有兩個(gè)明顯特征:即并行工程(concurrent engineering)設(shè)計(jì)和自頂向下(top-down)設(shè)計(jì)。其基本思想是從系統(tǒng)總體要求出發(fā),分為行為描述(behaviour description)、寄存器傳輸級(jí)(rtl,register transfer level)描述、邏輯綜合(logic synthesis)三個(gè)層次,將設(shè)計(jì)內(nèi)容逐步細(xì)化,最后完成整體設(shè)計(jì),這是一種全新的設(shè)計(jì)思想與設(shè)計(jì)理念。
2.fpga原理
---今天,數(shù)字電子系統(tǒng)的設(shè)計(jì)方法及設(shè)計(jì)手段都發(fā)生了根本性變化,正由分立數(shù)字電路向可編程邏輯器件(pld,programmable logic device)及專用集成電路(asic,application specific integrated circuit)轉(zhuǎn)變。fpga與cpld(programmable logic device,復(fù)雜可編程邏輯器件)都屬于pld的范疇,它們?cè)诂F(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)中正占據(jù)越來越重要的地位。
---fpga是由用戶編程來實(shí)現(xiàn)所需邏輯功能的數(shù)字集成電路,它不僅具有設(shè)計(jì)靈活、性能高、速度快等優(yōu)勢,而且上市周期短、成本低廉。fpga設(shè)計(jì)與asic前端設(shè)計(jì)十分類似,在半導(dǎo)體領(lǐng)域中fpga應(yīng)用日益普及,已成為集成電路中最具活力和前途的產(chǎn)業(yè)。同時(shí),隨著設(shè)計(jì)技術(shù)和制造工藝的完善,器件性能、集成度、工作頻率等指標(biāo)不斷提升,fpga已越來越多地成為系統(tǒng)級(jí)芯片設(shè)計(jì)的首選。
---fpga由pal(可編程陣列邏輯)、gal(通用陣列邏輯)發(fā)展而來,其基本設(shè)計(jì)思想是借助于eda開發(fā)工具,用原理圖、狀態(tài)機(jī)、布爾表達(dá)式、硬件描述語言等方法進(jìn)行系統(tǒng)功能及算法描述,設(shè)計(jì)實(shí)現(xiàn)并生成編程文件,最后通過編程器或下載電纜用目標(biāo)器件來實(shí)現(xiàn)。
---fpga器件采用邏輯單元陣列(lca,logic cell array)結(jié)構(gòu)、sdram工藝,其中l(wèi)ca由三類可編程單元組成。
---(1)可配置邏輯塊(clb,configurable logic block):被稱為核心陣列,是實(shí)現(xiàn)自定義邏輯功能的基本單元,散布于整個(gè)芯片;
---(2)輸入/輸出模塊(iob,input/output block):排列于芯片四周,為內(nèi)部邏輯與器件封裝引腳之間提供可編程接口;
---(3)可編程互連資源(pi,programmable interconnect):包括不同長度的連線線段及連接開關(guān),其功能是將各個(gè)可編程邏輯塊或i/o塊連接起來以構(gòu)成特定電路。
---全球生產(chǎn)fpga的廠家很多,但影響力最大的是xilinx公司和altera公司,世界上第一片fpga是在20世紀(jì)80年代中期xilinx公司率先推出的。不同廠家生產(chǎn)的fpga在可編程邏輯塊的規(guī)模、內(nèi)部互連線結(jié)構(gòu)及所采用的可編程元件上存在較大差異,實(shí)際使用時(shí)應(yīng)注意區(qū)分。
fpga設(shè)計(jì)應(yīng)用及優(yōu)化策略
1.fpga設(shè)計(jì)層次分析
---fpga設(shè)計(jì)包括描述層次及描述領(lǐng)域兩方面內(nèi)容。通常設(shè)計(jì)描述分為6個(gè)抽象層次,從高到低依次為:系統(tǒng)層、算法層、寄存器傳輸層、邏輯層、電路層和版圖層。對(duì)每一層又分別有三種不同領(lǐng)域的描述:行為域描述、結(jié)構(gòu)域描述和物理域描述。
---系統(tǒng)層是系統(tǒng)最高層次的抽象描述,針對(duì)于電子系統(tǒng)整體性能。算法層又稱為行為層,它是在系統(tǒng)級(jí)性能分析和結(jié)構(gòu)劃分后對(duì)每個(gè)模塊的功能描述。算法層所描述的功能、行為最終要用數(shù)字電路來實(shí)現(xiàn)。而數(shù)字電路本質(zhì)上可視為由寄存器和組合邏輯電路組成,其中寄存器負(fù)責(zé)信號(hào)存儲(chǔ),組合邏輯電路負(fù)責(zé)信號(hào)傳輸。寄存器傳輸層描述正是從信號(hào)存儲(chǔ)、傳輸?shù)慕嵌热ッ枋稣麄€(gè)系統(tǒng)。寄存器和組合邏輯本質(zhì)上是由邏輯門構(gòu)成,邏輯層正是從邏輯門組合及連接角度去描述整個(gè)系統(tǒng)。
---fpga各個(gè)描述層次及綜合技術(shù)關(guān)系如圖1所示。傳統(tǒng)的綜合工具是將寄存器傳輸級(jí)(rtl)的描述轉(zhuǎn)化為門級(jí)描述。隨著以行為設(shè)計(jì)為主要標(biāo)志的新一代系統(tǒng)設(shè)計(jì)理論的不斷成熟,能夠?qū)⑾到y(tǒng)行為級(jí)描述轉(zhuǎn)化為rtl描述的高層次綜合技術(shù)不斷涌現(xiàn)。
---作為現(xiàn)代集成電路設(shè)計(jì)的重點(diǎn)與熱點(diǎn),fpga設(shè)計(jì)一般采用自頂向下、由粗到細(xì)、逐步求精的方法。設(shè)計(jì)最頂層是指系統(tǒng)的整體要求,最下層是指具體的邏輯電路實(shí)現(xiàn)。自頂向下是將數(shù)字系統(tǒng)的整體逐步分解為各個(gè)子系統(tǒng)和模塊,若子系統(tǒng)規(guī)模較大則進(jìn)一步分解為更小的子系統(tǒng)和模塊,層層分解,直至整個(gè)系統(tǒng)中各子模塊關(guān)系合理、便于設(shè)計(jì)實(shí)現(xiàn)為止。
2.vhdl在fpga設(shè)計(jì)中的應(yīng)用
---集成電路設(shè)計(jì)規(guī)模及復(fù)雜度不斷增大,用傳統(tǒng)原理圖方法進(jìn)行系統(tǒng)級(jí)芯片設(shè)計(jì)已不能滿足設(shè)計(jì)要求,而硬件描述語言(hdl,hardware description language)在進(jìn)行大規(guī)模數(shù)字系統(tǒng)設(shè)計(jì)時(shí)具有諸多優(yōu)勢,因此利用硬件描述語言進(jìn)行系統(tǒng)行為級(jí)設(shè)計(jì)已成為fpga與asic設(shè)計(jì)的主流。目前最流行、最具代表性的硬件描述語言是美國國防部(dod)開發(fā)的vhdl(vhsic hardware description language)和gda(gateway design automation)公司開發(fā)的verilog hdl。
---vhsic代表very high speed integrated circuit,因此vhdl即甚高速集成電路硬件描述語言。vhdl語法嚴(yán)格,1987年即成為ieee標(biāo)準(zhǔn),即ieee std 1076-1987,1993年進(jìn)一步修訂成為ieee std 1076-1993。
---vhdl作為ieee標(biāo)準(zhǔn),已得到眾多eda公司支持,其主要優(yōu)點(diǎn)有:
● 描述能力強(qiáng),支持系統(tǒng)行為級(jí)、寄存器傳輸級(jí)和門級(jí)三個(gè)層次設(shè)計(jì);
● 可讀性好、移植性強(qiáng),其源文件既是程序又是文檔,便于復(fù)用和交流;
● 支持自頂向下的設(shè)計(jì)和基于庫(library-based)的設(shè)計(jì);
● 支持同步、異步及隨機(jī)電路的設(shè)計(jì);
● 與工藝無關(guān),生命周期長。
---vhdl語言主要應(yīng)用在行為層和寄存器傳輸層,這兩層可充分發(fā)揮出vhdl面向高層的優(yōu)勢。利用vhdl實(shí)現(xiàn)數(shù)字電路的實(shí)質(zhì)是利用綜合工具將高層次描述轉(zhuǎn)化為低層次門級(jí)描述,其中綜合可分為三個(gè)層次:高層次綜合(high-level synthesis)、邏輯綜合(logic synthesis)和版圖綜合(layout synthesis)。
3.基于vhdl的fpga系統(tǒng)行為級(jí)設(shè)計(jì)
---基于vhdl的fpga設(shè)計(jì)基本流程及詳細(xì)流程分別如圖2和圖3所示,具體包括以下重要環(huán)節(jié):設(shè)計(jì)輸入(design entry)、設(shè)計(jì)綜合(design synthesis)、設(shè)計(jì)約束(design constraints)、設(shè)計(jì)實(shí)現(xiàn)(design implement)、設(shè)計(jì)仿真(design simulation)和器件編程(device programming)。
---設(shè)計(jì)輸入主要采用hdl(硬件描述語言)、ecs(engineering schematic capture,原理圖編輯器)和fsm(finite state machine,有限狀態(tài)機(jī));
---設(shè)計(jì)綜合就是依據(jù)邏輯設(shè)計(jì)描述和約束條件,利用開發(fā)工具進(jìn)行優(yōu)化處理,將hdl文件轉(zhuǎn)變?yōu)橛布娐穼?shí)現(xiàn)方案,其實(shí)質(zhì)就是優(yōu)化設(shè)計(jì)目標(biāo)的過程;
---設(shè)計(jì)約束主要包括設(shè)計(jì)規(guī)則約束、時(shí)間約束、面積約束三種,通常時(shí)間約束的優(yōu)先級(jí)高于面積約束;
---設(shè)計(jì)實(shí)現(xiàn)對(duì)于fpga分為編譯規(guī)劃、布局布線(par,place and route)、程序比特流文件產(chǎn)生;對(duì)于cpld則是編譯、配置、比特流文件產(chǎn)生;
---設(shè)計(jì)仿真分為功能仿真和時(shí)序時(shí)延仿真。功能仿真在設(shè)計(jì)輸入之后、綜合之前進(jìn)行,只進(jìn)行功能驗(yàn)證,又稱為前仿真。時(shí)序時(shí)延仿真在綜合和布局布線之后進(jìn)行,能夠得到目標(biāo)器件的詳細(xì)時(shí)序時(shí)延信息,又稱為后仿真;
---器件編程是指在功能仿真與時(shí)序時(shí)延仿真正確的前提下,將綜合后形成的位流編程下載到具體的fpga/cpld芯片中,又稱芯片配置。fpga/cpld編程下載通??墒褂胘tag編程器、prom文件格式器和硬件調(diào)試器三種方式,其中jtag(joint test action group,聯(lián)合測試行動(dòng)組)是工業(yè)標(biāo)準(zhǔn)的ieee 1149.1邊界掃描測試的訪問接口,用作編程功能可省去專用的編程接口,減少系統(tǒng)引出線,有利于各可編程邏輯器件編程接口的統(tǒng)一,因此應(yīng)用廣泛。
4.fpga設(shè)計(jì)優(yōu)化及方案改進(jìn)
---在fpga設(shè)計(jì)中,必須首先明確hdl源代碼編寫非常重要;不同綜合工具包含的綜合子集不同致使有些hdl語句在某些綜合工具中不能綜合;同一邏輯功能可用不同hdl語句進(jìn)行描述,但占用資源卻可能差別很大。同時(shí)應(yīng)當(dāng)深刻理解并發(fā)性是硬件描述語言與普通高級(jí)語言的根本區(qū)別,因而設(shè)計(jì)硬件電路不能受傳統(tǒng)順序執(zhí)行思維的束縛。
---此外,我們應(yīng)當(dāng)清楚速度優(yōu)化與面積優(yōu)化在fpga設(shè)計(jì)中占有重要地位。對(duì)于大多數(shù)數(shù)字系統(tǒng)設(shè)計(jì)而言,速度常常是第一要求,但fpga結(jié)構(gòu)特性、綜合工具性能、系統(tǒng)電路構(gòu)成、pcb制版情況及hdl代碼表述都會(huì)對(duì)工作速度產(chǎn)生重要影響。我們通過在電路結(jié)構(gòu)設(shè)計(jì)中采用流水線設(shè)計(jì)、寄存器配平、關(guān)鍵路徑法可以進(jìn)行速度優(yōu)化。
---(1)流水線設(shè)計(jì)
---流水線(pipelining)技術(shù)在速度優(yōu)化中相當(dāng)流行,它能顯著提高系統(tǒng)設(shè)計(jì)的運(yùn)行速度上限,在現(xiàn)代微處理器、數(shù)字信號(hào)處理器、mcu單片機(jī)、高速數(shù)字系統(tǒng)設(shè)計(jì)中都離不開流水線技術(shù)。圖4與圖5是流水線設(shè)計(jì)的典型圖示,其中圖4未使用流水線設(shè)計(jì),圖5采用了2級(jí)流水線設(shè)計(jì),在設(shè)計(jì)中將延時(shí)較大的組合邏輯塊切割成兩塊延時(shí)大致相等的組合邏輯塊,并在這兩個(gè)邏輯塊中插入了觸發(fā)器,即滿足以下關(guān)系式:ta=t1+t2,t1≈t2。通過分析可知,圖4中fmax≈1/ta;圖5中流水線第1級(jí)最高工作頻率fmax1≈1/t1,流水線第2級(jí)最高工作頻率fmax2≈1/t2≈1/t1,總設(shè)計(jì)最高頻率為fmax≈fmax1≈fmax2≈1/t1,因此圖5設(shè)計(jì)速度較圖4提升了近一倍。流水線工作原理可用圖6表示。
---(2)寄存器配平(register balancing)
---寄存器配平是通過配平寄存器之間的組合延時(shí)邏輯塊來實(shí)現(xiàn)速度優(yōu)化,如圖7、圖8所示。圖7中兩個(gè)組合邏輯塊延時(shí)差別過大,導(dǎo)致設(shè)計(jì)總體工作頻率fmax取決于t1,即最大的延時(shí)模塊,從而使設(shè)計(jì)整體性能受限。通過對(duì)圖7設(shè)計(jì)進(jìn)行改進(jìn),將延時(shí)較大的組合邏輯1的部分邏輯轉(zhuǎn)移到組合邏輯2中,成為圖8結(jié)構(gòu),以減小延時(shí)t1,使t1≈t2,且滿足t1+t2=t1+t2。寄存器配平后的圖8結(jié)構(gòu)中fmax≈1/t1>1/t1,從而提高了設(shè)計(jì)速度。
---(3)關(guān)鍵路徑法
---關(guān)鍵路徑是指設(shè)計(jì)中從輸入到輸出經(jīng)過的延時(shí)最長的邏輯路徑,優(yōu)化關(guān)鍵路徑是提高設(shè)計(jì)工作速度的有效方法。圖9中td1>td2,td1>td3,關(guān)鍵路徑為延時(shí)td1的模塊,由于從輸入到輸出的延時(shí)取決于延時(shí)最長路徑,而與其他延時(shí)較小的路徑無關(guān),因此減少td1則能改善輸入到輸出的總延時(shí)。
---在優(yōu)化設(shè)計(jì)過程中關(guān)鍵路徑法可反復(fù)使用,直到不可能減少關(guān)鍵路徑延時(shí)為止。許多eda開發(fā)工具都提供時(shí)序分析器可以幫助找到延時(shí)最長的關(guān)鍵路徑,以便設(shè)計(jì)者改進(jìn)設(shè)計(jì)。對(duì)于結(jié)構(gòu)固定的設(shè)計(jì),關(guān)鍵路徑法是進(jìn)行速度優(yōu)化的首選方法,可與其他方法配合使用。
---在fpga設(shè)計(jì)中,面積優(yōu)化實(shí)質(zhì)上就是資源利用優(yōu)化,面積優(yōu)化有多種實(shí)現(xiàn)方法,諸如資源共享、邏輯優(yōu)化、串行化,其中資源共享使用較多,下面舉例說明。
---在利用fpga設(shè)計(jì)數(shù)字系統(tǒng)時(shí)經(jīng)常遇到同一模塊需要反復(fù)被調(diào)用,例如多位乘法器、快速進(jìn)位加法器等算術(shù)模塊,它們占用芯片資源很多,使系統(tǒng)成本及器件功耗大幅上升,因而使用資源共享技術(shù)能夠顯著優(yōu)化資源。圖10和圖11是資源共享的一個(gè)典型實(shí)例,由圖可見使用資源共享技術(shù)節(jié)省了一個(gè)多位乘法器,從而達(dá)到減少資源消耗、優(yōu)化面積的目的。
---最后針對(duì)fpga的設(shè)計(jì)實(shí)現(xiàn)提出一些改進(jìn)方案,fpga實(shí)現(xiàn)分為編譯規(guī)劃、布局布線(par,place and route)、程序比特流文件生成三個(gè)階段,當(dāng)設(shè)計(jì)不滿足性能指標(biāo)或不能完全布線時(shí),可進(jìn)行以下改進(jìn)工作:
● 使用定時(shí)約束(timing constraints);
● 增大布局布線級(jí)別(par effort);
● 對(duì)關(guān)鍵通路(critical paths)的數(shù)字邏輯重新設(shè)計(jì);
● 運(yùn)行重布線(re-entrant routing);
● 運(yùn)行mppr(multi-pass place & route,多通路布局布線);
● 運(yùn)行平面布局(floorplan)查看布局圖及連通性。
---下面重點(diǎn)介紹re-entrant routing與mppr,它們都可改進(jìn)布局布線結(jié)果,提高系統(tǒng)性能。其中re-entrant routing是指已運(yùn)行過par后再次運(yùn)行par,但跳過布局過程直接進(jìn)行布線,如圖12所示。mppr則是根據(jù)不同功耗表(cost tables)來運(yùn)行par多次,通過對(duì)每一個(gè)par迭代評(píng)分來確定最好路徑并保留,其中評(píng)分依據(jù)是未布線的連線個(gè)數(shù)、連線延遲與時(shí)序約束,如圖13所示。
結(jié)束語
---當(dāng)今社會(huì),集成電路產(chǎn)業(yè)已成為高技術(shù)產(chǎn)業(yè)群的核心戰(zhàn)略產(chǎn)業(yè),已逐漸演化為設(shè)計(jì)、制造、封裝、測試協(xié)調(diào)發(fā)展的產(chǎn)業(yè)結(jié)構(gòu),它正進(jìn)入以知識(shí)產(chǎn)權(quán)為創(chuàng)新核心的新時(shí)期。這標(biāo)志著集成電路產(chǎn)業(yè)的競爭已由技術(shù)競爭、資本競爭進(jìn)入到智力和知識(shí)產(chǎn)權(quán)競爭的高級(jí)階段。
---fpga在集成電路設(shè)計(jì)應(yīng)用中占有重要地位,現(xiàn)場可編程性是fpga最突出的優(yōu)點(diǎn)。用戶通過利用強(qiáng)大的開發(fā)工具,能在最短時(shí)間內(nèi)對(duì)fpga內(nèi)部邏輯進(jìn)行反復(fù)設(shè)計(jì)及修改,直至滿意為止,這大大縮短了產(chǎn)品設(shè)計(jì)開發(fā)周期,提高了最終產(chǎn)品性能。因而fpga以其獨(dú)有的技術(shù)優(yōu)勢在電子設(shè)計(jì)領(lǐng)域得到越來越廣泛的應(yīng)用。隨著科學(xué)發(fā)展及工藝進(jìn)步,作為重中之重的集成電路設(shè)計(jì)業(yè)必將遇到更大的挑戰(zhàn)及發(fā)展機(jī)遇。
參考文獻(xiàn)
1 王鎖萍,龔建榮等. 電子設(shè)計(jì)自動(dòng)化教程. 成都: 電子科技大學(xué)出版社, 2000.2
2 褚振勇,翁木云. fpga設(shè)計(jì)及應(yīng)用. 西安: 西安電子科技大學(xué)出版社, 2002.7
3 潘松,黃繼業(yè). eda技術(shù)實(shí)用教程. 北京: 科學(xué)出版社. 2002,10
4 http://www.xilinx.com
5 http://www.altera.com
評(píng)論