1. XILINXISE傳統(tǒng)賽靈思FPGA設(shè)計(jì)流程
利用Xilinx ISE軟件開發(fā)FPGA的基本流程包括代碼輸入、功能仿真、綜合、綜合后仿真、實(shí)現(xiàn)、布線后仿真與驗(yàn)證和下班調(diào)試等步驟。如下圖所示。
1)電路設(shè)計(jì)或代碼輸入
FPGA的設(shè)計(jì)可以直接畫原理圖,但是這種方法在比較復(fù)雜的系統(tǒng)的情況下,原理圖相當(dāng)復(fù)雜,所以慢慢被淘汰,ISE保留這一功能。
現(xiàn)在FPGA的設(shè)計(jì)輸入主要是Verilog 和 VHDL硬件語(yǔ)言。Verilog語(yǔ)言語(yǔ)法簡(jiǎn)單,在亞洲區(qū)域使用比較廣泛;
VHDL被IEEE和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言 ,在歐洲區(qū)域比較常見。
2)功能仿真
在基本的FPGA模塊編寫完成后,要使用仿真工具對(duì)設(shè)計(jì)的模塊進(jìn)行仿真,驗(yàn)證模塊的基本功能是否符合設(shè)計(jì)。功能仿真也被稱為前仿真。常用的仿真工具有
Model Tech公司的Modelsim, Synopsys公司的VCS,Cadence公司的NC-Verilog和NC-VHDL。功能仿真可以加快FPGA的設(shè)計(jì),減少設(shè)計(jì)過程中的錯(cuò)誤。
3)綜合
綜合優(yōu)化(Synthesize)是將硬件語(yǔ)言或原理圖等設(shè)計(jì)輸入翻譯成由與,或,非門、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接(網(wǎng)表),并根據(jù)約束條件優(yōu)化生成的邏輯連接,輸出edf和edn等文件。
4) 實(shí)現(xiàn)
實(shí)現(xiàn)可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,決定邏輯的最佳布局,選擇邏輯與輸入輸出功能連接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)文件(如配置文件與相關(guān)報(bào)告)。通??煞譃槿缦挛鍌€(gè)步驟。
(1)轉(zhuǎn)換:將多個(gè)設(shè)計(jì)文件進(jìn)行轉(zhuǎn)換并合并到一個(gè)設(shè)計(jì)庫(kù)文件中。
(2)映射:將網(wǎng)表中邏輯門映射成物理元素,即把邏輯設(shè)計(jì)分割到構(gòu)成可編程邏輯陣列內(nèi)的可配置邏輯塊與輸入輸出塊及其它資源中的過程。
(3)布局與布線:布局是指從映射取出定義的邏輯和輸入輸出塊,并把它們分配到FPGA內(nèi)部的物理位置,通?;谀撤N先進(jìn)的算法,如最小分割、模擬退火和一般的受力方向張弛等來完成;布線是指利用自動(dòng)布線軟件使用布線資源選擇路徑試著完成所有的邏輯連接。因最新的設(shè)計(jì)實(shí)現(xiàn)工具是時(shí)序驅(qū)動(dòng)的,即在器件的布局布線期間對(duì)整個(gè)信號(hào)通道執(zhí)行時(shí)序分析,因此可以使用約束條件操作布線軟件,完成設(shè)計(jì)規(guī)定的性能要求。在布局布線過程中,可同時(shí)提取時(shí)序信息形成報(bào)靠。
(4)時(shí)序提取:產(chǎn)生一反標(biāo)文件,供給后續(xù)的時(shí)序仿真使用。
(5)配置:產(chǎn)生FPGA配置時(shí)的需要的位流文件。在實(shí)現(xiàn)過程中可以進(jìn)行選項(xiàng)設(shè)置。因其支持增量設(shè)計(jì),可以使其重復(fù)多次布線,且每次布線利用上一次布線信息以使布線更優(yōu)或達(dá)到設(shè)計(jì)目標(biāo)。在實(shí)現(xiàn)過程中應(yīng)設(shè)置默認(rèn)配置的下載形式,以使后續(xù)位流下載正常。
5) 時(shí)序分析在設(shè)計(jì)實(shí)現(xiàn)過程中,在映射后需要對(duì)一個(gè)設(shè)計(jì)的實(shí)際功能塊的延時(shí)和估計(jì)的布線延時(shí)進(jìn)行時(shí)序分析;而在布局布線后,也要對(duì)實(shí)際布局布線的功能塊延時(shí)和實(shí)際布線延時(shí)進(jìn)行靜態(tài)時(shí)序分析。從某種程序來講,靜態(tài)時(shí)序分析可以說是整個(gè)FPGA設(shè)計(jì)中最重要的步驟,它允許設(shè)計(jì)者詳盡地分析所有關(guān)鍵路徑并得出一個(gè)有次序的報(bào)告,而且報(bào)告中含有其它調(diào)試信息,比如每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)的扇出或容性負(fù)載等。靜態(tài)時(shí)序分析器可以用來檢查設(shè)計(jì)的邏輯和時(shí)序,以便計(jì)算各通中性能,識(shí)別可靠的蹤跡,檢測(cè)建立和保持時(shí)間的配合,時(shí)序分析器不要求用戶產(chǎn)生輸入激勵(lì)或測(cè)試矢量。雖然Xilinx與Altera在FPGA開發(fā)套件上擁有時(shí)序分析工具,但在擁有第三方專門時(shí)序分析工具的情況下,僅利用FPGA廠家設(shè)計(jì)工具進(jìn)行布局布線,而使用第三方的專門時(shí)序分析工具進(jìn)行時(shí)序分析,一般FPGA廠商在其設(shè)計(jì)環(huán)境下皆有與第三方時(shí)序分析工具的接口。Synopsys公司的PrimeTime是一個(gè)很好的時(shí)序分析工具,利用它可以達(dá)到更好的效果。將綜合后的網(wǎng)表文件保存為db格式,可在PrimeTime環(huán)境下打開。利用此軟件查看關(guān)鍵路徑或設(shè)計(jì)者感興趣的通路的時(shí)序,并對(duì)其進(jìn)行分析,再次對(duì)原來的設(shè)計(jì)進(jìn)行時(shí)序結(jié)束,可以提高工作主頻或減少關(guān)鍵路徑的躚時(shí)。與綜合過程相似,靜態(tài)時(shí)序分析也是一個(gè)重復(fù)的過程,它與布局布線步驟緊密相連,這個(gè)操作通常要進(jìn)行多次直到時(shí)序約束得到很好的滿足。
在綜合與時(shí)序仿真過程中交互使用PrimeTime進(jìn)行時(shí)序分析,滿足設(shè)計(jì)要求后即可進(jìn)行FPGA芯片投片前的最終物理驗(yàn)證。
6)調(diào)試與加載配置
設(shè)計(jì)開發(fā)的最后步驟就是在線調(diào)試或者將生成的配置文件寫入芯片中進(jìn)行測(cè)試。在ISE中使用iMPACT。
2. XILINXVIVADO傳統(tǒng)FPGA設(shè)計(jì)流程
Xilinx針對(duì)7系列FPGA、Zynq-7000 SOC FPGA和UltraScale芯片,為提升設(shè)計(jì)、集成和實(shí)現(xiàn)的效率,推出了全新的開發(fā)工具Vivado。
使用Vivado設(shè)計(jì)FPGA的基本流程如下圖
在設(shè)計(jì)輸入階段,除傳統(tǒng)的HDL代碼,Vivado還可以接受Vivado HLS生成的HDL代碼、System Generator模型輸出文件、IP Integrator模型以及IP。
在Vivado下,約束(時(shí)序約束和物理約束)采用XDC(xilinx Design Constraints)。
3. SOCFPGA設(shè)計(jì)流程
針對(duì)SOC FPGA的開發(fā),xilinx在Vivado中專門設(shè)置了一個(gè)工具IP Integrator。
IP Integrator作為IP集成工具,以圖形化、模塊化的方式在設(shè)計(jì)中添加IP、連接端口。
Zynq芯片由兩部分組成,分別是PS和PL兩部分,相應(yīng)地需要硬件編程和軟件編程。硬件編程使用Vivado,軟件編程使用SDK,具體流程見下圖。
借助Matlab完成Zynq開發(fā),如下圖。在Matlab下即可完成算法建模到C代碼和RTL代碼的生成。