vivado 综合与实现
綜合,簡單來說就是把RTL代碼轉(zhuǎn)換成后FPGA基本單元,綜合分好幾步,translate,代碼轉(zhuǎn)成基本的與或非等器件無關(guān)的邏輯電路;map,邏輯電路映射成FPGA基本單元,比如LUT,RAM,進位鏈和一些硬core之類的。
然后implementation,主要包含兩步,placement,布局,把綜合后的基本單元放到器件的各個位置;routing,布線,也就是把各個單元連接起來;一般還加一步physical synthesis,主要是為了優(yōu)化后端時序。布局布線是很關(guān)鍵的,廠家都有不同的算法,時序優(yōu)先,資源優(yōu)先,功耗優(yōu)先等。為了滿足時序要求,工具要做很多輪迭代,或者跑好多種子,如果是大片子,資源占用率又高,跑10幾個小時都正常。布局布線算法,是提高芯片可用性的關(guān)鍵,也是廠家的核心競爭力。
一、FPGA設(shè)計流程
FPGA設(shè)計流程是利用EDA開發(fā)軟件和編程工具對FPGA芯片進行開發(fā)的過程。FPGA的設(shè)計流程如上圖所示:包括設(shè)計定義、代碼實現(xiàn)、功能仿真、邏輯綜合、前仿真、布局布線、后仿真和板級調(diào)試等步驟!
1.設(shè)計定義
設(shè)計定義階段主要進行方案驗證、系統(tǒng)設(shè)計和FPGA芯片選型等準備工作。根據(jù)任務要求,評估系統(tǒng)的指標和復雜度,對工作速度和芯片本身的資源、成本等方面進行權(quán)衡,選擇合理的設(shè)計方案和合適的器件類型。
這個階段往往會花費大量的時間,這個階段之后一般已經(jīng)完成了系統(tǒng)建模,功能劃分,模塊劃分以及設(shè)計文檔的撰寫等工作。
2.代碼實現(xiàn)
代碼實現(xiàn)階段是將劃分好的各功能模塊用硬件描述語言表達出來,常用的硬件描述語言有Verilog HDL和VHDL。以后的教程中我們主要講解如何使用Verilog HDL進行FPGA設(shè)計。
下面是一個四選一電路的代碼實現(xiàn)過程:
四選一電路的代碼實現(xiàn)過程
常用的代碼編輯器軟件有notepad++和UltralEdit等,它們支持幾乎所有主流編程語言的高亮顯示、代碼補全、自定義快捷鍵等功能,外觀漂亮、功能強大,擴展性強,具有豐富的插件包,極大的提高工作效率。
3.功能仿真
功能仿真是在編譯之前對用戶所設(shè)計的電路進行邏輯功能驗證,此時的仿真沒有延遲信息,僅對初步的功能進行檢測。這里我們補充一個延遲類型的知識點:
期間延遲和路徑延遲
我們知道信號在電路中傳輸時會有兩種延遲:器件延遲和路徑延遲。
顧名思義,器件延遲是信號在經(jīng)過器件傳輸時的延遲時間,器件延遲與器件本身特質(zhì)相關(guān);路徑延遲是信號經(jīng)過連接線時的延遲時間,與連線長度成正比。
上圖中信號從a到b的延遲時間為T1+T2+T3+T4+T5,其中器件延遲是T1、T3、T5,路徑延遲是T2、T4。在功能仿真中,這些延遲信息都為零。
4.邏輯綜合
邏輯綜合的概念是:將高級抽象層次的語言描述轉(zhuǎn)化成較低層次的電路結(jié)構(gòu)。
也就是說將硬件描述語言描述的電路邏輯轉(zhuǎn)化成與門、或門、非門、觸發(fā)器等基本邏輯單元的互連關(guān)系,也就是我們常說的門級網(wǎng)表。。
還是以四選一電路為例,綜合過程將Verilog代碼翻譯成了門級互連網(wǎng)表。
四選一電路的綜合過程
綜合的概念很重要,利用Verilog 做電路設(shè)計時我們總是強調(diào)可綜合的概念,可綜合就是我們的這段代碼可以被翻譯成門級電路,不可綜合就是代碼不能被翻譯成與之對應的門級電路。
綜合是創(chuàng)造性的轉(zhuǎn)化過程,它不但能翻譯我們的電路,還能夠優(yōu)化我們的電路,比如去除電路描述中冗余的電路結(jié)構(gòu),或者復用功能相同的電路結(jié)構(gòu)。
Verilog中可綜合的語法多用于電路設(shè)計,那么為什么還要有不可綜合的語法呢?不可綜合的語法用于仿真測試。后續(xù)的教程中會講解可綜合和不可綜合的Verilog語法。
5.前仿真
前仿真也叫做綜合后仿真,仿真時,把綜合生成的標準延時文件反標注到綜合仿真模型中去。
因為綜合后只能體現(xiàn)基本的邏輯門之間的互連關(guān)系,并不是實物電路,沒有連線長度信息,所以前仿真只能評估門延時帶來的影響,不能估計路徑延時,前仿真結(jié)果和布線后實際情況還有一定的差距,并不十分準確。
目前的綜合工具較為成熟,一般的設(shè)計可以省略這一步。但如果布局布線后發(fā)現(xiàn)電路功能與設(shè)計意圖不符,就需要回溯到前仿真來確定問題所在。
6.布局布線
綜合后生成的門級網(wǎng)表只是表示了門與門之間虛擬的連接關(guān)系,并沒有規(guī)定每個門的位置以及連線長度等。布局布線就是一個將門級網(wǎng)表中的門的位置以及連線信息確定下來的過程。
綜合后生成的門級網(wǎng)表只是虛擬的連接關(guān)系,并沒有反應到實物上去。布局布線有時也叫作實現(xiàn)與布局布線,布局布線將邏輯網(wǎng)表中的門級連接關(guān)系配置到FPGA芯片內(nèi)部的固有硬件結(jié)構(gòu)上。布局布線過程將每一個門實際配置到固定位置的可編程邏輯塊(CLB)中,
布局布線過程
在解釋布局布線之前,我們先回顧一下FPGA的結(jié)構(gòu),我們知道FPGA可重復編程的基礎(chǔ)是擁有巨量的可配置邏輯塊(CLB)、豐富的布線資源以及其他資源
①布局
布局的過程就是將門級網(wǎng)表中的每一個門“安置”到CLB中的過程,這個過程是一個映射的過程。
②布線
布線是利用FPGA中豐富的布線資源將CLB根據(jù)邏輯關(guān)系連接在一起的過程。
邏輯門的映射位置不是隨意的,是FPGA設(shè)計軟件經(jīng)過算法計算后精心排列的一般的布局布線策略是占用最少的CLB并且連線盡量短,也就是面積和速度最優(yōu)。
布局布線策略有兩種:速度優(yōu)先和面積優(yōu)先,往往不能同時達到兩者皆最優(yōu),所以布局布線時需要在速度最優(yōu)和面積最優(yōu)之間做出選擇。
一般的布局布線策略是占用最少的CLB并且連線盡量短,也就是面積和速度最優(yōu)。
布局布線策略有兩種:速度優(yōu)先和面積優(yōu)先,往往不能同時達到兩者皆最優(yōu),所以布局布線時需要在速度最優(yōu)和面積最優(yōu)之間做出選擇。
布局布線后就可以進行靜態(tài)時序分析了,靜態(tài)時序分析的方法是在布局布線后的實際電路中尋找寄存器和寄存器之間的最長路徑延遲,通過最大延遲可以得出系統(tǒng)最大時鐘速率。靜態(tài)時序分析也是EDA工具自動完成,延遲路徑信息可以在生成的時序報告中分析。時序分析的概念以后的教程中也會細講。
7.后仿真
后仿真也稱為時序仿真,是將布局布線的延時信息反標注到設(shè)計網(wǎng)表中來檢測有無時序違規(guī)。
經(jīng)過布局布線后,門與門之間的連線長度也確定了,所以后仿真包含的延遲信息最全,也最精確,能更好的反映芯片的額實際工作情況。
現(xiàn)在我們可以總結(jié)一下功能仿真、前仿真和后仿真的區(qū)別了:
功能仿真:無延遲信息;
前仿真:只有門級的延遲;
后仿真:門級延遲和連線延遲;
8.板級調(diào)試
我們的FPGA設(shè)計不能只在電腦上跑仿真,最終還是要在電路板上應用起來的,設(shè)計的最后一步就是板級測試了,將EDA軟件產(chǎn)生的數(shù)據(jù)文件(位數(shù)據(jù)流文件)下載到FPGA芯片中,進行實際的測試。
FPGA工程師還需要有一定的硬件知識,能夠看懂電路板原理圖設(shè)計和PCB是最低要求了,能夠獨立設(shè)計原理圖是最好的了。
打個比方。。。
為了方便初學者門能更快的了解FPGA的設(shè)計流程,我舉了一個栗子,請看下圖:
FPGA的設(shè)計流程可以用蓋房子的過程類比
代碼實現(xiàn),綜合和布局布線時FPGA設(shè)計流程中的幾個關(guān)鍵步驟,下面我們打個比方加深理解一下這幾個步驟是干什么的:
代碼實現(xiàn):比如我要蓋一座房子,我把房子的特點描述出來:比如面積100平米、帶陽臺、歐式裝修風格、挑高3米、一室兩廳一廚一衛(wèi)、臥室木地板客廳瓷磚。。。等等要求,這個描述房屋特點的過程就好比我們用Verilog描述電路功能的過程。
邏輯綜合:建筑師根據(jù)我們的要求畫出施工圖紙,施工圖紙將我的需求數(shù)字化、具體化,比如這個墻有多高,門有多寬,窗戶面積等等,這個過程就好比綜合的過程,將房屋需求翻譯成具體的數(shù)字化圖紙,只不過綜合是將電路功能翻譯成門級網(wǎng)表,建筑師干的活就是綜合工具軟件干的活。
布局布線:工人拿會根據(jù)圖紙(綜合后網(wǎng)表),用磚、水泥、鋼筋、木材等材料建造施工的過程就好比布局布線的過程。圖紙規(guī)定了一面墻,但是沒有規(guī)定具體用哪一塊磚來砌墻,工人可以自主決定用哪些磚。布局布線是根據(jù)綜合后的網(wǎng)表(施工圖紙),利用FPGA芯片內(nèi)部的可編程邏輯塊(CLB),布線資源,時鐘資源,存儲資源等搭建電路的過程。
綜合和布局布線的過程中會涉及到約束策略的問題,比如管腳約束、時鐘約束、面積和速度優(yōu)先級等。這些概念在蓋房子的過程中也有對應,比如你可以跟建筑師要求陽臺大小、臥室朝向、門窗高度等,采購建筑材料時,你也會控制成本和質(zhì)量之間的平衡。這些都類似于綜合和布局布線過程中的約束條件。
二、FPGA廠家、產(chǎn)品系列及設(shè)計軟件介紹
1.FPGA廠家
FPGA市場格局——兩大兩小
近幾年,全球半導體行業(yè)的關(guān)鍵詞就是:收購、兼并、重組,FPGA領(lǐng)域也發(fā)生了不小的變化。
目前,全球FPGA市場高度集中,被美國四家企業(yè)壟斷,呈現(xiàn)出“兩大兩小”的市場格局。“兩大”是指Xilinx(賽靈思)和Intel(因特爾),“兩小”是指Microsemi(美高森美)和Lattice(萊迪思),前兩大企業(yè)占據(jù)近90%的市場份額。
其中Intel的FPGA業(yè)務是收購自Altera公司的,現(xiàn)在的Microsemi是在2010年收購Actel后合并而來的。
2015年Lattice以6億美元收購Silicon Image公司;基于保護國家戰(zhàn)略資產(chǎn)的考慮,16年底美國總統(tǒng)特朗普下達行政指令,宣布停止具有中資背景的私募股權(quán)基金(Canyon Bridge)收購美國FPGA芯片制造商Lattice(萊迪思)的交易,要求買賣雙方完全、永久性地放棄收購。
“兩小”廠家主攻的是特殊市場,比如軍工、航天市場所用的反熔絲FPGA。反熔絲FPGA價格十分昂貴,只能燒錄一次,抗輻照能力比較強。
初學者學習Xilinx(賽靈思)和Intel(因特爾)家的FPGA就可以,官網(wǎng)資料比較多,開發(fā)板相對便宜。
2.FPGA產(chǎn)品系列
主流FPGA產(chǎn)品系列
我們只介紹Xilinx(賽靈思)和Intel(因特爾)的FPGA產(chǎn)品系列,另外兩家小眾的FPGA就不介紹了。
上面圖片中的產(chǎn)品系列是從兩家FPGA廠家官網(wǎng)上找到的當前在售的產(chǎn)品系列。
Xilinx:工具工藝制程,可以分為6系(45nm)、7系(28nm)、UltraSCALE(20nm)、UltraSCALE+(16nm),按照型號系列還可以分為Spartan、Artix、Kintex、Virtex等系列,另外還有嵌入式系統(tǒng)開發(fā)的Zynq系列。
Intel:Intel目前在售的FPGA產(chǎn)品系列主要有MAX系列、Cyclone系列、Arria系列、Stratix系列、Agilex系列以及SoC FPGA系列產(chǎn)品。
初學者如何選擇第一塊開發(fā)板:初學者一般學生居多,口袋緊張,建議選擇Xilinx Spartan6系開發(fā)板,或者Intel Cyclone IV開發(fā)板,價格應該在200左右或者200多一點。這兩種器件應該肯定能夠覆蓋初學者的設(shè)計規(guī)模。當然,如果不差錢,可以選擇更高級的開發(fā)板。
3.設(shè)計軟件
FPGA設(shè)計軟件
FPGA設(shè)計軟件的使用和FPGA的設(shè)計流程是一致的,所以學會了使用其中的一種軟件,再去使用另外的一款軟件也能很快上手。
學習FPGA一定要學習FPGA的設(shè)計思想以及設(shè)計原理,不要糾結(jié)于單一的實驗平臺或者操作軟件,因為你想在這個行業(yè)越走越高的話,廣度和深度都是要有所了解的,初期學習的時候尤其注重動手,選擇一款操作平臺以及操作軟件是為了讓你更好的去動手做,而不是讓你在這款軟件或者實驗平臺去做文章,因為不懂原理的話,換個環(huán)境你同樣是什么都不明白。
Xilinx設(shè)計軟件:
Xilinx目前開發(fā)工具包括ISE和Vivado,
ISE? design suite?支持 Spartan?-6、 Virtex?-6、和 CoolRunner? 器件,及其上一代器件系列。
Vivado? Design Suite?,針對 Virtex-7、Kintex-7、Artix-7、和 Zynq?-7000 起的全新設(shè)計。
也就是說如果你用7系以后的器件,請用Vivado,6系及以前器件請用ISE。
ISE和Vivado都有第三方仿真平臺的接口,調(diào)用最多的第三方仿真軟件就是Modelsim,ISim是ISE自身集成的仿真工具,兩者功能差不多。用modelsim的人比較多,然后教程也多,容易學。跑大型的工程,Modelsim快很多。所以我們在以后的教程中使用Modelsim演示。
Intel設(shè)計軟件:
Intel的FPGA軟件是Quartus,目前最新的版本已經(jīng)到了19版本。
分為3個版本:
英特爾? Quartus? Prime 精簡版
英特爾? Quartus? Prime 標準版
英特爾? Quartus? Prime 專業(yè)版
其中精簡版是免費的,無需付費許可,而且內(nèi)置了modelsim仿真軟件。
總結(jié)
以上是生活随笔為你收集整理的vivado 综合与实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux grub配置文件丢失,lin
- 下一篇: AF1210深信服网关配置