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