什麼是FPGA工程師的核心競爭力
來源:老石談芯
老石,微信公眾號“老石談芯”主理人,博士畢業於倫敦帝國理工大學電子工程系,現任某知名半導體公司高階FPGA研發工程師,深耕於FPGA的資料中心網路加速、網路功能虛擬化、高速有線網路通訊等領域的研發和創新工作。曾經針對FPGA、高效能與可重構計算等技術在學術界頂級會議和期刊上發表過多篇研究論文。
這個問題是老石在知乎上看到的,大家的回答都是“調板子”、“debug”、“硬體實現”等等。作為FPGA工程師,老石看了實在要報以一個禮貌的微笑。
換個角度看,難道其他硬體工程師就不具備調板子、debug、硬體實現的能力了?或者,為什麼說這些是專屬於FPGA工程師的核心競爭力?
老石認為,這個問題其實可以引申為以下兩點:
什麼是隻有FPGA工程師能做的
作為FPGA工程師,我們應該如何培養這些能力
接下來就是老石的解答。
什麼是隻有FPGA工程師能做到的
對於上面提到的一些回答,的確是FPGA工程師不可或缺的能力,但老石總覺得沒有說清楚這個問題的本質。
首先給出老石的回答:FPGA工程師最核心的就是全棧能力。
這裡的全棧,指的是系統級的軟硬體全棧能力。它既包括了在系統層面的架構設計、晶片開發的前後端流程,也包括了軟體設計的全棧流程,甚至還有後期的專案維護、技術支援、與客戶的溝通等等軟技能。它可以看成是綜合多種技能的技能樹。
老石隨手寫了一下FPGA工程師的全棧技能樹,見下圖,儘管很不完整,但仍可供大家參考。之前很多人提到的,諸如除錯與分析的能力,其實是這個全棧技能樹裡的一片樹葉,或一個分支。
只有FPGA工程師能做到一人成團,在短時間內將想法落實到高質量的軟硬體系統實現。這是其他系統架構師、ASIC工程師、微控制器工程師、軟體工程師等等都無法單獨完成的。與這些工程師相比,FPGA工程師有著很強的單兵作戰能力。當然,技能樹過於龐大也是為什麼很多人認為FPGA難學的本質原因。
有人會問,為什麼其他型別的工程師沒有這種全棧能力,或者換句話說,為什麼只有FPGA工程師才能做到全棧?這和FPGA本身的特點有關。
在下圖中,老石對比了FPGA與ASIC、CPU(或微控制器)的特點與主要開發方式和風格。
對於傳統的IC工程師而言,他們的具體職責可以大致分成前端和後端兩部分。前端主要負責邏輯實現,後端負責晶片物理實現。兩路人馬通常有各自的技能樹,需要互相配合才能完成產品級的晶片,這個過程往往很久,而且伴隨著巨大的前期投入和風險。
對於微控制器或CPU工程師而言,更多的是基於給定的微控制器架構和API,使用諸如C或C++的高層語言編寫應用程式。如果要寫出高質量的應用,固然需要了解目標晶片的硬體結構,但並不需要對硬體的邏輯實現有過多瞭解。雖然基於CPU或MCU可以靈活實現各種應用,但由於架構限制,在很多諸如人工智慧的應用領域裡並不能達到很好的效能。
FPGA很大程度上結合了兩者的優點。在硬體方面,FPGA底層架構固定,因此不需要做太多晶片後端的工作,但仍需要FPGA工程師掌握時序最佳化、面積最佳化、功耗最佳化等後端技能。因此一個優秀的FPGA工程師憑藉自身的前後端與軟硬體技能,就可以完成一個完整的而且質量比較高的FPGA專案。
軟體方面,FPGA可以靈活定義API與軟體架構,並可以透過內建的處理器核心完成軟硬體協同開發,這樣也能兼顧應用的靈活性。因此,一個優秀的FPGA工程師通常也具有優秀的軟體程式設計能力。
在系統層面,FPGA工程師可以自定義軟硬體整體架構,不會像CPU或微控制器一樣存在明顯的架構瓶頸,也不會像ASIC一樣需要考慮過多底層電路單元以及工藝的具體實現。
綜上,只有FPGA工程師能擁有軟硬體系統的全棧能力,這也是FPGA工程師的核心競爭力。並且,這種能力可以在工程實踐中不斷自我豐富和提升。這使得優秀的FPGA工程師不需要太過依賴其他人,能夠自己或少量人很快完成完整的系統級方案。
現在很多AI初創公司選擇使用FPGA作為硬體平臺的主要原因之一,就是看中FPGA工程師的全棧能力,使得公司能在較少投入的情況下,取得效能、靈活性、可擴充套件性等多個方面的良好平衡。
全棧能力是FPGA工程師需要的完整技能樹。至於很多答友提到的除錯和debug能力,更多的是在回答這個技能樹的技能點分配問題。這就是老石要講的第二個方面:
作為FPGA工程師,我們應該如何培養這些能力
相信很多人會問,老石你說的這種全棧能力,究竟是不是在畫大餅吹牛逼?在實際生活中,到底是不是真的有人能全部精通技能樹中的所有分支?老石的答案是,雖然很少,但確實有這樣的大牛,而且老石有幸和他在一個團隊裡工作。
一般來說,如果一個FPGA工程師能在這個FPGA技能棧裡精通某一項,就可以成為這個領域的大牛和權威。比如,像很多人提到的,如果你特別會調板子,硬體除錯能力很強,那你就可以很好的負責專案中的硬體測試環節。再比如,你RTL寫的很好,或者驗證很強,或者對系統架構有很深的理解,你都能在專案裡成為不可或缺的人。
但是,在老石所在團隊裡就有一位帶頭大哥,可以從系統架構、模組設計、驗證、系統整合、FPGA後端最佳化、硬體測試、軟體開發和除錯等等全部環節一個人搞定,可以說是點滿了技能樹上所有的技能點。
這樣的人就像阿里的多隆,一個人可以頂一支團隊,公司缺他不可。因此如果一個FPGA工程師能夠獲取軟硬體的全棧能力,將是團隊乃至全公司的最主要競爭能力。
作為一個新人,應該如何培養自己的FPGA全棧能力呢?其實,帶頭大哥的技術功底也並非透過一天練成的,最重要的是時間的積累,不斷的鑽研以及真正的興趣。這些道理在任何行業都是一樣的。一開始可以先重點突破技能樹的某個分支,但最終的目標還是要讓整個技能樹枝繁葉茂。
此外,工程師需要的軟技能也是不可或缺的,例如獨立思考的能力、溝通、寫作以及良好的英語等等。
希望以上的回答能對各位朋友有所幫助。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901775/viewspace-2636596/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 測試的核心競爭力是什麼?
- 程式設計師的核心競爭力是什麼?程式設計師
- 主題公園的核心競爭力是什麼?
- 什麼是程式設計師的核心競爭力?程式設計師
- 程式設計師最核心的競爭力是什麼?程式設計師
- 未來車企的生存核心是什麼?計算力=競爭力
- 千鋒Java專家解讀:Java軟體工程師的核心競爭力是什麼?Java軟體工程工程師
- 測試工程師的核心競爭力工程師
- 哈工大車萬翔教授:NLPer的核心競爭力是什麼?
- 什麼才是程式設計師的核心競爭力?程式設計師
- 優思學院|精益生產的核心競爭力是什麼?
- 什麼是你的核心競爭力之六正視你的弱點
- 【轉載】什麼才是你的不可替代性和核心競爭力
- 四週年:聊聊測試工程師的核心競爭力工程師
- 測試工程師核心競爭力的7大方面工程師
- 核心競爭力分析模型(轉載)模型
- 探尋京東雲核心競爭力的源泉
- 推薦演算法是今日頭條的核心競爭力嗎?演算法
- 核心競爭力識別工具(轉載)
- 產品開發是影響企業競爭力的第一核心
- 遊戲技術策劃核心競爭力是什麼?在團隊中能夠起到怎樣的關鍵作用?遊戲
- 遊戲策劃的自我修養-核心競爭力篇遊戲
- 技術“破圈”核心競爭力迭代路徑
- 製造業核心競爭力從何而來
- 程式設計師怎樣找到自己的核心競爭力程式設計師
- 電子行業提升核心競爭力,推行六西格瑪培訓是必然行業
- 採購CRM系統提高企業核心競爭力
- 另一種核心競爭力:把握顧客需求(轉)
- “買量GS”最全盤點,存量市場的核心競爭力
- 邦芒攻略:提升職場核心競爭力的7點建議
- 做個清醒的程式設計師之打造核心競爭力程式設計師
- 對話華為雲.雲遊戲:雲手遊是重心,鯤鵬雲服務是核心競爭力遊戲
- 今天聊:2020 年疫情下的前端核心競爭力前端
- 開源雲技能認證:系統管理員的核心競爭力
- 談談如何在面試中發掘程式猿的核心競爭力面試
- 創業的核心競爭力其實在於創始人本身創業
- 社群平臺草根創業的搭建、營銷及核心競爭力創業
- 阿里遊戲的競爭力不在阿里阿里遊戲