芯片近些年來一直是風(fēng)口,幾乎所有有實(shí)力的上市公司都要蹭下這個(gè)熱度:自研芯片。這也誕生了很多工作崗位,相對(duì)于硬件工程師,軟件開發(fā)工程師能做的事情有限,但是也是非常重要的,而且跟著風(fēng)口喝口湯也是可以的。整體來說:需求、架構(gòu)、驗(yàn)證是需要軟件參與的,本文結(jié)合自己的部分經(jīng)驗(yàn),從最基本的芯片設(shè)計(jì)流程進(jìn)行介紹,其中會(huì)涉及一些可能你經(jīng)常聽到的卡脖子技術(shù)。
芯片設(shè)計(jì)的四個(gè)步驟,如上圖,我們只關(guān)注需求和設(shè)計(jì),制造和封裝不是我們軟件工程師能左右的。
1. 市場(chǎng)需求
要做一個(gè)芯片,首先得有需求,也就是應(yīng)用場(chǎng)景,有市場(chǎng)去買單。當(dāng)前科技時(shí)代,電子技術(shù)在各方面都有應(yīng)用,可以說有電路板的地方就有芯片需求。例如手機(jī)、電腦、智能家具,我們的衣食住行用等方方面面。
有了需求,就可以根據(jù)需求梳理出來我們硬件上需要那些模塊功能和性能指標(biāo),以及軟硬件上要用的技術(shù)。這些需要軟硬件的架構(gòu)師進(jìn)行設(shè)計(jì),最終形成Spec。 Spec會(huì)確定所有的功能和要求,之后才可以進(jìn)行芯片設(shè)計(jì)。
軟件在做架構(gòu)設(shè)計(jì)的時(shí)候,有時(shí)候需要進(jìn)行一些驗(yàn)證,看軟件是否支持,可以使用qemu模擬運(yùn)行的方式看應(yīng)用能支持不。
軟硬件在做架構(gòu)設(shè)計(jì)的時(shí)候,可以使用很多IC廠商提供的IP集成工具來模擬SoC,就是用純軟件的方式把SoC上的各個(gè)IP都添加模擬出來,例如VDK(Virtualizer Development Kit)工具。
這里說的VDK工具,其實(shí)就是一種電子設(shè)計(jì)自動(dòng)化EDA(Electronics Design Automation)工具,也就是我們俗稱的EDA工具。這是我們卡脖子的技術(shù)之一,很復(fù)雜,而在芯片設(shè)計(jì)中非常的重要,貫穿設(shè)計(jì)、驗(yàn)證和制造,特別是驗(yàn)證可以大力減少出錯(cuò)成本和縮短研發(fā)周期??芍^“沒有金剛鉆,不攬瓷器活”。詳細(xì)可以參考:淺談EDA驗(yàn)證工具,芯片開發(fā)到底有多難?
VDK與qemu的區(qū)別就是qemu支持的芯片型號(hào)有限,自己添加很麻煩,要修改qemu的源碼。而在VDK圖形界面上點(diǎn)一點(diǎn)就可以添加一個(gè)IP,而且很多IP是不出名的,廠商私有的不會(huì)廣泛支持,就需要自己加。所以IP廠商基本會(huì)有自己的集成驗(yàn)證工具供客戶使用。
芯片開發(fā)的周期很漫長(zhǎng),在最開始需求階段,一些應(yīng)用上的軟件也許就具備開發(fā)條件了,例如在qemu上進(jìn)行app應(yīng)用的開發(fā),一些依賴于SoC上IP的應(yīng)用,可以使用VDK做一些數(shù)據(jù)流的通路開發(fā),并不支持具體的業(yè)務(wù),這樣后續(xù)拿到真正芯片后就可以省略很多一部分研發(fā)任務(wù),并且可以提前驗(yàn)證軟件技術(shù)方案的可行性。 如果軟件技術(shù)方案不可行需要修改SoC硬件也可以及早的修改。因?yàn)樾酒邪l(fā)越到后期修改的成本越大,如果流片了還需要修改,那就快game over了,巨額資金打水漂。所以寧愿先投入研發(fā)人員去慢慢磨,也不愿意在硬件上去試錯(cuò),人可沒芯片生產(chǎn)值錢。
1.2 關(guān)于架構(gòu)師
數(shù)字集成電路設(shè)計(jì)實(shí)現(xiàn)流程是個(gè)相當(dāng)漫長(zhǎng)的過程,拿手機(jī)基帶芯片為例,對(duì)于3G, 4G, 5G, 工程師最初見到的是無數(shù)頁的協(xié)議文檔。
架構(gòu)師要根據(jù)協(xié)議來確定:協(xié)議的哪些部分可以用軟件實(shí)現(xiàn),哪些部分需要用硬件實(shí)現(xiàn);
算法工程師要深入研讀協(xié)議的每一部分,并選定實(shí)現(xiàn)所用算法;
芯片設(shè)計(jì)工程師,需要將算法工程師選定的算法,描述成RTL;
芯片驗(yàn)證工程師,需要根據(jù)算法工程師選定的算法設(shè)計(jì)測(cè)試向量,對(duì)RTL 做功能、效能驗(yàn)證;
數(shù)字實(shí)現(xiàn)工程師,需要根據(jù)算法工程師和設(shè)計(jì)工程師設(shè)定的目標(biāo)PPA 將RTL 揉搓成GDS;
芯片生產(chǎn)由于太過復(fù)雜,完全交由代工廠完成,封裝亦是;
對(duì)于測(cè)試,大部分公司都是租借第三方測(cè)試基臺(tái)由自己的測(cè)試工程師完成,只有少部分土豪公司才會(huì)有自己的測(cè)試基臺(tái)。
架構(gòu)師是芯片靈魂的締造者,是食物鏈的最頂端,是牛逼閃閃的存在。
2. 芯片設(shè)計(jì)概述
芯片設(shè)計(jì)分為兩部分,前端(邏輯設(shè)計(jì))和后端(物理設(shè)計(jì))。
?
? 這其中很多流程看似高大上,但是有IP供應(yīng)商提供的工具以后,其實(shí)就是界面上點(diǎn)點(diǎn)的事情。 芯片設(shè)計(jì)中涉及的工具繁多,基本都是老外的,這需要國內(nèi)芯片公司的崛起,有自己的很多IP后才可以投入到這些工具的研發(fā)中去。
有一個(gè)說法就是老外掌握一項(xiàng)新技術(shù),首先就是加密做界面化,不提供源碼然后商業(yè)賣錢。而這個(gè)周期要延遲一兩年到市場(chǎng)上,而中國則直接推給自己的客戶,客戶有能力抄的就抄跑了,大家都不太注重商業(yè)保密,可能技術(shù)比較low不用藏著掖著,大家都是抄的。。。這就是中國速度。
3. 芯片前端設(shè)計(jì)
RTL設(shè)計(jì)
驗(yàn)證
靜態(tài)時(shí)序分析
覆蓋率
ASIC邏輯綜合
3.1 RTL設(shè)計(jì)
首先要確定芯片的工藝,如下圖:
RTL(register transfer level) 設(shè)計(jì):利用硬件描述語言,如VHDL,Verilog,System Verilog, 對(duì)電路以寄存器之間的傳輸為基礎(chǔ)進(jìn)行描述。 RTL使用代碼編寫,來實(shí)現(xiàn)功能模塊,就是一個(gè)個(gè)IP。這些IP分為數(shù)字IP和模擬IP:
SOC芯片最終由SOC integration工程師把各個(gè)IP集成到一起。
上圖中我們可以看到一個(gè)典型的SoC有那些IP,例如CPU,DSP,USB外設(shè),memory等。 對(duì)于RTL還需要進(jìn)行支持BIST(自測(cè)試),設(shè)計(jì)的時(shí)候也需要做可測(cè)性設(shè)計(jì)DFT(Design For Test)
除了對(duì)功能測(cè)試,還需要對(duì)代碼進(jìn)行自動(dòng)檢查:通過lint, Spyglass等工具,針對(duì)電路進(jìn)行設(shè)計(jì)規(guī)則檢查,包括代碼編寫風(fēng)格,DFT,命名規(guī)則和電路綜合相關(guān)規(guī)則等檢查。
3.2 驗(yàn)證
驗(yàn)證是保證芯片功能正確性和完整性最重要的一環(huán)。驗(yàn)證的工作量也是占整個(gè)芯片開發(fā)周期的50%-70%,相應(yīng)的,驗(yàn)證工程師與設(shè)計(jì)工程師的數(shù)量大概在2-3:1。從驗(yàn)證的層次可以分位:模塊級(jí)驗(yàn)證,子系統(tǒng)級(jí)驗(yàn)證和系統(tǒng)級(jí)驗(yàn)證。從驗(yàn)證的途徑可以分為:模擬(simulation),仿真和形式驗(yàn)證(formality check)。
這里又出現(xiàn)了芯片驗(yàn)證,這里軟件開發(fā)人員又來活了,之前在qemu、VDK上模擬的程序現(xiàn)在可以在RTL上模擬了,這里是越來越貼近硬件了。在多平臺(tái)驗(yàn)證雖然很繁瑣,就像驗(yàn)證完一個(gè)玩具系統(tǒng),然后繼續(xù)下一個(gè),好似沒有用,但是每一次都是在進(jìn)步。 這里需要注意的一點(diǎn)就是在各個(gè)驗(yàn)證平臺(tái)下的代碼復(fù)用問題,大的模塊差異可以通過編譯時(shí)區(qū)分,小的差異可以通過運(yùn)行時(shí)讀取標(biāo)志寄存器來在代碼里面走不同分支或加載不同的配置文件區(qū)分,這里需要把握一個(gè)度。 一點(diǎn)經(jīng)驗(yàn):多用配置文件例如xml、dts、config文件,不用宏,直接debug版本適應(yīng)所有驗(yàn)證平臺(tái),編譯時(shí)借助編譯工具腳本自動(dòng)區(qū)分。
3.3 靜態(tài)時(shí)序分析(STA)
靜態(tài)時(shí)序分析是套用特定的時(shí)序模型(timing model),針對(duì)特定電路,分析其是否違反designer給定的時(shí)序限制(timing constraint)。
目前主流的STA工具是synopsys的Prime Time。
? 靜態(tài)時(shí)序分析的作用:
確定芯片最高工作頻率
通過時(shí)序分析可以控制工程的綜合、映射、布局布線等環(huán)節(jié),減少延遲,從而盡可能提高工作頻率。
檢查時(shí)序約束是否滿足
可以通過時(shí)序分析來查看目標(biāo)模塊是否滿足約束,如不滿足,可以定位到不滿足約束的部分,并給出具體原因,進(jìn)一步修改程序直至滿足要求。
分析時(shí)鐘質(zhì)量
時(shí)鐘存在抖動(dòng)、偏移、占空比失真等不可避免的缺陷。通過時(shí)序分析可以驗(yàn)證其對(duì)目標(biāo)模塊的影響。
3.4 覆蓋率
覆蓋率作為一種判斷驗(yàn)證充分性的手段,已成為驗(yàn)證工作的主導(dǎo)。從目標(biāo)上,可以把覆蓋率分為兩類:代碼覆蓋率 作用:檢查代碼是否冗余,設(shè)計(jì)要點(diǎn)是否遍歷完全。檢查對(duì)象:RTL代碼 功能覆蓋率 作用:檢查功能是否遍歷 檢查對(duì)象:自定義的container 在設(shè)計(jì)完成時(shí),要進(jìn)行代碼覆蓋率充分性的sign-off, 對(duì)于覆蓋率未達(dá)到100%的情況,要給出合理的解釋,保證不影響芯片的工能。
3.5 ASIC綜合
邏輯綜合的結(jié)果就是把設(shè)計(jì)實(shí)現(xiàn)的RTL代碼翻譯成門級(jí)網(wǎng)表(netlist)的過程。
在做綜合時(shí)要設(shè)定約束條件,如電路面積、時(shí)序要求等目標(biāo)參數(shù)。
工具:synopsys的Design compiler, 綜合后把網(wǎng)表交給后端。
至此我們前端的工作就結(jié)束啦!
4. 后端設(shè)計(jì)
1. 邏輯綜合 2. 形式驗(yàn)證 3. 物理實(shí)現(xiàn) 4. 時(shí)鐘樹綜合-CTS 5. 寄生參數(shù)提取 6. 版圖物理驗(yàn)證
4.1 邏輯綜合
同3.5中前端的邏輯綜合
4.2 形式驗(yàn)證
1)驗(yàn)證芯片功能的一致性 2)不驗(yàn)證電路本身的正確性 3)每次電路改變后都需驗(yàn)證 形式驗(yàn)證的意義在于保障芯片設(shè)計(jì)的一致性,一般在邏輯綜合,布局布線完成后必須做。工具:synopsys Formality
4.3 物理實(shí)現(xiàn)
物理實(shí)現(xiàn)可以分為三個(gè)部分:
布局規(guī)劃 floor plan
布局 place
布線 route
物理實(shí)現(xiàn)可以分為三個(gè)部分:
布局規(guī)劃 floor plan
布局 place
布線 route
布圖規(guī)劃floor plan 布圖規(guī)劃是整個(gè)后端流程中作重要的一步,但也是彈性最大的一步。因?yàn)闆]有標(biāo)準(zhǔn)的最佳方案,但又有很多細(xì)節(jié)需要考量。 布局布線的目標(biāo):優(yōu)化芯片的面積,時(shí)序收斂,穩(wěn)定,方便走線。 工具:IC compiler,Encounter 布圖規(guī)劃完成效果圖:
布局 布局即擺放標(biāo)準(zhǔn)單元,I/O pad,宏單元來實(shí)現(xiàn)個(gè)電路邏輯。 布局目標(biāo):利用率越高越好,總線長(zhǎng)越短越好,時(shí)序越快越好。 但利用率越高,布線就越困難;總線長(zhǎng)越長(zhǎng),時(shí)序就越慢。因此要做到以上三個(gè)參數(shù)的最佳平衡。 布局完成效果圖:
布線 布線是指在滿足工藝規(guī)則和布線層數(shù)限制、線寬、線間距限制和各線網(wǎng)可靠絕緣的電性能約束條件下,根據(jù)電路的連接關(guān)系,將各單元和I/O pad用互連線連接起來。
4.4 時(shí)鐘樹綜合——CTS
Clock Tree Synthesis,時(shí)鐘樹綜合,簡(jiǎn)單點(diǎn)說就是時(shí)鐘的布線。 由于時(shí)鐘信號(hào)在數(shù)字芯片的全局指揮作用,它的分布應(yīng)該是對(duì)稱式的連到各個(gè)寄存器單元,從而使時(shí)鐘從同一個(gè)時(shí)鐘源到達(dá)各個(gè)寄存器時(shí),時(shí)鐘延遲差異最小。這也是為什么時(shí)鐘信號(hào)需要單獨(dú)布線的原因。
4.5 寄生參數(shù)提取
由于導(dǎo)線本身存在的電阻,相鄰導(dǎo)線之間的互感,耦合電容在芯片內(nèi)部會(huì)產(chǎn)生信號(hào)噪聲,串?dāng)_和反射。這些效應(yīng)會(huì)產(chǎn)生信號(hào)完整性問題,導(dǎo)致信號(hào)電壓波動(dòng)和變化,如果嚴(yán)重就會(huì)導(dǎo)致信號(hào)失真錯(cuò)誤。提取寄生參數(shù)進(jìn)行再次的分析驗(yàn)證,分析信號(hào)完整性問題是非常重要的。 工具Synopsys的Star-RCXT
4.6版圖物理驗(yàn)證
這一環(huán)節(jié)是對(duì)完成布線的物理版圖進(jìn)行功能和時(shí)序上的驗(yàn)證,大概包含以下方面: LVS(Layout Vs Schematic)驗(yàn)證:簡(jiǎn)單說,就是版圖與邏輯綜合后的門級(jí)電路圖的對(duì)比驗(yàn)證; DRC(Design Rule Checking):設(shè)計(jì)規(guī)則檢查,檢查連線間距,連線寬度等是否滿足工藝要求; ERC(Electrical Rule Checking):電氣規(guī)則檢查,檢查短路和開路等電氣規(guī)則違例; 實(shí)際的后端流程還包括電路功耗分析,以及隨著制造工藝不斷進(jìn)步產(chǎn)生的DFM(可制造性設(shè)計(jì))問題等。 物理版圖以GDSII的文件格式交給芯片代工廠(稱為Foundry)在晶圓硅片上做出實(shí)際的電路。
最后進(jìn)行封裝和測(cè)試,就得到了我們實(shí)際看見的芯片。 ?
編輯:黃飛
?
評(píng)論
查看更多