0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA的詳細(xì)開發(fā)流程

CHANBAEK ? 來源:新芯設(shè)計 ? 作者:新芯設(shè)計 ? 2023-07-04 14:37 ? 次閱讀

引言

??FPGA 的詳細(xì)開發(fā)流程就是利用 EDA 開發(fā)工具對 FPGA 芯片進(jìn)行開發(fā)的過程,所以 FPGA 芯片開發(fā)流程講的并不是芯片的制造流程,區(qū)分于 IC 設(shè)計制造流程喲(芯片制造流程多麻煩,要好幾十億的費(fèi)用呢,而且國內(nèi)也貌似沒有哪家像樣的 Foundry 廠,除了臺灣的 TSMC 在世界有立足之地,F(xiàn)abless 的 IC 設(shè)計公司倒是挺強(qiáng)的如 Hisilicon,這也是它為什么會被 USA 針對的原因)。

??例如,基于標(biāo)準(zhǔn)單元與基于 FPGA 的 APR 自動布局布線的區(qū)別在于:FPGA 內(nèi)部的邏輯單元以及走線資源都是固定的,布局布線工具只是完成如何使用這些資源以使得整個設(shè)計收斂;而基于標(biāo)準(zhǔn)單元的 APR 的標(biāo)準(zhǔn)單元位置以及走線資源都是自己設(shè)計調(diào)整的,所以靈活性更大,更加容易使得整個設(shè)計收斂。

??如下所示,主要包括電路設(shè)計、設(shè)計輸入、綜合(優(yōu)化)、布局布線(實現(xiàn)與優(yōu)化)、編程配置五大步驟,其中,還有功能仿真、靜態(tài)仿真、時序仿真三大仿真,以及綜合約束、布局布線約束(包括位置約束和時序約束)兩大約束等等。

圖片

FPGA 的詳細(xì)開發(fā)流程

一、電路設(shè)計(FPGA Design)

??Before FPGA Design:在電路設(shè)計之前,首先要進(jìn)行的是算法的設(shè)計與驗證、方案論證、架構(gòu)設(shè)計和 FPGA 芯片選型等等準(zhǔn)備工作;算法工程師可以在 PythonMatlab 設(shè)計中完成,而至于算法是怎么來的,通常是根據(jù)市場需求來開發(fā)的,這個就不在本次討論之中了。系統(tǒng)工程師根據(jù)任務(wù)要求,如系統(tǒng)的指標(biāo)和復(fù)雜度、成本、功能性和穩(wěn)定性、性能、對工作速度(延時和工作頻率)和芯片本身的各種資源、功耗等等方面進(jìn)行權(quán)衡(紅色加粗部分也是數(shù)字電子系統(tǒng)的五大設(shè)計目標(biāo)),選擇合理的設(shè)計方案(浮點定點、設(shè)計優(yōu)化)和合適的 FPGA 器件類型(如 Cylone、Spartan、Artix、Virtex、Kintex、還是 Zynq 或者是 Zynq UltraScale + 等等)。

??FPGA Design:電路設(shè)計方法分為自底向上和自頂向下的設(shè)計方法;通常都采用自頂向下的設(shè)計方法:從系統(tǒng)設(shè)計開始,逐漸向子系統(tǒng)設(shè)計、模塊設(shè)計、器件設(shè)計、版圖設(shè)計等等更加物理的層次推進(jìn),直到可以直接使用 EDA 元件庫為止,能夠先勾勒出來電路了,才開始 Coding(記住,Coding Style 也很重要喲)。

圖片

電路設(shè)計流程

二、設(shè)計輸入(Design Entry)

??設(shè)計輸入指的是將設(shè)計者所涉及的電路以開發(fā)軟件要求的某種形式表達(dá)出來,并輸入到相應(yīng)的軟件中的過程。最常見的設(shè)計輸入的表達(dá)方式為 IP 核、原理圖(Schematic)和 HDL 文本輸入。

??這里的 IP 按照來源的不同可以分為三類,第一種是來自前一個設(shè)計創(chuàng)建的模塊(Design by Yourself),第二種是 FPGA 廠家,第三種就是來自 IP 廠商。而按照產(chǎn)品交付的形式,IP 核又分為軟核(HDL 或 Netlist 形式的功能塊,如 MicroBlaze 軟核)、硬核(版圖形式,提供設(shè)計的最終階段產(chǎn)品,即掩膜,如 Zedboard 的 ARM Cortex-A9)、固核(Netlist 形式,完成了綜合與布局布線的功能塊,只能基于特定芯片的 IP 核)。

??FPGA 廠家和 IP 廠商可以在 FPGA 開發(fā)的不同時期提供給我們不同的 IP,我們暫且知道他們分別是未加密的 RTL 級 IP、加密的 RTL 級 IP、未經(jīng)布局布線的網(wǎng)表級 IP、布局布線后的網(wǎng)表級 IP。

三、綜合(Synthesis)

??無論是什么樣的設(shè)計輸入,最終都要通過綜合,生成統(tǒng)一的網(wǎng)表形式,從而與 FPGA 硬件資源互相匹配。例如,F(xiàn)PGA 是基于 LUT 結(jié)構(gòu)的,那么就綜合出一個基于 LUT 的門級網(wǎng)表文件(不同于 IC 的綜合)。

??IC 綜合指的是將高級抽象層次的設(shè)計描述自動轉(zhuǎn)化為較低層次描述的過程,或者說,綜合器就是能夠?qū)?Schematic 或者 HDL 文本語言描述的電路,編譯成由與或陣列、RAM、觸發(fā)器、寄存器等邏輯單元組成的電路結(jié)構(gòu)的門級網(wǎng)表文件的工具,即 RTL - to - Netlist。

??綜合包括編譯、映射和優(yōu)化,編譯就是 HDL → 門級網(wǎng)表,映射就是門級網(wǎng)表 → LUT,優(yōu)化就是優(yōu)化設(shè)計。

??在 Altera 的開發(fā)流程中,編譯和映射的過程叫做綜合,而在 Xilinx 的開發(fā)流程中,由設(shè)計輸入得到門級網(wǎng)表的過程叫做綜合。

??綜合的形式如下所示:

  • 將算法、行為描述轉(zhuǎn)換到 RTL 級(Register Transfer Level)(寄存器傳輸級),即從行為描述到結(jié)構(gòu)描述。
  • 將 RTL 級描述轉(zhuǎn)換到邏輯門級(包括觸發(fā)器),稱為邏輯綜合。
  • 將邏輯門表示轉(zhuǎn)換到版圖表示,或者 PLD 器件的配置網(wǎng)表表示;根據(jù)版圖信息能夠進(jìn)行 ASIC 生產(chǎn),有了配置網(wǎng)表可完成基于 PLD 器件的系統(tǒng)實現(xiàn)。

??數(shù)字系統(tǒng)設(shè)計器件如下所示:

  • 數(shù)字系統(tǒng)器件的實現(xiàn)從以前的 PLA(可編程邏輯陣列)、PAL(可編程陣列邏輯)、GAL(通用陣列邏輯)發(fā)展到如今的 PLD(可編程邏輯器件 Programmable Logic Device)(包括現(xiàn)場可編程門陣列 FPGA(Field Programmable Gate Array)和復(fù)雜可編程邏輯器件 CPLD(Complex Programmable Logic Device))(半定制)、ASIC(專用集成電路 Application Specific Integrated Circuits)(全定制)。
  • 軟件程序編譯器是將 C 或匯編語言等編寫的程序編譯為 0 1 代碼流,而硬件綜合器是將 Verilog HDL 等語言編寫的程序轉(zhuǎn)化為具體的電路門級網(wǎng)表。
  • 在電路設(shè)計中,網(wǎng)表(Netlist)是用于描述電路元件相互之間連接關(guān)系的,一般來說是一個遵循某種比較簡單的標(biāo)記語法的文本文件(百度百科 門級網(wǎng)表);綜合就是邏輯綜合器根據(jù)約束條件把 Verilog HDL 或 VHDL 描述的 RTL 級設(shè)計,轉(zhuǎn)換為可與 FPGA/CPLD 的門陣列基本結(jié)構(gòu)相映射的網(wǎng)表文件。

四、布局布線(Place & Route)

??談及布局布線之前,首先要談到實現(xiàn)(Implementation)。實現(xiàn)就是將綜合生成的門級網(wǎng)表配置到具體的 FPGA 芯片上,而布局布線就是其中最重要的過程。Vivado 中的實現(xiàn)具體如下所示,分為設(shè)計初始化(Design Initialization)、優(yōu)化設(shè)計(Opt Design)、功耗優(yōu)化設(shè)計(Power Opt Design)、布局設(shè)計(Place Design)、后布局功耗優(yōu)化設(shè)計(Post-Place Power Opt Design)、后布局物理優(yōu)化設(shè)計(Post-Place Phys Opt Design)、布線設(shè)計(Route Design)、后布線物理優(yōu)化設(shè)計(Post-Route Phys Opt Design)、生成比特流(Write Bitstream)。

圖片

布局布線流程

??布局布線指的是將綜合生成的電路門級網(wǎng)表映射到具體的目標(biāo)器件中實現(xiàn),并產(chǎn)生最終的可下載文件的過程。

  • 布局是將已分割的邏輯小塊放到器件內(nèi)部邏輯資源的具體位置,并使它們易于連線;
  • 布線則是利用器件的布線資源完成各功能模塊之間和反饋信號之間的連接。

??布局布線完成之后將產(chǎn)生如下一些重要的文件:

  • 芯片資源耗用情況報告;
  • 面向其他 EDA 工具的輸出文件,如 EDIF 文件等;
  • 產(chǎn)生延時網(wǎng)表結(jié)構(gòu),以便于進(jìn)行精確的時序仿真,這時候的仿真結(jié)果能夠比較精確地預(yù)測未來芯片的實際性能。如果仿真結(jié)果達(dá)不到設(shè)計要求,就需要修改源代碼或者選擇不同速度的器件,直至滿足設(shè)計要求,例如普通加法器改為超前進(jìn)位加法器,普通乘法器改為 Booth 乘法器等等,通過減少關(guān)鍵路徑來滿足時序要求;
  • 器件編程文件:如用于 FPGA 配置的 SOF,JAM,BIT 等格式的文件,用于 CPLD 編程的 JEDEC,POF 等格式的文件。由于布局布線與芯片的物理結(jié)構(gòu)直接相關(guān),所以一般選擇芯片制造商提供的開發(fā)工具進(jìn)行此項工作。

五、約束(Constraint)

??約束分為綜合約束(一級約束)和布局布線約束(二級約束),綜合約束如資源共享約束(不同的約束將會導(dǎo)致生成不同性能的電路),布局布線約束又可以分為位置約束、時序約束。

??約束,就是對這些操作環(huán)節(jié)定制規(guī)則,定制條件,比如引腳約束和時序約束;一般開發(fā)環(huán)境會對這些約束有個默認(rèn),這些默認(rèn)的設(shè)置對大部分情況下還是適用的,但是通常布局布線約束中的 I/O 約束是我們每一個工程都必須給定的。

六、仿真(Simulation)

??仿真指的是對所設(shè)計電路功能的驗證。仿真包括(功能)RTL 仿真、(門級)靜態(tài)仿真和時序仿真。

  • RTL 仿真:就是對你的 HDL 代碼仿真,對你的 RTL 級描述的設(shè)計進(jìn)行測試;RTL 仿真,又叫功能仿真,也稱為前仿真,是在編譯之前對用戶所設(shè)計的電路進(jìn)行邏輯功能驗證,此時的仿真沒有任何延遲信息,是處于理想化狀態(tài)的,例如對于一個寄存器(Register),它的輸出端(Q Port)相對它的時鐘輸入端(Clk Port)的延時為零延時(Delta Delay),是僅對初步的功能進(jìn)行驗證的。
  • 靜態(tài)仿真:指對綜合之后的 LUT 門級網(wǎng)表進(jìn)行仿真;靜態(tài)仿真,又叫門級仿真,也稱為綜合后仿真,在仿真時,把綜合生成的標(biāo)準(zhǔn)延時文件 SDF 反標(biāo)注到綜合仿真模型中去,可估計門延時帶來的影響,但不能估計線延時,此時的仿真也并不是十分準(zhǔn)確,和布局布線后的實際情況還是有一定差距的。
  • 時序仿真:在選擇具體器件并完成布局布線后進(jìn)行的包含延時的仿真;時序仿真,又叫布局布線后仿真,是指將布局布線的延時信息反標(biāo)注到設(shè)計網(wǎng)表中來檢測有無時序違規(guī)的現(xiàn)象(即是否滿足時序約束條件或器件固有的時序規(guī)則,如建立時間、保持時間等等;而此時,不同器件的內(nèi)部延時都不太一樣,不同的布局、布線方案所生成的延時也不太一樣);時序仿真包含的延遲信息最全,也最精確,能較好地反映芯片的實際工作情況。

??從驗證完整性而言,前端仿真和后端仿真均需要在項目中實施,而它們側(cè)重的目標(biāo)也有不同。前端仿真是為了檢測出功能邏輯的缺陷,而后端仿真是為了檢測出實際門級電路中由于延時問題可能導(dǎo)致采樣失敗進(jìn)而產(chǎn)生的功能缺陷。

七、編程配置(Program & Configuration)

??編程配置就是生成比特流并載入 FPGA 芯片中的一個過程。

  • 把布局布線后生成的編程文件裝入 PLD 器件中的過程稱為下載。
  • 通常將對基于 EEPROM 工藝的非易失結(jié)構(gòu) CPLD 器件的下載稱為編程;一般芯片編程是指產(chǎn)生使用的數(shù)據(jù)文件(如比特流文件(.bit)),然后將編程數(shù)據(jù)下載到 FPGA 芯片中。
  • 而將基于 SRAM 工藝結(jié)構(gòu)的 FPGA 器件的下載稱為配置。
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21736

    瀏覽量

    603419
  • 電路設(shè)計
    +關(guān)注

    關(guān)注

    6675

    文章

    2453

    瀏覽量

    204366
  • IC設(shè)計
    +關(guān)注

    關(guān)注

    38

    文章

    1296

    瀏覽量

    103957
  • 開發(fā)流程
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

    7884
  • 時序仿真
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    7425
收藏 人收藏

    評論

    相關(guān)推薦

    FPGA開發(fā)流程簡介

    FPGA開發(fā)基本流程包括:設(shè)計輸入、設(shè)計仿真、設(shè)計綜合、布局布線,它們的連接關(guān)系如圖1 所示。
    發(fā)表于 06-10 08:24 ?1740次閱讀

    FPGA開發(fā)流程及仿真技術(shù)解析

    FPGA開發(fā)流程是遵循著ASIC的開發(fā)流程發(fā)展的,發(fā)展到目前為止,FPGA
    發(fā)表于 01-06 11:19 ?1910次閱讀

    使用QUARTUS II做FPGA開發(fā)流程,傻瓜式詳細(xì)教程

    本帖最后由 eehome 于 2013-1-5 09:45 編輯 使用QUARTUS_II做FPGA開發(fā)流程,傻瓜式詳細(xì)教程
    發(fā)表于 03-08 16:26

    例說FPGA連載8:FPGA開發(fā)流程

    例說FPGA連載8:FPGA開發(fā)流程特權(quán)同學(xué),版權(quán)所有配套例程和更多資料下載鏈接:http://pan.baidu.com/s/1c0nf6Qc 如圖1.9所示。這個
    發(fā)表于 07-13 17:25

    FPGA基本開發(fā)流程概述

    FPGA入門:基本開發(fā)流程概述 在第一章中,已經(jīng)給出了FPGA/CPLD的基本開發(fā)流程圖。這里
    發(fā)表于 01-28 02:29

    FPGA開發(fā)流程

    如圖1.6所示。這個流程圖是一個相對比較高等級的FPGA開發(fā)流程,從項目的提上議程開始,設(shè)計者需要進(jìn)行FPGA功能的需求分析,然后進(jìn)行模塊的
    發(fā)表于 01-28 04:24

    FPGA開發(fā)流程及編程思想

    FPGA開發(fā)流程及編程思想,好東西,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-18 15:17 ?31次下載

    FPGA開發(fā)流程

    FPGA開發(fā)流程,好東西,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-18 15:17 ?33次下載

    FPGA開發(fā)流程詳細(xì)解析

    1. FPGA 開發(fā)流程: 電路設(shè)計與設(shè)計輸入 ;仿真驗證:利用Xilinx集成的仿真工具足矣 ;邏輯綜合:利用XST(Xilinx Synthesis Tool)工具 ;布局布線:利用Xilinx
    發(fā)表于 01-12 03:59 ?1w次閱讀

    FPGA的設(shè)計流程是怎么樣的?FPGA設(shè)計流程指南詳細(xì)資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的設(shè)計流程是怎么樣的?FPGA設(shè)計流程指南詳細(xì)資料免費(fèi)下載內(nèi)
    發(fā)表于 10-17 17:50 ?31次下載
    <b class='flag-5'>FPGA</b>的設(shè)計<b class='flag-5'>流程</b>是怎么樣的?<b class='flag-5'>FPGA</b>設(shè)計<b class='flag-5'>流程</b>指南<b class='flag-5'>詳細(xì)</b>資料免費(fèi)下載

    FPGA視頻教程之FPGA開發(fā)流程詳細(xì)資料概述

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之FPGA開發(fā)流程詳細(xì)資料概述免費(fèi)下載。
    發(fā)表于 03-01 11:35 ?11次下載
    <b class='flag-5'>FPGA</b>視頻教程之<b class='flag-5'>FPGA</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>的<b class='flag-5'>詳細(xì)</b>資料概述

    FPGA視頻教程之NIOS II開發(fā)流程詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之NIOS II開發(fā)流程詳細(xì)資料說明主要目的是:1.完整的嵌入式
    發(fā)表于 03-22 13:59 ?11次下載
    <b class='flag-5'>FPGA</b>視頻教程之NIOS II<b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>的<b class='flag-5'>詳細(xì)</b>資料說明

    FPGA教程之ISE設(shè)計流程簡介的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA教程之ISE設(shè)計流程簡介的詳細(xì)資料說明。
    發(fā)表于 04-04 17:18 ?15次下載
    <b class='flag-5'>FPGA</b>教程之ISE設(shè)計<b class='flag-5'>流程</b>簡介的<b class='flag-5'>詳細(xì)</b>資料說明

    關(guān)于FPGA它的開發(fā)流程是怎樣的

    FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進(jìn)行開發(fā)的過程。FPGA
    發(fā)表于 11-06 15:17 ?2466次閱讀

    FPGA開發(fā)流程以及它的適用場景

    FPGA的設(shè)計流程就是利用EDA開發(fā)軟件和編程工具對FPGA芯片進(jìn)行開發(fā)的過程。FPGA
    發(fā)表于 11-20 15:06 ?1799次閱讀