-
1 # 深圳王晟磊
-
2 # ICer世界
個人認為就數字前端和FPGA而言,很多需要掌握的知識是相通的,愚見如下:
數位電路基礎。我還是把數位電路基礎放在首位,原因是這確實是做數字設計的基礎。很多人會認為數字前端不就寫個verilog或vhdl嗎,FPGA不也是寫寫verilog就行路嗎,但真正的設計應該是建立在數位電路基礎上的,程式碼只是我們表達的語言而已。我們在用語言表達前,應該能預知我們想實現的是DFF,還是Mux,是AND Gate還是NOR Gate,只有這樣才能設計出漂亮的電路。雖然現在有很多Tool,可以高階語言轉換,我個人認為這些都只是實現手段而已,仍然離不開這些基礎。一個沒有這些基礎的前端設計者,是沒法將語言表達的邏輯和真實電路聯絡在一起的,也就沒法知道Tool綜合出來的netlist是否正確,也沒法在需要eco的時候從gate上去分析考慮。同理,做FPGA的時候,不懂數位電路基礎,是沒法理解FPGA內的LUT結構的,也沒法對FPGA的設計進行最佳化。
CMOS基礎。不管現在的工藝發展到什麼程度,至少現在CMOS的理論基礎仍然是我們理解數位電路的基石。在數位電路基礎中有覆蓋這部分的基礎內容,我還是單獨提出來說,是因為數位電路基礎中會給到CMOS基本電路的分析,但對CMOS本身的原理以及工藝過程涉及得並不夠深入。學習這部分內容,能深刻理解DFF和各種library中的cell的結構以及工作原理,這能幫助設計人員在遇到尤其是timing問題時從理論上進行分析。比如我們在晶片測試過程或者FPGA除錯時經常遇到的問題就是穩定性,FPGA工作兩小時或時間更長點後就出錯了,這是什麼原因呢?晶片工作不穩定,提升下core電壓就正常了,這又是什麼原因呢?這些都可以透過深入理解CMOS的工作機理找到答案。工藝的提升,導致我們需要考慮的CMOS的影響因素更多,在低工藝下被忽略的引數也需要考慮,所以CMOS的工藝過程能有涉及會加深我們對這方面的理解。
描述語言。如前文所說,verilog也好,vhdl也好,systemc也好,只要工具支援,都無可厚非,只要能準確表述自己的設計就行。但是,不管用哪種語言對設計進行描述,我們都要遵循一定的coding style。coding style從大的範圍來講,最適用的就是lint檢查的工具中的coding rule,這基本是工具能識別的coding style,如果lint tool都無法透過,那意味著設計的描述無法被工具識別為有效的電路;另外就是每個團隊有自己的特定rule,包括命名的規則,還有特定語句的使用等。
Tool。前端設計涉及的工具包括lint check相關的,simulator相關的,synthesis相關的,DFT相關的,STA相關的,LEC相關的,一個優秀的前端設計人員離不開這些工具的使用。Lint check相關的,如spyglass;simulator如vcs,ncverilog;synthesis相關的如dc;STA相關的如PT; LEC相關的如formal;......對FPGA而言,基本也是包括這些flow tool的,只是像xilinx的vivado已經包含了lint check, simulator, synthesis以及DFT的function而已,但基本flow和原理都是相同的。
Debug的能力。再牛的人做的設計也是可能有bug的,遇到bug不可怕,解就行,所以前端設計人員需要debug的能力,FPGA也是如此。debug的能力一方面是需要深厚的理論基礎,另一方面則是需要豐富的debug經驗,這個只能是慢慢積累吧。
另外,關於前端設計和FPGA的前景,我個人覺得挺好的,但最關鍵的還是個人喜歡,當看著自己的設計在實際中被應用,尤其是很直觀的,比如影象輸出,音樂播放等。這和任何一個行業都一樣,作為從事該行業中的個體,不管是夕陽還是朝陽,只要是自己的興趣所在,都能作出一定的成績。何況,現在這個行業在國內還正是大力發展,需要大量人才的階段,希望有更多喜歡的人投入到這個行業中來。
回覆列表
綜合工具,模擬工具。
其中xilinx和Altera,Lattice,Actel,Atmel,Avago,Cypress,都有自己的開發環境,裡面包含了一系列工具。當然如果水平高了還是需要用第三方工具。
學習vhdl,verilog語言其中的一門,筆者是老一代的前端和fpga開發者,一直用的vhdl儘管非常死板,但是比較好理解底層。