FPGA 是可編程芯片,因此 FPGA 的設(shè)計(jì)方法包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分。硬件包括 FPGA 芯片電路、 存儲(chǔ)器、輸入輸出接口電路以及其他設(shè)備,軟件即是相應(yīng)的 HDL 程序以及最新才流行的嵌入式 C 程序。
目前微電子技術(shù)已經(jīng)發(fā)展到 SOC 階段,即集成系統(tǒng)(Integrated System)階段,相對(duì)于集成電路(IC)的設(shè)計(jì)思想有著革命性的變化。SOC 是一個(gè)復(fù)雜的系統(tǒng),它將一個(gè)完整產(chǎn)品的功能集成在一個(gè)芯片上,包括核心處理器、存儲(chǔ)單元、硬件加速單元以及眾多的外部設(shè)備接口等,具有設(shè)計(jì)周期長(zhǎng)、實(shí)現(xiàn)成本高等特點(diǎn),因此其設(shè)計(jì)方法必然是自頂向下的從系統(tǒng)級(jí)到功能模塊的軟、硬件協(xié)同設(shè)計(jì),達(dá)到軟、硬件的無縫結(jié)合。
典型 FPGA 開發(fā)流程與注意事項(xiàng)
FPGA 的設(shè)計(jì)流程就是利用 EDA 開發(fā)軟件和編程工具對(duì) FPGA 芯片進(jìn)行開發(fā)的過程。典型 FPGA 的開發(fā)流程一般如所示,包括功能定義 / 器件選型、設(shè)計(jì)輸入、功能仿真、綜合優(yōu)化、綜合后仿真、實(shí)現(xiàn)、布線后仿真、板級(jí)仿真以及芯片編程與調(diào)試等主要步驟。
1、功能定義 / 器件選型
在 FPGA 設(shè)計(jì)項(xiàng)目開始之前,必須有系統(tǒng)功能的定義和模塊的劃分,另外就是要根據(jù)任務(wù)要求,如系統(tǒng)的功能和復(fù)雜度,對(duì)工作速度和器件本身的資源、成本、以及連線的可布性等方面進(jìn)行權(quán)衡,選擇合適的設(shè)計(jì)方案和合適的器件類型。一般都采用自頂向下的設(shè)計(jì)方法,把系統(tǒng)分成若干個(gè)基本單元,然后再把每個(gè)基本單元?jiǎng)澐譃橄乱粚哟蔚幕締卧恢边@樣做下去,直到可以直接使用 EDA 元件庫(kù)為止。
2、 設(shè)計(jì)輸入
設(shè)計(jì)輸入是將所設(shè)計(jì)的系統(tǒng)或電路以開發(fā)軟件要求的某種形式表示出來,并輸入給 EDA 工具的過程。常用的方法有硬件描述語言(HDL)和原理圖輸入方法等。原理圖輸入方式是一種最直接的描述方式,在可編程芯片發(fā)展的早期應(yīng)用比較廣泛,它將所需的器件從元件庫(kù)中調(diào)出來,畫出原理圖。這種方法雖然直觀并易于仿真,但效率很低,且不易維護(hù),不利于模塊構(gòu)造和重用。更主要的缺點(diǎn)是可移植性差,當(dāng)芯片升級(jí)后,所有的原理圖都需要作一定的改動(dòng)。
目前,在實(shí)際開發(fā)中應(yīng)用最廣的就是 HDL 語言輸入法,利用文本描述設(shè)計(jì),可以分為普通 HDL 和行為 HDL。普通 HDL 有 ABEL、CUR 等,支持邏輯方程、真值表和狀態(tài)機(jī)等表達(dá)方式,主要用于簡(jiǎn)單的小型設(shè)計(jì)。而在中大型工程中,主要使用行為 HDL,其主流語言是 Verilog HDL 和 VHDL。這兩種語言都是美國(guó)電氣與電子工程師協(xié)會(huì)(IEEE)的標(biāo)準(zhǔn),其共同的突出特點(diǎn)有:語言與芯片工藝無關(guān),利于自頂向下設(shè)計(jì),便于模塊的劃分與移植,可移植性好,具有很強(qiáng)的邏輯描述和仿真功能,而且輸入效率很高。除了這 IEEE 標(biāo)準(zhǔn)語言外,還有廠商自己的語言。也可以用 HDL 為主,原理圖為輔的混合設(shè)計(jì)方式,以發(fā)揮兩者的各自特色。
3、 功能仿真
功能仿真也稱為前仿真是在編譯之前對(duì)用戶所設(shè)計(jì)的電路進(jìn)行邏輯功能驗(yàn)證,此時(shí)的仿真沒有延遲信息,僅對(duì)初步的功能進(jìn)行檢測(cè)。仿真前,要先利用波形編輯器和 HDL 等建立波形文件和測(cè)試向量(即將所關(guān)心的輸入信號(hào)組合成序列),仿真結(jié)果將會(huì)生成報(bào)告文件和輸出信號(hào)波形,從中便可以觀察各個(gè)節(jié)點(diǎn)信號(hào)的變化。如果發(fā)現(xiàn)錯(cuò)誤,則返回設(shè)計(jì)修改邏輯設(shè)計(jì)。常用的工具有 Model Tech 公司的 ModelSim、Sysnopsys 公司的 VCS 和 Cadence 公司的 NC-Verilog 以及 NC-VHDL 等軟件。
4、 綜合優(yōu)化
所謂綜合就是將較高級(jí)抽象層次的描述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標(biāo)與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計(jì)平面化,供 FPGA 布局布線軟件進(jìn)行實(shí)現(xiàn)。就目前的層次來看,綜合優(yōu)化(Synthesis)是指將設(shè)計(jì)輸入編譯成由與門、或門、非門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,而并非真實(shí)的門級(jí)電路。真實(shí)具體的門級(jí)電路需要利用 FPGA 制造商的布局布線功能,根據(jù)綜合后生成的標(biāo)準(zhǔn)門級(jí)結(jié)構(gòu)網(wǎng)表來產(chǎn)生。為了能轉(zhuǎn)換成標(biāo)準(zhǔn)的門級(jí)結(jié)構(gòu)網(wǎng)表,HDL 程序的編寫必須符合特定綜合器所要求的風(fēng)格。由于門級(jí)結(jié)構(gòu)、RTL 級(jí)的 HDL 程序的綜合是很成熟的技術(shù),所有的綜合器都可以支持到這一級(jí)別的綜合。常用的綜合工具有 Synplicity 公司的 Synplify/Synplify Pro 軟件以及各個(gè) FPGA 廠家自己推出的綜合開發(fā)工具。
5、 綜合后仿真
綜合后仿真檢查綜合結(jié)果是否和原設(shè)計(jì)一致。在仿真時(shí),把綜合生成的標(biāo)準(zhǔn)延時(shí)文件反標(biāo)注到綜合仿真模型中去,可估計(jì)門延時(shí)帶來的影響。但這一步驟不能估計(jì)線延時(shí),因此和布線后的實(shí)際情況還有一定的差距,并不十分準(zhǔn)確。目前的綜合工具較為成熟,對(duì)于一般的設(shè)計(jì)可以省略這一步,但如果在布局布線后發(fā)現(xiàn)電路結(jié)構(gòu)和設(shè)計(jì)意圖不符,則需要回溯到綜合后仿真來確認(rèn)問題之所在。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
圖 1 FPGA 典型設(shè)計(jì)流程
6、 實(shí)現(xiàn)與布局布線
布局布線可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能鏈接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報(bào)告),實(shí)現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的 FPGA 芯片上,布局布線是其中最重要的過程。布局將邏輯網(wǎng)表中的硬件原語和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且往往需要在速度最優(yōu)和面積最優(yōu)之間作出選擇。布線根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件。目前,F(xiàn)PGA 的結(jié)構(gòu)非常復(fù)雜,特別是在有時(shí)序約束條件時(shí),需要利用時(shí)序驅(qū)動(dòng)的引擎進(jìn)行布局布線。布線結(jié)束后,軟件工具會(huì)自動(dòng)生成報(bào)告,提供有關(guān)設(shè)計(jì)中各部分資源的使用情況。由于只有 FPGA 芯片生產(chǎn)商對(duì)芯片結(jié)構(gòu)最為了解,所以布局布線必須選擇芯片開發(fā)商提供的工具。
7、 時(shí)序仿真
時(shí)序仿真,也稱為后仿真,是指將布局布線的延時(shí)信息反標(biāo)注到設(shè)計(jì)網(wǎng)表中來檢測(cè)有無時(shí)序違規(guī)(即不滿足時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持時(shí)間等)現(xiàn)象。時(shí)序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實(shí)際工作情況。由于不同芯片的內(nèi)部延時(shí)不一樣,不同的布局布線方案也給延時(shí)帶來不同的影響。因此在布局布線后,通過對(duì)系統(tǒng)和各個(gè)模塊進(jìn)行時(shí)序仿真,分析其時(shí)序關(guān)系,估計(jì)系統(tǒng)性能,以及檢查和消除競(jìng)爭(zhēng)冒險(xiǎn)是非常有必要的。在功能仿真中介紹的軟件工具一般都支持綜合后仿真。
8、 板級(jí)仿真與驗(yàn)證
板級(jí)仿真主要應(yīng)用于高速電路設(shè)計(jì)中,對(duì)高速系統(tǒng)的信號(hào)完整性、電磁干擾等特征進(jìn)行分析,一般都以第三方工具進(jìn)行仿真和驗(yàn)證。
9、 芯片編程與調(diào)試
設(shè)計(jì)的最后一步就是芯片編程與調(diào)試。芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件(位數(shù)據(jù)流文件,Bitstream Generation),然后將編程數(shù)據(jù)下載到 FPGA 芯片中。其中,芯片編程需要滿足一定的條件,如編程電壓、編程時(shí)序和編程算法等方面。邏輯分析儀(Logic Analyzer,LA)是 FPGA 設(shè)計(jì)的主要調(diào)試工具,但需要引出大量的測(cè)試管腳,且 LA 價(jià)格昂貴。目前,主流的 FPGA 芯片生產(chǎn)商都提供了內(nèi)嵌的在線邏輯分析儀(如 Xilinx ISE 中的 ChipScope、Altera QuartusII 中的 SignalTapII 以及 SignalProb)來解決上述矛盾,它們只需要占用芯片少量的邏輯資源,具有很高的實(shí)用價(jià)值。
基于 FPGA 的 SOC 設(shè)計(jì)方法
目前,由于 FPGA 性能提升價(jià)格下降,同時(shí)嵌入越來越多內(nèi)核,很自然地,很多 IC 設(shè)計(jì)公司將 FPGA 用于 ASIC 原型驗(yàn)證,把 FPGA 可編程的優(yōu)點(diǎn)帶到了 SOC 領(lǐng)域,其系統(tǒng)由嵌入式處理器內(nèi)核、DSP 單元、大容量處理器、吉比特收發(fā)器、混合邏輯、IP 以及原有的設(shè)計(jì)部分組成。
SOC 平臺(tái)的核心部分是內(nèi)嵌的處理內(nèi)核,其硬件是固定的,軟件則是可編程的;外圍電路則由 FPGA 的邏輯資源組成,大都以 IP 的形式提供,例如存儲(chǔ)器接口、USB 接口以及以太網(wǎng) MAC 層接口等,用戶根據(jù)自己需要在內(nèi)核總線上添加,并能自己訂制相應(yīng)的接口 IP 和外圍設(shè)備。
基于 FPGA 的典型 SOC 開發(fā)流程為:
1、芯片內(nèi)的考慮
從設(shè)計(jì)生成開始,設(shè)計(jì)人員需要從硬件 / 軟件協(xié)同驗(yàn)證的思路入手,以找出只能在系統(tǒng)集成階段才會(huì)被發(fā)現(xiàn)的軟、硬件缺陷。然后選擇合適的芯片以及開發(fā)工具,在綜合過程得到優(yōu)化,隨后進(jìn)行精確的實(shí)現(xiàn),以滿足實(shí)際需求。由于設(shè)計(jì)規(guī)模越來越大,工作頻率也到了數(shù)百兆赫茲,布局布線的延遲將變得非常重要。為了確保滿足時(shí)序,需要在布局布線后進(jìn)行靜態(tài)時(shí)序分析,對(duì)設(shè)計(jì)進(jìn)行驗(yàn)證。
2、板級(jí)驗(yàn)證
在芯片設(shè)計(jì)完畢后,需要再進(jìn)行板級(jí)驗(yàn)證,以便在印刷電路板(PCB) 上保證與最初設(shè)計(jì)功能一致。因此,PCB 布局以及信號(hào)完整性測(cè)試應(yīng)被納入設(shè)計(jì)流程。由于芯片內(nèi)設(shè)計(jì)所做的任何改變都將反映在下游的設(shè)計(jì)流程中,各個(gè)過程之間的數(shù)據(jù)接口和管理也必須是無誤的。預(yù)計(jì) SOC 系統(tǒng)以及所必須的額外過程將使數(shù)據(jù)的大小成指數(shù)增長(zhǎng),因此,管理各種數(shù)據(jù)集本身是急劇挑戰(zhàn)性的任務(wù)。
聽過了太多國(guó)產(chǎn) EDA 工具、FPGA 芯片的報(bào)道,很全面,也都能站在國(guó)家戰(zhàn)略,資本市場(chǎng)等多個(gè)宏觀角度去思考、分析問題。但我想,對(duì)于普通開發(fā)者而言,我們當(dāng)然相信前途是很美好的,但我們也很關(guān)心 EDA 工具是否穩(wěn)定,比如說:
1 500M 的芯片,跑不了 50M 的邏輯,EDA 工具都經(jīng)歷了什么?
2 簡(jiǎn)單的邏輯就導(dǎo)致布線的擁塞?
3 在線邏輯分析儀抓不到想要的信號(hào)?
以上是MYMINIEYE 的 Mill 和高云半導(dǎo)體市場(chǎng)副總裁 Paul(黃?。募夹g(shù)的角度聊聊 EDA 工具和 FPGA 芯片。Mill 有著多年的 FPGA 產(chǎn)品開發(fā)經(jīng)驗(yàn),而 Paul 也在國(guó)內(nèi)外原廠有著多年的技術(shù)及市場(chǎng)經(jīng)驗(yàn),因此,從開發(fā)者和原廠的角度一起探討 FPGA 開發(fā)核心技術(shù)問題,說出 FPGA 原廠背后的有趣故事。
責(zé)任編輯:gt
評(píng)論
查看更多