當下,集成電路設計發(fā)展趨勢越來越好,許多公司都在積極開發(fā)能夠?qū)崿F(xiàn)移動端,汽車端,消費類電子端的智能硬件。尤其對于移動端人工智能硬件的實現(xiàn)方法,有兩大流派,即FPGA派和ASIC派。
對于大多數(shù)微電子專業(yè)的同學來說,在畢業(yè)季時,選擇FPGA還是AISC,是一個極為糾結(jié)的問題,一來是學校里大多做的都是FPGA項目,二來對兩者缺乏了解,沒有一個對職業(yè)發(fā)展的正確判斷。
今天就來聊聊FPGA和ASIC在各個維度上的區(qū)別。
一、FPGA和ASIC有哪些異同?
很多入行不久的朋友潛意識里會認為FPGA是很高深的東西,能掌握FPGA的一定都是極其厲害的人。其實,這是一個誤解。
我們所討論的FPGA只是基于已有的FPGA芯片去做后端排列組合的工作內(nèi)容,而不是設計制造新的FPGA芯片,世界上能做這件事的公司屈指可數(shù)。
FPGA開發(fā)流程遵循ASIC開發(fā)的流程,都是集成電路方向,coding使用的編程語言和編程邏輯基本一致,絕大多數(shù)電子類硬件產(chǎn)品,能使用FPGA做出來,就能用ASIC做出來,通過兩種方式都能實現(xiàn)同樣的功能。
二、FPGA和ASIC在設計層面的比較
FPGA和ASIC區(qū)別更多的體現(xiàn)在做設計的一些細小的方面,ASIC的設計規(guī)模通常遠遠大于FPGA的,運行時鐘也遠遠高于FPGA,門電路數(shù)量上也有差別。
而且,ASIC只有一次機會,F(xiàn)PGA因為可以編程,所以coding的靈活性相對提高。僅僅從RTL設計上來說:
(1)ASIC對編碼風格和編碼技術(shù)的要求更高,為了有利于后端以及后續(xù)的check,這就要求所有模塊的coding風格要一致。
(2)ASIC做邏輯設計更趨于保守,對代碼的任何改動都要很謹慎,并且要做備選的選擇,以防改錯。RTL的任何修改幾乎都是增量修改,即便以前的邏輯錯了,也不會刪掉,而是多做一個分支。
(3)ASIC設計對時鐘和復位更加重視。尤其是時鐘,對ASIC的設計非常關(guān)鍵,復位對掃描鏈測試(DFT)又很關(guān)鍵。ASIC在這方面都需要采用庫來進行設計。ASIC通常不會用counter分頻,這樣會導致時鐘不干凈,除非是很低頻的時鐘。ASIC對于跨時鐘域的信號處理也謹慎很多。對于clock的關(guān)閉和打開也需要嚴格檢查。
(4)ASIC要考慮SCAN測試和BIST的問題,所以設計的時候還需要為SRAM做BIST插入,需要為SCAN預留接口,雖然大部分都是工具干的,但是經(jīng)常RTL作者也要手動做一些頂層工作,比如SCAN時鐘的來源等邏輯。
(5)FPGA有很多用現(xiàn)成IP,需要考慮開發(fā)板上的資源合理的利用,不能把某一資源撐爆了,而且FPGA存在資源浪費問題。ASIC很少考慮這種問題,ASIC考慮的永遠是性能和功耗,在邏輯選擇上除了SRAM,CLK和復位相關(guān),都是手寫的,邏輯基本沒有浪費,也更加緊湊。
三、FPGA和ASIC在市場需求上的差異。
FPGA主要用于要求快速迭代或者小批量產(chǎn)品,或者作為ASIC的算法驗證加速。ASIC用于設計規(guī)模大,復雜度比較高的芯片,或者是成熟度高,產(chǎn)量比較大的產(chǎn)品。
1、上市速度:FPGA上市開發(fā)周期短,上市速度快,ASIC開發(fā)周期長,上市速度慢。
2、產(chǎn)品性能:FPGA產(chǎn)品性能較低,存在資源浪費。ASIC產(chǎn)品性能高。
3、開發(fā)成本:開發(fā)成本在這里需要看是小批量生產(chǎn)還是大批量生產(chǎn),舉一個很簡單的例子,小批量生產(chǎn)可以請幾個熟練的師傅,買好材料,手工做幾個產(chǎn)品。但是大批量生產(chǎn)呢,適合流水線作業(yè),這樣單個產(chǎn)品的成本會比較低。
一些對價格不是很敏感的地方,比如企業(yè)應用,軍事和工業(yè)電子等等(在有些地方可以重新配置真的很重要)。而ASIC也有一定的可重配置能力,在設計的時候把電路做成某些參數(shù)可調(diào)的即可。ASIC大批量生產(chǎn)致使低成本。適合電子消費類應用,而且在消費類電子中現(xiàn)在現(xiàn)在來說是不可配置。
四、FPGA和ASIC的共通點
至于共通點,需要了解掌握FPGA應當具備以下能力:
1、需要有數(shù)字邏輯的設計思想 :針對任意一項具體的功能,如何組合你器件內(nèi)的單元來實現(xiàn),需要哪些單元?如何連接這些單元?各個單元之間連接的先后順序如何?
2、一套從頭到尾執(zhí)行的設計環(huán)境(FPGA廠商提供的編譯工具 - Lattice的Diamond、Intel的Quartus、Xilinx的Vivado)
3、一種連接你的邏輯思維和機器操作之間的溝通工具 - 設計語言(原理圖、Verilog、VHDL等等)。 而設計思想和語言工具在ASIC上也是所必須的,說白了大家都要寫Verilog,很多地方自然互通。
這也是為什么FPGA更容易往數(shù)字IC轉(zhuǎn)行的原因。
更深層次的則是做RTL的工程師一定要往系統(tǒng)層面的工程師轉(zhuǎn),只在RTL和協(xié)議這條路上走下去,沒有任何希望。 RTL出身的工程師,在這方面本身就具有一點點優(yōu)勢,而且從技術(shù)上來說,數(shù)字IC設計只會比FPGA更加復雜,同時更具競爭力:
- 更快的時鐘更統(tǒng)一的coding style更嚴格的STA更系統(tǒng)的仿真更低的功耗更少的可用資源
至于UVM仿真,即便不做IC,傳統(tǒng)的FPGA工程師也應該有所掌握,一個系統(tǒng)的仿真對產(chǎn)品的開發(fā)和后期維護,節(jié)省的時間不可估量。 FPGA受限于環(huán)境因素,ASIC/SOC一定是之后發(fā)展的大趨勢。
結(jié)語
FPGA 和 ASIC 各有所長,F(xiàn)PGA 的可配置性更適合科研、軍工等應用,而 ASIC 的高性能和低成本則適合消費電子領(lǐng)域(包括移動終端)。
對于大多數(shù)在讀的集成電路、微電子專業(yè)的在校生而言,IC設計各個細分的方向缺口更大一些,所以選擇IC設計更好一些。