經(jīng)過(guò)了立項(xiàng)和規(guī)格和計(jì)劃的確認(rèn),此處我們開(kāi)始講芯片設(shè)計(jì)。 這個(gè)內(nèi)容就挺多了,也可能是大家最關(guān)心的一個(gè)部分,可能要分幾次講。在整個(gè)流程中處于這位置。 此處由于我自己還是對(duì)數(shù)字芯片系統(tǒng)更了解,所以按數(shù)字的來(lái)。模擬芯片的設(shè)計(jì)流程后續(xù)有精力或者請(qǐng)個(gè)大佬補(bǔ)個(gè)概述。芯片的設(shè)計(jì)流程還是比較長(zhǎng)的,我們先來(lái)個(gè)birdmap。這個(gè)圖很復(fù)雜,看不懂的名詞不要慌,我會(huì)一步一步講。 我們先來(lái)講第一部分,這個(gè)部分其實(shí)比較簡(jiǎn)單。所以就在此處講講,后續(xù)不再單獨(dú)開(kāi)章節(jié)來(lái)講這個(gè)東西。芯片最終還是算法的一種加速。如果一個(gè)東西你用C++都實(shí)現(xiàn)不了,芯片怎么可能實(shí)現(xiàn)。第一步就是算法。 算法實(shí)現(xiàn)其實(shí)有兩個(gè)步驟的。為什么有兩個(gè)步驟呢,這就涉及到浮點(diǎn)和定點(diǎn)的區(qū)別。浮點(diǎn)精讀高,但是硬件實(shí)現(xiàn)代價(jià)大,定點(diǎn)成本低,硬件實(shí)現(xiàn)代價(jià)小。一般先設(shè)計(jì)浮點(diǎn)算法,然后再犧牲一點(diǎn)精度,搞成定點(diǎn)算法。 浮點(diǎn)算法設(shè)計(jì) 浮點(diǎn)算法偏重于功能,由于浮點(diǎn)精度高,最原始的功能一般會(huì)用浮點(diǎn)實(shí)現(xiàn)。比如你要整一個(gè)AI芯片,你首先得用pytorch或者tensorflow訓(xùn)練出一個(gè)浮點(diǎn)網(wǎng)絡(luò),看看效果是不是還行,能不能實(shí)現(xiàn)網(wǎng)絡(luò)正常的功能。算法鏈路先測(cè)試好了后續(xù)才能用芯片加速。浮點(diǎn)算法一般由純軟件工程師設(shè)計(jì)的。他們并不需要知道硬件實(shí)現(xiàn),只需要對(duì)功能的正確性負(fù)責(zé)即可。 定點(diǎn)算法設(shè)計(jì) 定點(diǎn)算法就是找個(gè)位置,把浮點(diǎn)中的指數(shù)為給歸一了。精度是肯定會(huì)損失的,但是換來(lái)了硬件設(shè)計(jì)的簡(jiǎn)單。這個(gè)也容易理解,用芯片算一個(gè)3.5+0.025和用芯片算一個(gè)3500+25復(fù)雜程度完全不一樣啊。為了平衡精度和定點(diǎn)位寬,此處定點(diǎn)化可以有各種門道,比如采用批處理的定點(diǎn)化,一部分?jǐn)?shù)據(jù)采用一個(gè)定點(diǎn)位置,另一部分?jǐn)?shù)據(jù)采用另一個(gè)定點(diǎn)位置等等。總之就是,這一步實(shí)現(xiàn)的是如何用最小的定點(diǎn)位寬,在精度可接受的前提下實(shí)現(xiàn)浮點(diǎn)的算法。 和其他一些復(fù)雜的東西類似,比如編譯器,網(wǎng)站等等類似,芯片設(shè)計(jì)也有前端和后端之分,前端到網(wǎng)表,后端到版圖。 前端主要包含4個(gè)步驟:文檔設(shè)計(jì)、編碼、驗(yàn)證、前端實(shí)現(xiàn)。主要就是從設(shè)計(jì)需求到網(wǎng)表的一個(gè)流程。 這個(gè)步驟,主要是把網(wǎng)表整成我們最后的版圖??梢灾苯觼G給代工廠生產(chǎn)了。 一共7個(gè)步驟。此處給個(gè)概述,后面專門寫文章介紹。 準(zhǔn)備:這一個(gè)步驟中準(zhǔn)備主要是準(zhǔn)備一些庫(kù)文件,前端準(zhǔn)備好的網(wǎng)表,劃分好harden, 然后穿線。 設(shè)計(jì)規(guī)劃:設(shè)計(jì)規(guī)劃主要是擺放一些大件,比如memory硬核,IO PAD, 電源網(wǎng)絡(luò)等等,方便下一個(gè)步驟擺放小單元。 布局:這個(gè)步驟就把具體的單元擺放到版圖上。 綜合時(shí)鐘:把時(shí)鐘網(wǎng)絡(luò)擺放好,保證到各個(gè)地方的長(zhǎng)度都差不多。 布線:真正把線聯(lián)通。此處會(huì)通過(guò)STA,不斷調(diào)整布局以及routing。 ECO: 版圖搞定后,需要工程師手動(dòng)修一些東西。 芯片收尾:加入dummy, filler cells等等,讓密度滿足光刻需求。 最后驗(yàn)證:交芯片前,最后再驗(yàn)證一把。主要包含了后仿,形式驗(yàn)證,物理驗(yàn)證。 這7個(gè)步驟完成以后,就可以交版圖給代工廠了,接下來(lái)就是等芯片回片。 最后的輸出大概這設(shè)個(gè)樣子的。 本篇內(nèi)容是芯片設(shè)計(jì)的提綱。這個(gè)階段的輸入是設(shè)計(jì)需求,輸出是芯片版圖。設(shè)計(jì)主要涉及到3方面的內(nèi)容,算法設(shè)計(jì),芯片前端設(shè)計(jì),芯片后端設(shè)計(jì)。一整個(gè)流程很長(zhǎng),至此芯片的設(shè)計(jì)過(guò)程就結(jié)束了,下一個(gè)過(guò)程就是制造! |
|
來(lái)自: 新用戶62592529 > 《芯片》