芯片可分為數字芯片、模擬芯片、數模混合芯片等多種類別。不同芯片類別的設計流程也存在一些差異。
接下來,我們就以數字芯片為例,詳細了解一下芯片到底是如何設計出來的。
芯片設計的主要流程
芯片設計總體分為規格定義、系統設計、前端設計(Front-End Design) 和后端設計(Back-End Design)四個階段。
目前,主流的芯片設計思路是自頂向下(Top-Down),也就是“先宏觀,再微觀”。
簡單來說,就是先進行芯片整體設計(功能、接口、模塊),再進行各個模塊的設計。在進行模塊設計時,先設計邏輯原理(寫代碼),然后再用EDA工具轉化為邏輯電路圖(網表),最后再設計物理電路圖(版圖)。
整個過程,穿插著大量的“設計-驗證(仿真)-設計-驗證(仿真)”循環。需要確保每一步都準確無誤,才會進入下一步。
四大階段中,前端設計,即邏輯設計,主要是將芯片的功能需求轉化為可實現的電路邏輯,確保功能正確性,不考慮物理實現細節。
后端設計,即物理設計,專注于物理實現,將前端的設計轉化為實際的版圖。這個階段需要腳踏實地,考慮制造工藝約束、信號完整性、功耗管理等實際問題,解決物理實現的工藝挑戰。
前端設計和后端設計的各個子階段如下圖所示:
規格定義
芯片設計的第一步,是搞明白自己到底要做一款什么樣的芯片。
這不能光憑個人想當然,而是需要芯片設計團隊和客戶(甲方)以及利益相關方進行充分溝通,了解具體設計需求之后確定。
需求包括:到底要實現什么功能、用于什么環境、算力、成本、功耗大概是多少,需要提供哪些接口,需要遵循什么安全等級等。
所有的需求會轉化為芯片的基本參數,最終以Spec(芯片規格說明書)文件的形式進行記錄。芯片設計的基本要求,就此確定。
系統設計
接下來,就要由架構工程師出馬了。
架構工程師要根據規格Spec,設計具體的實現方案,包括但不限于:整個芯片的架構、業務模塊、供電、接口、時序、性能指標、面積和功率約束等。
芯片的架構主要由芯片的類別和功能所決定。
如果芯片主要用于通用計算和數據處理,馮?諾依曼架構可能是一個合適的選擇。如果側重于高速的數據處理和實時性要求高的應用,如數字信號處理或一些特定的嵌入式系統,哈佛架構可能更具優勢。
對于復雜的芯片設計,還可能采用多核架構或異構集成架構(混搭)。
芯片的整體布局(示例)
選定架構后,架構師還要在細節上進行優化和創新,例如調整各個功能模塊之間的連接方式、優化數據通路以減少延遲,或者采用新的計算模式等。
架構師還要確定哪些功能可以用軟件實現,哪些部分需要用硬件實現,哪些部分要采購IP核,哪些部分自己做,也是由架構師決定的。
前端設計(邏輯設計)
現在開始進入前端設計部分。
HDL編碼
首先,是進行HDL(Hardware Description Language,硬件描述語言)編碼。
架構設計方案完成后,芯片設計工程師將根據方案,針對各模塊進行具體的電路設計。他們會使用專門的硬件描述語言(如Verilog或VHDL),對具體的電路實現進行RTL(Register Transfer Level,寄存器傳輸級)級別的代碼描述。
簡單來說,就是用代碼來表述芯片的邏輯功能和數據傳輸。
Verilog作為一種常用的硬件描述語言,能夠對電路(系統)進行多層次描述,包括系統級、算法級、寄存器傳輸級(RTL級)、門級和開關級。在數字IC設計流程中,RTL級描述最為關鍵和常用。因此,Verilog代碼也常被稱作RTL代碼。
Verilog代碼范例(32位加法器)
需要注意的是,HDL編碼需要結合晶圓廠提供的庫(libaray)和器件(device)等基礎資源來設計。有些芯片設計工程師也會基于晶圓廠提供的資源,進行底層優化設計。
仿真驗證
HDL編碼完成之后,就要開始第一波驗證(Verification)。
如前所述,芯片設計幾乎每一步都要進行驗證或仿真,就是為了確保不出錯,因為出錯的代價實在太大。
這一步的仿真驗證,主要包括電路邏輯功能方面的驗證,也就是證明設計的功能是否符合設計規格中的定義,是否存在邏輯實現錯誤。
如果發現錯誤,就需要返回上一步,進行修改,甚至要返回方案設計階段進行修改。修改之后,再重新進行驗證。
驗證方法包括:(借助工具)通過在搭建的驗證環境中輸入激勵(即加輸入信號),然后看檢測輸出波形是否和預期一樣,以此來進行判斷。
驗證仿真的工具主要包括VCS、Qustasim等EDA工具(進行編譯和仿真),以及Verdi等工具(進行debug)。
需要注意的是,這個階段的仿真,也被稱為“前仿真”。之后還會有一個“后仿真”。
“前仿真”是在理想狀態下進行的。它基于理想化的抽象模型,忽略物理延遲和布線細節,專注于功能正確性。
邏輯綜合
接下來,驗證工程師要使用一些EDA工具,將RTL代碼翻譯成門級網表(Gate level Netlist),也就是實際的邏輯門電路(也包含了邏輯結構和連接關系,也是后端設計的關鍵輸入)。
門級網表的樣例
這個步驟就是邏輯綜合(Synthesis),有時候簡稱為“綜合”。
邏輯綜合主要包括翻譯、優化、映射步驟。
翻譯:先將Verilog/VHDL代碼轉換為與工藝無關的、初級的、未優化的通用門級電路。
優化:邏輯綜合需要設定約束條件,也就是希望邏輯綜合出來的電路在面積、時序、時延等(PPA)目標參數上達到的標準。優化是根據約束條件和工藝庫(由晶圓廠提供)參數,進行邏輯結構調整,去掉冗余單元,以此滿足要求。
映射:最終,將門級邏輯電路映射到的工藝庫上。
需要注意的是,不同晶圓廠的工藝庫,門電路基本標準單元(standard cell)的面積、時序參數是不一樣的。所以,選用的庫不一樣,綜合出來的電路在面積、時序上就不一樣。
靜態時序分析
靜態時序分析(Static Timing Analysis,STA),也屬于驗證的范疇,主要是在時序上對電路進行驗證。
具體而言,是在不提供激勵的情況下,驗證設計時序特性,檢查電路是否存在建立時間(setuptime)和保持時間(holdtime)的違例(violation)。
這句話有點難以理解,要搞懂它,就要先搞懂時序(timing)。前面我們多次提到時序。芯片時序是集成電路設計中確保信號傳輸與時鐘同步的關鍵技術,非常重要。電子設備由時鐘信號驅動,如果時序存在問題,各個模塊之間的工作節奏就會錯亂,影響各個元件以及整個芯片的工作頻率,進而影響整體性能。
在數字電路中,一個寄存器如果出現前面說的違例,就無法正確采樣數據和輸出數據。所以,以寄存器為基礎的數字芯片功能,就會出現問題。
靜態時序分析(STA)的作用,主要體現在以下幾個方面:首先,它能幫助確定芯片的最高工作頻率。通過詳細的時序分析,工程師可以更好地控制工程的各個環節,從而減少延遲,盡可能地提升芯片的工作頻率。芯片的最高工作頻率由網表(netlist)的關鍵路徑決定。關鍵路徑是網表中信號傳播時延的最長路徑。
其次,靜態時序分析也是檢查時序約束是否滿足的重要手段。在時序分析的過程中,我們可以查看目標模塊是否滿足預設的約束條件。如果不滿足,分析結果將幫助我們精確地定位到問題點,并給出詳細的改進建議。最后,靜態時序分析還能用于分析時鐘質量。時鐘信號存在抖動、偏移和占空比失真等缺陷。通過時序分析,我們可以有效地驗證這些缺陷對目標模塊性能的影響。
它可以分為三個基本步驟:
將netlist看成一個拓撲圖;
進行時延計算(連線時延net delay、單元時延cell delay);
找到關鍵路徑,并計算時延,進行判斷。
形式驗證
這一步也是驗證,是從功能上對邏輯綜合后的網表(netlist)進行驗證。
形式驗證主要通過數學手段來完成,不考慮工藝因素,無需激勵或時序檢查即可進行。
在形式驗證中,等效性檢查(也叫等價性檢查)是一種常用方法。
它通過將當前設計與已知的黃金設計(功能驗證后的HDL設計)進行對比,來確認設計的功能等效性,確保邏輯綜合過程中沒有改變原先HDL描述的電路功能。
覆蓋率,是評估驗證充分性的一個關鍵指標。它主要分為兩大類:代碼覆蓋率和功能覆蓋率。
代碼覆蓋率旨在檢查RTL代碼是否冗余,并確保設計要點得到全面遍歷。功能覆蓋率,專注于檢查自定義container(容器)中的功能是否被充分測試。
在前端設計的最后階段,需要完成代碼覆蓋率的充分性審查。對于未達到100%覆蓋率的情況,需要給出合理解釋,以確保芯片功能不受影響。
以上驗證工作都完成后,前端設計(邏輯設計)就基本完成了。幾個主要階段的輸入和輸出,如下表所示:
后端設計(物理設計)
前端設計的結果,是得到了芯片的網表(netlist)電路。
不同的EDA工具,生成的網表文件的文件格式也不太一樣。例如*.v(Design Compiler,Synopsys公司)、*.vh(PKS,Cadence公司)和*.edf(Synplify,Synplicity公司)。
后端設計,是要基于網表,制作出物理版圖。
具體來說,是先基于網表,在給定大小的硅片面積內,對電路進行布局規劃(Floor Plan)、布局(Place)和布線(Route)。
然后,再對物理版圖進行功能和時序上的各種驗證(DRC、LVS、ERC等)。
最后,生成用于制造光掩模版和流片的GDS(Geometry Data Standard)版圖。
整個過程有點像制作PCB電路板。當然,復雜度要高出無數倍。
可測性設計
可測性設計(Design for Test,DFT),是為了方便后續對芯片進行測試,提前進行的自帶測試電路設計。
現在的芯片都很復雜,出現問題的話,往往很難查找原因。可測試性設計就是為將來找問題進行提前考慮。
可測性設計的常見方法,是在設計中插入掃描鏈、內建自測試(BIST)、邊界掃描單元等特殊架構,將非掃描單元(如寄存器)變為掃描單元,提升電路內部信號控制與觀測能力。
DFT示例圖
在測試時,在Scan-In階段加載激勵信號,在Capture階段捕獲組合邏輯響應,最終通過Scan-Out移出比對,就能得出結果。
可測性設計技術的基礎評價指標包括可控性和可觀測性。注意,在有些文獻里,也會將可測性設計歸為前端設計的范疇。
物理布局
可測性設計之后,就要開始進行物理布局(layout)了。
物理布局是芯片設計流程中從邏輯視圖向物理視圖的轉換過程。
它需要考慮到元件的尺寸、形狀、相互之間的間距,以及連線的長度和寬度等各種復雜因素。布局的好壞,直接影響到芯片的信號抗干擾能力、寄生電容和電感的大小,決定了芯片的整體性能和可靠性。
好的物理布局,是要實現空間利用率、總線長度、時序的完美平衡。也就是說,空間利用率要盡量高,總線要盡量短,時序要盡量收斂。
物理布局的主要步驟包括:布局規劃、布局、時鐘樹綜合、布線等。
物理布局之布局規劃
布局規劃(Floor Plan),就是規劃放置芯片的宏單元模塊,在總體上確定核心區域(Core Area)、電源網絡和關鍵模塊位置,如IP模塊、RAM、I/O引腳等。
這個步驟沒有標準的最佳方案,但又有很多細節需要考量。
設計者需要根據電路的功能和性能要求,以及硅片的尺寸和工藝約束,來安排電路元件的位置。例如,設計者可能需要將高速或者熱敏感的電路部分放在芯片的中心位置,以便獲得更好的性能和熱分布。
在布局規劃的過程中,同樣要緊密結合晶圓廠的資料,例如,晶圓廠提供的PDK(Process Design Kit,工藝設計套件)。
PDK包含了工藝相關的各種參數和模型,比如晶體管尺寸、層間距、金屬氧化層厚度等,就連線寬、線距等設計規則都與之相關。如果脫離PDK,晶圓廠就無法生產所設計的產品。
物理布局之布局
布局(Place),就是在規劃的區域內,精準放置所有標準單元、I/O pad、宏單元,實現整個電路邏輯。
布局時,需要平衡芯片利用率(70%~90%)、時序收斂和布線擁塞風險。
物理布局之時鐘樹綜合
時鐘樹綜合(Clock Tree Synthesis,CTS),簡單說就是時鐘的布線,構建時鐘網絡。
如前所述,時鐘信號在數字芯片中起到了全局指揮的作用。我們在布放時鐘線時,需要對稱式地連接到各個寄存器單元,從而使時鐘從同一個時鐘源到達各個寄存器時,時鐘延遲差異最小。(時鐘偏差通常需控制在時鐘周期的10%以內。)
物理布局之布線
這里的布線(Routing),就是普通信號布線了,包括各種標準單元(基本邏輯門電路)之間的走線。
在滿足工藝規則和布線層數限制、線寬、線間距限制和各線網可靠絕緣的電性能約束條件下,需要對信號線進行合理規劃,將各單元和I/O pad(輸入/輸出焊盤管腳)連接起來。
布線工具界面
設計者需要根據信號的頻率和時序要求,以及工藝的布線規則,來安排信號線的路徑和層次。例如,設計者可能需要使用多層金屬線來實現復雜的信號交叉,或者使用特殊的布線技術來降低信號的傳播延遲。
經過反復的檢測與優化,最終會呈現出如下的電路圖。
或者是這樣:
這就是版圖,包括了平面幾何形狀、文本標簽等與物理布局相關的信息,通常是一個圖形數據庫系統(graphic data system,GDSⅡ)文件。
圖中,我們可以清晰地看到藍、紅、綠、黃等不同色彩的區域,這些色彩區域分別對應著不同的光掩模版(后面會說,芯片制造篇也提到過)。
寄生參數提取和信號完整性分析
物理布局完成之后,又要開始進行驗證了。
導線本身的電阻、相鄰導線間的互感及耦合電容等因素(寄生參數),會在芯片內部引發信號噪聲、串擾和反射等問題,導致信號電壓發生波動甚至失真。
因此,需要進行寄生參數的提取,以及信號完整性的分析驗證。
靜態時序分析
在電路的每個單元位置和各項參數都已確定的情況下,需要再次進行靜態時序分析,以確保結果的準確性。
形式驗證
和前面一樣。再做一次,確認一下電路功能是否與之前保持一致。
后仿真(時序仿真)
后仿真,也叫時序仿真。它是在物理布局完成后進行,通過注入實際物理參數(如延時、寄生效應),驗證芯片在真實工藝條件下的時序、功耗及信號完整性,確保設計可制造且可靠。
后仿真的核心關注點在時序驗證、物理效應分析以及設計收斂。
時序驗證前面說過,是檢查建立時間(Setup Time)、保持時間(Hold Time)是否滿足,避免信號競爭、毛刺等問題。
物理效應分析,是評估信號完整性(如串擾、噪聲)、功耗熱點及電壓降。
設計收斂,是確保芯片在目標頻率下穩定工作(如時鐘邊沿能否正確觸發寄存器)。
前仿真和后仿真的對比,如下表所示:
物理驗證
物理驗證,主要包括LVS、DRC、ERC等檢查,目的是確保版圖的正確性和一致性。
LVS(Layout vs. Schematic):版圖對原理圖一致性檢查,就是版圖與邏輯綜合后的門級電路圖的對比驗證。
DRC(Design Rule Checking):版圖設計規則檢查,檢查連線間距,連線寬度等是否滿足工藝要求。規則通常都由晶圓廠提供,確保設計在制造過程中不會出現物理上的問題,例如短路、開路、間距不足等。
ERC(Electrical Rue Checking):電氣規則檢查,檢查短路和開路等電氣規則違例。
功耗分析
功耗分析是確保芯片性能(Performance)、功耗(Power)和面積(Area)(簡稱PPA)平衡的核心環節。
它其實貫穿于芯片設計的整個流程,在前面我們也有提到相關流程。它的兩大任務是分析IR drop(電壓降)和EM(電遷移),防止因此導致的芯片失效。
功耗分析的核心方法包括靜態功耗分析和動態功耗分析,常用工具包括Ansys公司的Redhawk,Cadence公司的Voltus,以及Synopsys公司的Ptpx。
工程變更
芯片設計有時候還會進行工程變更(Engineering Change Order,ECO)。
也就是局部修改單元位置或布線,解決STA或后仿真發現的違例問題。通過工程變更,可以避免重新設計。
簽核
布局布線完成后的這幾個步驟,包括物理驗證、靜態時序分析、功耗和可靠性分析等,都屬于簽核(Sign-off)檢查。
簽核是流片前的最后一道“守門關”。
如果不滿足,就要回到物理設計做修改。如果還是不滿足,就需要返到電路設計和驗證環節。
如果全都滿足,那這個版圖就可以送去晶圓廠流片。
簽核也要采用EDA工具,包括了IR分析簽核工具、時序分析簽核工具、物理驗證簽核工具等。
對于目前越來越復雜的工藝,實現簽核收斂(即所有檢查均通過)變得越來越困難。這主要是因為多種物理效應(如工藝偏差OCV、信號完整性SI、電源完整性PI、熱效應等)之間存在復雜的相互作用。
因此,簽核工具需要具備更精確的建模能力、更全面的分析功能,并且常常需要AI的輔助來加速分析和收斂過程。
以上,就是后端設計的主要流程。在實際項目中,其實還包括了附加流程,例如填充單元插入,以及隨著制造工藝不斷演進產生的DFM(可制造性設計)等。
后端設計幾個主要階段的輸入和輸出,如下表所示:
后端設計全部完成之后,就可以輸出最終的GDSⅡ文件了。文件包含以下信息:
層次結構和頂層結構:芯片的不同層和頂層結構,包括金屬層、多晶硅層、掩膜層、膠片層等。
幾何信息:包括芯片各個部位的尺寸、形狀、位置以及與其他部位的連接方式等。
特殊功能區域:如聯排、防抖動區域、紋理區、DPJ (Diffusion Pocket Junction) 等。
材料屬性信息:描述每個層的材料類型、介電常數、厚度等。
流片
最后,就是流片(Tape-out)。
物理版圖以GDSⅡ的文件格式交給晶圓廠,就要開始流片,也就是試生產,制造幾十片的樣片。
流片為什么會叫Tape-out呢?
因為在上世紀七八十年代,芯片的設計數據都是寫到磁帶或者膠片里傳給工廠。設計團隊將數據寫入磁帶,叫Tape in。工廠讀取磁帶的數據,叫Tape out。隨著時間的推移,磁帶早已不用,但是這個叫法一直沿用了下來。
晶圓廠拿到GDSⅡ文件,開始制作光刻掩模版(mask)。
光刻掩模版
光刻掩模版的制造過程和芯片晶圓的制造過程有點像,大概是這樣的:
借助無掩模光刻機讀取GDSⅡ版圖文件,對涂有光刻膠的空白掩膜版進行非接觸式曝光。這個步驟將照射掩膜版上預先設定的圖形區域,引發光刻膠的光化學反應。
經過顯影和定影處理后,曝光區域的光刻膠將溶解并脫落,從而暴露出下方的鉻層。
采用鉻刻蝕液進行濕法刻蝕,將暴露的鉻層刻蝕掉,以形成透光區域。同時,受光刻膠保護的部分鉻層則得以保留,從而形成不透光區域。
對掩膜版進行徹底清洗。這樣,掩膜版上便形成了具有不同透光率的平面圖形結構。
基于掩模版制作芯片。然后,芯片設計企業對芯片進行詳細的測試,看是否流片成功。
如果成功,那就皆大歡喜。如果失敗,就要評估能不能降級使用。如果不能,那就要么重來,要么放棄!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.