我學(xué)習(xí)FPGA的總結(jié)
一.序 言
1.FPGA的好處
設(shè)計(jì)工程師不在需要畫(huà)繁瑣的原理圖PCB連線,從而將工作重心轉(zhuǎn)移到功能實(shí)現(xiàn)上,極大地提高了工作效;隨著HDL(Hardware Description Language)硬件描述語(yǔ)言語(yǔ)言綜合工具及其它相關(guān)工具的推廣已經(jīng)加大的FPGA的應(yīng)用普及。
2.工程師們?cè)谑褂肍PGA時(shí)的一些壞習(xí)慣
任何事務(wù)都是一分為二的,有利就有弊。
我們發(fā)現(xiàn)現(xiàn)在越來(lái)越多的工程師不關(guān)心自己的電路實(shí)現(xiàn)形式,以為“我只要將功能描述正確,其它事情交給工具就行了”。
在這種思想影響下,工程師在用HDL語(yǔ)言描述電路時(shí),腦袋里沒(méi)有任何電路概念,或者非常模糊;也不清楚自己寫(xiě)的代碼綜合出來(lái)之后是什么樣子,映射到芯片中又會(huì)是什么樣子,有沒(méi)有充分利用到FPGA的一些特殊資源。遇到問(wèn)題,首先想到的是換速度更快、容量更大的FPGA器件,導(dǎo)致物料成本上升;更為要命的是,由于不了解器件結(jié)構(gòu),更不了解與器件結(jié)構(gòu)緊密相關(guān)的設(shè)計(jì)技巧,過(guò)分依賴綜合等工具,工具不行,自己也就束手無(wú)策,導(dǎo)致問(wèn)題遲遲不能解決,從而嚴(yán)重影響開(kāi)發(fā)周期,導(dǎo)致開(kāi)發(fā)成本急劇上升。
3.學(xué)好FPGA應(yīng)該要具備的知識(shí)
目前,我們的設(shè)計(jì)規(guī)模越來(lái)越龐大,動(dòng)輒上百萬(wàn)門(mén)、幾百萬(wàn)門(mén)的電路屢見(jiàn)不鮮。同時(shí)我們所采用的器件工藝越來(lái)越先進(jìn),已經(jīng)步入深亞微米時(shí)代。而在對(duì)待深亞微米的器件上,我們的設(shè)計(jì)方法將不可避免地發(fā)生變化,要更多地關(guān)注以前很少關(guān)注的線延時(shí)(我相信,ASIC設(shè)計(jì)以后也會(huì)如此)。
如果我們不在設(shè)計(jì)方法、設(shè)計(jì)技巧上有所提高,是無(wú)法面對(duì)這些龐大的基于深亞微米技術(shù)的電路設(shè)計(jì)。而且,現(xiàn)在的競(jìng)爭(zhēng)越來(lái)越激勵(lì),從節(jié)約公司成本角度出發(fā),也要求我們盡可能在比較小的器件里完成比較多的功能。
二.談?wù)凢PGA的工具幾個(gè)關(guān)鍵問(wèn)題
4.關(guān)于我們對(duì)FPGA工具過(guò)分依賴的問(wèn)題認(rèn)識(shí)
硬件描述語(yǔ)言和綜合工具的產(chǎn)生,極大地提高了工程師的工作效率。然而,隨著它們的普及與推廣,一種不好的現(xiàn)象也在逐步蔓延;在設(shè)計(jì)過(guò)程中,只關(guān)注功能是否實(shí)現(xiàn),而不考慮或很少考慮電路到底是如何實(shí)現(xiàn)的;過(guò)分依賴綜合等工具來(lái)提高設(shè)計(jì)性能(如速度、面積等),而不是從設(shè)計(jì)本身來(lái)考慮自己的電路是否最佳。
如果將設(shè)計(jì)看成是一個(gè)化學(xué)變化,那么工具只是起到催化劑的作用,我們所掌握的背景知識(shí)、電路設(shè)計(jì)方法及有關(guān)技巧,才是參加化學(xué)反應(yīng)的分子,是起決定作用的因素。
因此,設(shè)計(jì)遇到困難時(shí),不能完全指望工具,更不能怪罪工具。只有我們才是決定設(shè)計(jì)成敗的關(guān)鍵。
5.不管使用何種綜合工具,都包括兩個(gè)過(guò)程
過(guò)程1:是把行為級(jí)的描述通過(guò)一定的算法轉(zhuǎn)化為門(mén)級(jí)的描述,該過(guò)程與設(shè)計(jì)的工藝庫(kù)無(wú)關(guān)、與用戶約束無(wú)關(guān)。
過(guò)程2:是把已經(jīng)轉(zhuǎn)化的門(mén)級(jí)描述在用戶的約束下,通過(guò)算法映射到相應(yīng)的工藝庫(kù)中的器件上。對(duì)ASIC,是映射到廠商的Gate庫(kù)中,對(duì)FPGA,是映射到FPGA器件的單元結(jié)構(gòu)中。
從上兩個(gè)步驟可知,當(dāng)設(shè)計(jì)代碼的的風(fēng)格不一樣時(shí),則在綜合第一步就已大部分決定了設(shè)計(jì)的性能(對(duì)ASIC來(lái)說(shuō),因?yàn)槭寝D(zhuǎn)成Gate, 器件庫(kù)一般也是Gate, 相對(duì)影響較少)因此,我們不難理解代碼風(fēng)格對(duì)FPGA設(shè)計(jì)的重要性。
6.說(shuō)說(shuō)具體的綜合工具性能
不同綜合工具的針對(duì)目標(biāo)不一致和各綜合工具的不同性能,導(dǎo)致了綜合出來(lái)的結(jié)果也不同。
目前,綜合工具主要有DC(Design Compiler)、FC2(FPGA Compiler II)、Synplify、Leonardo、Galileo 等綜合工具:
1)DC:主要是用于ASIC的綜合工具
2)FC2:是DC在FPGA綜合方面的增強(qiáng)版
3)Leonardo:是做FPGA綜合工具的先驅(qū)
4)Synplify:是目前成長(zhǎng)最快的綜合工具(由Synplicity公司出品)
無(wú)論哪家綜合工具,對(duì)FPGA的綜合,都必須緊密結(jié)合各FPGA廠家的FPGA結(jié)構(gòu),否則無(wú)法更好利用FPGA提供的優(yōu)點(diǎn);從目前來(lái)看,優(yōu)選Synplify或Leonardo綜合工具;DA的FPGA綜合性能差但事宜ASIC綜合。
到目前為止第三方的綜合工具都未能很好利用FPGA器件,因?yàn)榇a風(fēng)格沒(méi)有跟上,導(dǎo)致無(wú)法得到很好的性能。
7.邏輯代碼風(fēng)格的重要性
因?yàn)榫C合工具無(wú)法最大使用到器件所提供的優(yōu)越性能,導(dǎo)致最終的產(chǎn)品性能變差;若想得到更好的性能,這要求在FPGA設(shè)計(jì)上,最好對(duì)一些設(shè)計(jì)采用一些Core(但這種基于FPGA器件(特有工藝)的代碼設(shè)計(jì),將降低設(shè)計(jì)代碼的重用性能、以及FPGA設(shè)計(jì)與ASIC設(shè)計(jì)的兼容性)。
8.舉例:以Xilinx為例,我們?cè)鯓硬扇∏‘?dāng)?shù)拇a風(fēng)格,以提高電路性能:
1) 資源共享的應(yīng)用限制在同一個(gè)module里。這樣,綜合工具才能最大限度地發(fā)揮其資源共享綜合作用。
2) 盡可能將Critical path上所有相關(guān)邏輯放在同一個(gè)module里。這樣,綜合工具能夠發(fā)揮其最佳綜合效果。
3) Critical path所在的module與其它module分別綜合,對(duì)critial path采用速度優(yōu)先的綜合策略,對(duì)其它module采用面積優(yōu)先的綜合策略。
4) 盡可能Register所有的Output。做到這一點(diǎn),對(duì)加約束比較方便;同時(shí)一條路徑上的組合邏輯不可能分散在各個(gè)module里,這對(duì)綜合非常有利??梢员容^方便地達(dá)到面,積速度雙贏的目的。
5) 一個(gè)module的size不能太大。具體大小,由各綜合工具而定。
6) 一個(gè)module盡量只有一個(gè)時(shí)鐘,或者整個(gè)設(shè)計(jì)只有一個(gè)時(shí)鐘。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論