Intel和AMD都斥巨資收購了領先的FPGA公司。撇開相對較小的嵌入式計算和通信/互聯網市場,這些基本上是對FPGA作為數據中心服務器CPU的關鍵組合的未來的賭注。但除非克服了在軟件程序員工作的難題和設備管理方面的主要挑戰,否則這種組合將是個未知數。理解為什么AMD對FPGA供應商Xilinx如此感興趣,或者說Intel多年前為何對Altera感興趣,有助于了解FPGA到底是什么,以及這些設備在目前芯片行業中發揮什么作用。人們的想法很簡單,不幸的是,事實正是被這種簡單的想法和許多復雜的技術所掩蓋。首先是名字。FPGA是Filed-Programmable Gate Array的縮寫,這個市場化的術語其實非常不合適,因為這些設備既不是可編程的,也不是門陣列。它們是工程師設計和構建集成電路的方式中一些困難問題的解決方案。
今天幾乎所有復雜的數字IC都是通過單一任務鏈來構建的,即曾經被稱為ASIC(Application-Specific IC)的設計流程。確定了對芯片要求的精確表述后,設計者收集一系列的功能塊:處理器、內存模塊、加速器功能和專用控制器,它們共同滿足了要求。這些模塊中的大多數都采用的IP,并從供應商庫中提取。少數沒有這種形式的,設計者將用HDL(Hardware Description Language)來描述,但不要與C++或Python等編程語言混淆。編程語言描述了一個處理器應該執行的一系列步驟,以執行一個算法。HDL描述的是一塊硬件的結構,而不是一連串的事件。然后,設計工具將這些IP模塊和HDL描述組合成一個邏輯元素、寄存器和連接它們的線段的列表,即一個SoC的基本部分。然后,設計團隊詳盡地測試這個所謂的網表。隨后的工具通過幾個曲折的步驟將網表轉換為代表即將在SoC上制造的實際晶體管和導線的形式,然后轉換為在芯片上打印這些特征的圖案。
大量的數據要經過更多的測試,然后被送到掩膜車間和制造實際集成電路的工廠。這個過程可以制造出相當接近底層芯片工藝的潛在最大密度、速度和能效的集成電路。但它需要大量的時間,從需求到第一塊芯片誕生需要9個月的時間,這并不罕見,如果有設計錯誤、需求變化或工廠的延誤,從開始到結束的鏈條很容易達到一年或更長時間。而且還有大量的初始成本,不僅包括設計團隊的工作,還有一套掩模和最初運行芯片的昂貴的成本。
在許多情況下,例如不確定的設計要求,在快速發展的市場或小批量的生產,ASIC方法并不理想。FPGA來救場FPGA正是為了解決這個問題而出現的。但FPGA的密度和速度會降低,功耗也大幅增加,FPGA讓設計團隊實際上跳過了網表開發后的所有步驟。相反,設計者直接將網表實施在現成的FPGA芯片中。這可以節省幾個月的后端芯片設計時間和掩膜車間及制造時間,以及數萬美元的前期費用。FPGA集成電路的單價會大大高于同類ASIC芯片的量產單價。但通常,如果設計發生變化或產量較低,ASIC攤銷后的單位成本實際上可能高于FPGA。全球FPGA 市場規模不斷擴大,中國市場增速更是快于全球。FPGA下游應用市場廣泛,隨著5G技術的提升、AI的推進以及汽車自動化趨勢的演進,全球FPGA市場規模將穩步增長。Frost&Sullivan,預計全球 FPGA需求將從2021年 68.6 億美元增長為2025年125.8億美元,年均復合增長率約為 16.4%。
全球 FPGA 市場規模 中國市場增速更是快于全球。隨著國產替代進程的進一步加速,近年來,中國 FPGA 芯片市場規模持續上升,從2016 年的 65.5 億元增長至 2020 年的 150.3 億元,年復合增長率達 23.1%。據預測,至 2025 年中國 FPGA 市場規模將進一步提升至 332.2 億元,2021-2025 年的復合增長率為 17.1%,高于全球 FPGA 市場的 10.85%。
中國 FPGA 市場規模FPGA 芯片國外起步較早,技術積累深厚,高度壟斷市場。在全球FPGA 市場中,主要被Xilinx(已被AMD收購)和Intel兩家海外企業雙寡頭壟斷,在2019年,兩家合計占據了全球市場份額的85%以上。由于技術壁壘高、更新換代速度快,全球 FPGA 市場高度集中,國內廠商占比較低。
2019 年全球 FPGA 市場競爭格局 國內 FPGA 市場起步較晚,技術層面仍存在較大差距。目前Xilinx、Intel、Lattice三家供應商占據中國約80%FPGA市場份額。盡管國外廠商占比仍然較高,在國產化趨勢下,但國內廠商有所突破,中國FPGA市場的成長將助力國內企業占據市場份額。國內FPGA市場起步較晚,相關技術人員匱乏,主要面向低密度市場擴展自身份額,逐步實現國產替代。
雖然國內FPGA廠商有百家爭鳴之勢,但基本分布在中低端市場,大多是一些1000萬門級左右的FPGA,少數達到2000萬門級的FPGA雖然也有自主研發的,有一些是逆向工程的產物,或商業收購的結果。從技術水平上看,國內廠商與國際龍頭仍存在較大差距。但隨著國內企業加大研發布局,其設計能力已有較大提升,如復旦微 28nm 制程億門級 FPGA 芯片已實現量產出貨;安路科技 28nm產品已正式量產,FinFET 工藝產品已開展預研。隨著國內企業的進一步研發,有望逐步縮小與國際先進水平的差距,在國產化趨勢下擴大國內市場份額。
FPGA 芯片最大的特點是可編程性,可通過改變芯片內部連接結構,實現任何邏輯功能。其應用領域最初為通信領域,但目前,隨著信息產業和微電子技術的發展,可編程邏輯嵌入式系統設計技術已經成為信息產業最熱門的技術之一,應用范圍遍及人工智能、數據中心、醫療、通訊、5G、安防、汽車電子、工業等多個熱門領域。并隨著工藝的進步和技術的發展,向更多、更廣泛的應用領域擴展。越來越多的設計也開始以ASIC轉向FPGA,FPGA正以各種電子產品的形式進入我們日常生活的各個角落。隨著應用場景對FPGA的需求持續提升,再加上5G、人工智能、大數據、自動駕駛、物聯網的發展推動中國FPGA市場擴張,刺激增量需求釋放,從行業發展趨勢來看,FPGA潛力被嚴重低估,未來大有可為。對于人工智能而言,算法正處于快速迭代中。雖然ASIC芯片可以獲得最優的性能,即面積利用率高、速度快、功耗低;但是AISC開發風險極大,需要有足夠大的市場來保證成本價格,而且從研發到市場的周期很長,不適合例如深度學習、CNN等算法正在快速迭代的領域。FPGA正好能適用于人工智能領域,滿足高速并行計算的需求,基于全球人工智能市場大熱,這也刺激了FPGA的市場,有利于FPGA產業的發展。
FPGA工程師核心競爭力是什么?
對于FPGA工程師的核心競爭力,其實FPGA工程師在真正工業界還是有細分的,大致可以分為兩部分,做IC原型驗證的(包括design和verification),用FPGA開發產品的。做IC原型驗證大多不需要了解算法,只是根據設計人員的設計框圖實現邏輯(大公司);做產品開發的可能離具體的應用和算法更近一些,相當于將特定應用和算法做硬件實現。我這里講的更加側重的是做FPGA實現這類的工程師(包括IC原型驗證的design和產品設計的design)。我將更細致的給出一些我認為重要的能力。
1、 RTL設計實現能力。
關于FPGA工程師的核心競爭力,很多人會提到算法實現能力,我將這歸結為RTL設計實現能力的一部分,RTL實現是FPGA工程師或者說HDL開發人員的入門首先接觸到的東西,我將其總結為如下幾點:
a、 硬件的實現思路HDL設計實現和軟件實現的思路不同,HDL作為一種描述語言,側重的是對硬件的映射和連接關系的描述,當然也有邏輯、處理的實現,但歸根揭底所有的邏輯都是在硬件上實現的,最終都會映射為加法器,乘法器,狀態機,計數器,編碼器(優先),解碼器等等一些列硬件資源,對于邏輯拆解和抽象能力將直接關系到最終編碼的效率。簡單的來說,好的HDL編碼人員編寫的代碼更容易被編譯器綜合,對于初學者來講,編譯器的綜合(包括后續Map布局布線)時間以及warning數量以及最后綜合出來資源和你預先設計的吻合程度可以做為考量HDL代碼好壞的一種方式。
b、 資源和時序的優化能力資源和時序的優化能力是作為FPGA(ASIC)開發人員進階的能力,這里就需要大量的經驗和反復的迭代,不斷對硬件(FPGA底層結構)深入理解才能夠達到。對于FPGA來講和ASIC設計有所不同,ASIC的硬件實現很多是由綜合器決定的(比如用什么樣的乘法器),但是對于FPGA來講,資源全部是固定的,FPGA資源可以分為三塊,運算邏輯(LUT DSP carry chain等),存儲單元(REG SRL BRAM DRAM),IO(各種高速低速接口),相同的算法應用可以用不同的資源,不同資源的組合方式來實現。那么如何用更少的資源,更快的主頻實現某一算法,這就需要有很強的資源和時序優化能力,通常這種優化是經過多次迭代的,當然通常頂層的設計人員會對系統層次的資源和時序有著較為準確的把握,也會給出各個模塊的設計指標和邊界,但是不同開發人員水平和能力最終設計的結果是不一樣的,好的資源和時序優化能力是FPGA工程師的重要競爭力。再反過頭來說軟件開發,其實從優化上來講和RTL設計或者說HDL開發沒什么不同,好的軟件設計人員更了解計算機底層,對于資源(時間,空間)的使用,對于算法的效率的分析也更加深刻,因此也能寫出更好的軟件代碼,我覺得在這一層面上無論軟件還是硬件開發都是對于邏輯的抽象能力(當然術有所不同)。
2、 硬件調試能力。
調試能力,也是作為FPGA開發人員和所有從事硬件開發人員都一直認可的能力或者說核心競爭力。舉個例子,在找工作的時候如果你能向別人展示出你無與倫比的調試能力,別人沒有理由不要你。調試能力需要大量的現場經驗作為積累,同時也需要人的邏輯分析能力,當然還需要耐心,細致等等人的高尚品質 ,這里我也做一個小小的總結。
a、 FPGA本身調試工具的使用
我想這里又可以分為兩個階段,仿真和上板調試,仿真我想作為FPGA工程師都不陌生,大型的開發,通常有多個不同層次的模型,基本算法原理的模型,硬件仿真模型(通過C或matlab做定點仿真),然后再試HDL仿真模型(通過modelsim仿真最后的實現),仿真是一門很大的學問,現在都有專門的verification人員做。但是對于普通FPGA開發人員來京,如何利用仿真這個工具來高效率的調試是一個值得思考的問題,一些異步的輸入情況如何用仿真來排除問題,上板調試發現問題,根據問題輸入情況仿真排除問題,這些都是利用FPGA仿真工具來調試的手段。對于上板調試,主要就是利用chipsocpe添加調試信號,這里又涉及到如何利用有限資源(chipsocpe信號數量和深度)來排除問題,通常在上板調試發現問題后,仿真又無法定位解決(仿真是有和硬件不一致的情況的,比如一些RAM沖突的問題)。經過分析加入合適的調試信號,設置合適的觸發條件,然后定位排除問題。這些說起來容易,實際還是需要大量的上板經驗,特別是大型系統的調試經歷不斷磨練提升。此外還有一些應用需要配合外部儀器來獲取更多信息幫助定位問題,包括示波器,譜分析儀,網絡分析儀等常用實驗室儀器。
b、問題定位分析能力上面講的是都是利用工具來進行調試,但是硬件比軟件難得地方就在于其調試的復雜性,很多時候無法利用工具進行問題的定位,比如現象無法復現,輸入條件隨機或者過于復雜,涉及模塊邏輯很多等等情況,這時候去定位問題大多靠想,就是邏輯分析來排出問題。我認為這是FPGA工程師真正的核心競爭力,因為這不僅僅需要經驗的積累,同時還需要很好的邏輯思維和分析能力。
c、系統調試能力系統調試能力是更加難得一項能力,通常做到系統層次的人員不會再具體的寫代碼或者上手調了,當然對于小團隊小公司還是得自己上手。系統層面的調試能力一方面是對FPGA頂層的調試能力,各個模塊構成的片上系統的問題分析定位能力。通常各個模塊在系統聯調之前都是經過驗證的,但是在聯調的時候還是會出現各種各樣的問題,這時候的問題反饋的信息更加少,設計的邏輯模塊更加多,如何一步步抽絲撥繭定位到問題所在,并且采用什么樣的方式去解決(這時候通常不是單獨解決一個內部模塊就行的),都需要很深厚的功力。另外一方面是整個硬件軟件系統層次的調試能力,要看得懂原理圖PCB,懂硬件,了解軟件接口,現在FPGA越來越講究Hardware Software Co-design,軟件硬件這個系統層次的調試能力對人的要求更加高,當然這通常已經遠離了通常FPGA工程師的職責,但是我認為這是作為FPGA工程師上升通道中的重要能力。
3、更加高層次的更加高層次的東西,我個人的理解,還是系統層次的東西,算法和架構。怎樣將一系列數學公式,轉換為算法,再最終形成系統硬件的實現;整個系統采用什么樣的架構,純FPGA,arm FPGA,DSP FPGA,SOC FPGA;FPGA頂層采用什么架構,通用總線還是自定義總線,如何考慮通用性和可擴展性等等。再大至什么樣的應用適合用FPGA實現,什么樣的問題適合軟件實現,怎樣的組合能更加低成本高效率的解決問題,這一些列問題涉及的東西就很多了,我講的都是以FPGA為核心做開發要面臨的問題,其實其他平臺的硬件、軟件產品都是類似,系統層面的問題都是復雜的問題,同時我也認為,從系統層面去優化,解決問題才是最高效率的方式。歸根結底,一個FPGA工程師的核心競爭力來源于深厚的技術功底,但是技術功底也并非通過一天練成的,最重要的是時間的積累,不斷的鉆研以及真正的興趣。
編輯:黃飛
評論
查看更多