版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于FPGA以及數(shù)字電路設(shè)計相關(guān)高級技巧介紹在這篇文章里,我們就繼續(xù)來討論一下FPGA的進階學(xué)習(xí)路線。和入門路線不同,我想從入行和職業(yè)發(fā)展的角度,分析一下專業(yè)的FPGA開發(fā)者需要具備哪些技術(shù)能力,以及如何進一步的提升自己這些方面的能力。所以如果你有興趣從事FPGA這個行業(yè)、亦或是正在尋找這方面的工作,或者已經(jīng)入行一段時間,并且希望明確今后今年的發(fā)展方向,那么這篇文章應(yīng)該會對你有所幫助。和初學(xué)者相比,專業(yè)的FPGA工程師需要掌握更多的技能和知識。對此我歸納了四個方面,分別是FPGA相關(guān)的高級技巧、領(lǐng)域相關(guān)的知識、以及職業(yè)芯片工程師必須具備的硬實力和軟實力。我也會介紹一些書籍和學(xué)習(xí)資料,希望能對你的學(xué)習(xí)有所幫助。RTL設(shè)計的高級開發(fā)技巧掌握基礎(chǔ)知識之后,就需要繼續(xù)學(xué)習(xí)FPGA以及數(shù)字電路設(shè)計相關(guān)的一些高級技巧。這部分的內(nèi)容有很多,主要包含設(shè)計、驗證、以及一些FPGA約束和優(yōu)化的技巧和方法。這里的設(shè)計指的是邏輯設(shè)計,也就是使用RTL語言實現(xiàn)一些相對復(fù)雜一點的模塊或者系統(tǒng),以及在這個實現(xiàn)過程中使用到的一些技巧。在本文也暫時不討論高層次綜合(HLS)的內(nèi)容,也就是使用C語言或者Python等高級語言對FPGA進行編程。關(guān)于HLS的相關(guān)內(nèi)容,可以看我之前的文章《高層次綜合:解鎖FPGA廣闊應(yīng)用的最后一塊拼圖》。對于RTL設(shè)計,一個在面試中非常常見的問題,就是信號的跨時鐘域處理。比如在跨時鐘域的時候,怎么處理一位信號、怎么處理多位不相關(guān)的信號、怎么處理多位的總線信號、怎么處理復(fù)位、怎么處理脈沖,從快時鐘域到慢時鐘域怎么辦,反過來怎么辦等等一大堆。這類問題的集大成者就是FIFO的設(shè)計,特別是異步FIFO的設(shè)計,以及它的一系列變種問題。一種異步FIFO的架構(gòu)框圖關(guān)于跨時鐘域和FIFO的問題,推薦讀者朋友們仔細研究一下CliffordCummings這位大神的幾篇文章,他的文章非常全面的討論了上面說的所有問題,我也會把其中的代表作分享到知識星球里。
CliffordCummings事實上,Cummings作為Verilog語言的協(xié)議制定參與者,他還寫了很多文章,詳細探討了各種和數(shù)字電路相關(guān)的問題,比如如何寫出好的可綜合的RTL代碼、狀態(tài)機怎么寫、UVM和驗證相關(guān)的問題、還有很多SystemVerilog和Verilog的細節(jié)討論。對于進階的朋友,我覺得這本書也有一定借鑒價值,名叫《FPGA設(shè)計實戰(zhàn)演練–高級技巧篇》。這里面介紹了一些常見的FPGA設(shè)計的技巧和方法,比如前面說的時鐘域處理、還有如何進行速度和面積的互換和優(yōu)化等等。
值得注意的是,雖然在面試時常問跨時鐘域處理這類的問題,但在實際的工程項目中是基本不可能讓你從頭寫一個跨時鐘處理模塊或者FIFO的,這些功能早就被封裝成一個個現(xiàn)成的模塊了,直接調(diào)用就可以。但這并不是所謂的“面試造火箭,工作擰螺絲”,前面介紹的這些高級技巧,更多的是在鍛煉我們的思維方式和設(shè)計習(xí)慣。只有知道這些,才有可能在面對一個實際問題的時候,知道怎么根據(jù)需求去分析、設(shè)計和實現(xiàn),并且得到最優(yōu)化的結(jié)果。驗證的高級技巧再來簡單說一下驗證。之前的文章里提到過,驗證是一個非常復(fù)雜的領(lǐng)域。比如在下面的這張Mentor的圖片里就顯示,在一個芯片項目里,平均而言至少會有超過一半的時間花在驗證上,有的甚至占60%~70%。以我自己的經(jīng)驗來說,這個比例會更高。
驗證之所以復(fù)雜而且耗時,是因為我們必須盡可能多的檢查到所有可能的設(shè)計功能和狀態(tài)。驗證里有一個“功能覆蓋率”的概念,就是用來量化這個過程的。比如對于一個加法電路,a+b=c,我們肯定希望驗證到:a和b取所有值的時候,結(jié)果c的值都正確。如果a和b都是一位十進制數(shù),也就是從0到9之間隨機選取,那么就有10x10=100種可能。但是如果a和b都是四位十進制數(shù),那么就有10000x10000=1億種可能,當(dāng)然這還是非常簡單的情況。對于更加復(fù)雜的設(shè)計,比如多個數(shù)相加、相乘,或者在一些特定領(lǐng)域的邏輯功能、比如AI或者網(wǎng)絡(luò)應(yīng)用等等,我們很難通過仿真驗證到所有可能的狀態(tài),甚至不可能覆蓋所有可能的設(shè)計狀態(tài)。為了解決這個問題,就需要科學(xué)的制定驗證計劃,同時使用一些進階的驗證方法學(xué),比如業(yè)界常用的隨機約束、UVM或者形式化方法,來幫助我們構(gòu)建更加高效的驗證環(huán)境。
一個基本的UVM驗證環(huán)境示意圖很多芯片公司其實都有設(shè)計工程師和驗證工程師的分工,但這并不代表做芯片設(shè)計的人不需要知道驗證。事實上,那些優(yōu)秀的芯片設(shè)計者同時也是優(yōu)秀的驗證者,他們可能不會用UVM或者形式化驗證方法,但肯定會熟練掌握隨機約束、參考模型建模、自動化測試、還有斷言等等常用的驗證技術(shù),這也應(yīng)該是我們應(yīng)該努力的方向。FPGA的約束和優(yōu)化設(shè)計除了設(shè)計和驗證之外,F(xiàn)PGA相關(guān)的優(yōu)化和約束也是進階學(xué)習(xí)的重要內(nèi)容。這里主要包括對時序、面積、功耗的約束和優(yōu)化。比如,存在多個時鐘的時候怎么寫時序約束,怎么進行時序分析,怎么劃分固定的設(shè)計區(qū)域,怎么預(yù)估設(shè)計的功耗等等。這個過程可能會貫穿整個FPGA項目的開發(fā)周期,而且一些常見的ASIC約束方法并不一定會適用于FPGA設(shè)計。拿FPGA低功耗設(shè)計舉例,門控時鐘就不一定適合于FPGA。這是由于FPGA里的時鐘網(wǎng)絡(luò)是固定的,因此只能關(guān)閉固定的時鐘樹或者分支。如果需要做門控時鐘,就必須控制某些特定的clockbuffer,且要同時確定這些clockbuffer可以被邏輯控制。更重要的是,我們還需要確保這個時鐘驅(qū)動的邏輯都位于這個時鐘樹的“勢力范圍”之內(nèi),這就需要在布局布線時設(shè)置想要的位置約束。由此可見,門控時鐘這個在ASIC設(shè)計里常見的低功耗設(shè)計方法,在FPGA設(shè)計里是困難且繁瑣的。FPGA時鐘樹示意圖領(lǐng)域相關(guān)的知識進階學(xué)習(xí)路線的第二部分內(nèi)容,就是領(lǐng)域?qū)S玫闹R,也就是DomainSpecificKnowledge。我們之所以要學(xué)習(xí)這部分內(nèi)容,是因為FPGA并不是單獨存在的,它需要被應(yīng)用在某些具體的領(lǐng)域和場景里。比如,F(xiàn)PGA目前的一個很火的應(yīng)用領(lǐng)域就是數(shù)據(jù)中心里的智能網(wǎng)卡。關(guān)于智能網(wǎng)卡的內(nèi)容在之前已經(jīng)說過很多了,包括微軟、阿里、騰訊、京東、字節(jié)等等很多互聯(lián)網(wǎng)公司都在布局這方面的技術(shù)。智能網(wǎng)卡的本質(zhì),就是使用把一些原本在CPU里運行的應(yīng)用,卸載到FPGA里執(zhí)行,這可以是網(wǎng)絡(luò)協(xié)議棧、一些虛擬化的功能、或者是和AI相關(guān)的功能等等。
這里面就涉及到了很多領(lǐng)域?qū)S玫闹R,比如計算機網(wǎng)絡(luò)、網(wǎng)絡(luò)功能虛擬化NFV、軟件定義網(wǎng)絡(luò)SDN,還有一些其他的虛擬化技術(shù)比如Virtio、OVS等。此外,領(lǐng)域相關(guān)的知識還包括各種高速接口協(xié)議和總線相關(guān)的內(nèi)容。比如PCIe、DDR、HBM、以太網(wǎng)、收發(fā)器等,還有各種各樣的總線協(xié)議。這些和FPGA也有非常密切的關(guān)系,在實際的求職應(yīng)聘時也是重要的加分項。在學(xué)習(xí)這些內(nèi)容的時候,我個人建議還是結(jié)合目標職位或者項目的需求來,有目的的去學(xué)習(xí),而不是想著一上來就一口吃個胖子。比如我就對使用FPGA進行高清視頻處理相關(guān)的內(nèi)容不太了解,因為我并不做這個方向,但我大概知道怎么構(gòu)建知識圖譜,并由此去一步步學(xué)習(xí),這樣其實就可以了。職業(yè)技能相關(guān)的能力FPGA進階學(xué)習(xí)路線的第三點,就是職業(yè)工程師需要具備的一些硬實力。比如,企業(yè)里幾乎全部的開發(fā)環(huán)境都是在Linux系統(tǒng)里完成的,而且大部分時候沒有圖形界面。所以除了常用的那些EDA工具之外,還特別需要我們熟練掌握Linux的一些基本命令。此外還應(yīng)該掌握至少一種腳本語言,比如Tcl、Perl、Makefile、Python等等。這能極大的提升我們的工作效率,這也是芯片工程師必備的技能。此外,作為FPGA工程師,硬件調(diào)試的能力也是不可或缺的。一個在職業(yè)工程師日常工作中非常常見的場景,就是使用和調(diào)試各種各樣的FPGA板卡,比如拿來一個全新的板卡,從頭開始用它進行開發(fā)。這就要求我們會看板卡的原理圖、知道怎么寫各種約束,怎么使用板子上的各種資源等等。此外,當(dāng)設(shè)計出錯時,怎么去進行硬件調(diào)試,還有怎么設(shè)計一些有用的邏輯功能來方便硬件測試,比如各種狀態(tài)寄存器等等。那么對于某些專業(yè)領(lǐng)域,比如在網(wǎng)絡(luò)領(lǐng)域,可能還需要知道怎么進行流量測試,比如DPDK的使用、配置,還有一些測試儀器的使用、一些常見的網(wǎng)絡(luò)分析工具(如wireshark)的使用等等??傮w來說,這些職業(yè)工程師需要具備的硬實力,可能在上學(xué)期間不一定都能接觸到。這就需要我們在工作中不斷實踐和總結(jié),才能把這些技能一點一點積累起來。職業(yè)人士的軟實力除了硬實力之外,軟實力的培養(yǎng)也至關(guān)重要,這包括溝通、時間管理、團隊協(xié)作、領(lǐng)導(dǎo)力,還有不斷學(xué)習(xí)的能力等等。不管是芯片還是其他工程領(lǐng)域,絕大部分項目都是由很多團隊一起協(xié)作完成的,因此如何與不同團隊的成員溝通項目內(nèi)容,如何制定項目規(guī)劃、把握項目進度,以及遇到難題應(yīng)該如何著手去解決,都是職業(yè)工程師幾乎天天遇到的問題。事實上,不管你從事或者打算從事什么職業(yè),我們都應(yīng)該從現(xiàn)在開始培養(yǎng)自己的各種軟實力。比如多與人溝通,積極參加各種活動,或者像我在之前的文章《分享是程序員的必備素質(zhì)》里提到的,不斷分享自己學(xué)習(xí)和工作中的各種心得體會。這些肯定都會對我們今后的職業(yè)生涯大有幫助。小結(jié)在今天的文章里,我們梳理了一下作為一個職業(yè)的FPGA工程師需要具備哪些能力,一共有四個部分,分別是和FPGA相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紙箱合同范本
- 電子協(xié)議法律適用詳解2024
- 機械工程專業(yè)導(dǎo)論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 物理課程與教學(xué)論學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 第二外國語Ⅱ?qū)W習(xí)通超星期末考試答案章節(jié)答案2024年
- 十三薪合同范本
- 藥店托管合同范本
- 菏澤市中醫(yī)醫(yī)院招聘備案制工作人員真題
- 供材合同范本
- 南寧光明城市裝修合同范本
- LED照明知識培訓(xùn)
- 網(wǎng)店運營與推廣
- GB/T 17799.2-2023電磁兼容通用標準第2部分:工業(yè)環(huán)境中的抗擾度標準
- 2024年公務(wù)員(國考)之行政職業(yè)能力測驗?zāi)M考試試卷B卷含答案
- 《選煤廠安全規(guī)程》全文
- 《嬰幼兒行為觀察、記錄與評價》習(xí)題庫 (項目三) 0 ~ 3 歲嬰幼兒語言發(fā)展觀察、記錄與評價
- 英語漫談膠東海洋文化知到章節(jié)答案智慧樹2023年威海海洋職業(yè)學(xué)院
- 環(huán)保產(chǎn)品管理規(guī)范
- 幼兒園:我中獎了(實驗版)
- 趙學(xué)慧-老年社會工作理論與實務(wù)-教案
- 《世界主要海峽》
評論
0/150
提交評論