數字 IC top-down 設計流程
拿到一個芯片設計項目,首要做的事就是確定好系統功能、性能、物理尺寸、
設計模式、制造
工藝、設計周期、設計費用等等。芯片項目的總體規劃確定好之后,接著就要
從技術層面上設計芯
片,芯片流程一般分為前端設計和后端設計連個過程。
前端設計:
1.設計輸入
確定芯片的具體邏輯功能,設計合理的算法(如有必要,可將芯片劃分子模
塊),使用 HDL 語言
(常用 VHDL 或 Verilog)描述芯片(模塊)功能,寫出可綜合級別的代碼。
HDL 語言可以直接用各種
文本編輯器編寫(要注意后綴),也可以用仿真器自帶的文本編輯器編寫。如
果邏輯結構不是很復
雜,或者電路形式有特定的要求,不宜用 HDL 語言描述,這時可以考慮用原理
圖編輯器直接畫出原理
圖,或者直接編寫出電路網表。常用的輸入工具有 Cadence 的 Composer,
Synopsys 的 Viewdraw 等。
2.前端仿真( RTL 級)
用仿真工具對 HDL 代碼作前仿真,做理想狀況下的功能驗證,觀察 HDL 仿真結
果是否滿足要求。
仿真工具主要有 Synopsys 公司的 V S S( VHDL)、 V C S( Verilog),
Cadence 公司的 NC-Verilog 和 Verilog-XL
( Verilog), Leapfrog( VHDL) ,Mentor Graphics 公司的 Modelsim
( Verilog&VHDL)。還有些 FPGA
公司的仿真軟件也不錯,比如 Altera 公司的 Quartus。
3.邏輯綜合
前仿真通過以后,就可以把代碼拿去綜合了,邏輯綜合是指把 HDL 語言描述轉
化成電路門級網表,
并進行邏輯和時序電路的優化。綜合需要設定約束條件,還需要基于特定的綜
合庫。不同的庫中,
門電路基本標準單元( standard cell)的面積,時序參數是不一樣的。所以,
選用的綜合庫不一樣,
綜合出來的電路在時序,面積上是有差異的。輸出文件也可以有多種格式,常
用的有 EDIF 格式
( Electronic Data Interchange Format 電子數據交換格式)。綜合工具
Synopsys 公司的比較強,
如 DC( Design Compiler), BC( Behavior Compiler), Cadence 的有 Ambit,
PKS。有些 FPGA 用的第
三方綜合工具功能也很強大,如 Cadence 的 Synplify, Synopsys 的 FPGAExpress 和 FPGA-Compiler,
Mentor 的 Leonardo Spectrum。
4. 形式驗證
是從功能上對綜合后的網表進行驗證。常用的就是等價性檢查方法,以 HDL 為
參考,對比綜合生
成的網表功能,驗證他們是否在功能上存在等價性。這樣做是為了保證在邏輯
綜合過程中沒有改變
原先 HDL 描述的電路功能。形式驗證工具有 Synopsys 的 Formality, Mentor 的
FormalPro。
這些都沒有問題了就可以進入后端設計了。
后端設計:
5.數據準備
后端設計需要 foundry 提供的和前端設計產生的一些數據。
例如對于 Cadence 的 SE( Silicon Ensemble)而言所需的數據主要有 Foundry
廠提供的標準單元
(全定制設計也可由自己設計標準單元)、宏單元和 I/O Pad 的庫文件,它包括
物理庫、時序庫及網
表庫,分別以.lef、 .tlf 和.v 的形式給出。前端的芯片設計經過綜合后生成的
門級網表,具有時序約
束和時鐘定義的腳本文件和由此產生的.gcf 約束文件以及定義電源 Pad 的 DEF
( Design Exchange
Format)文件。對 synopsys 的 Astro 而言, 經過綜合后生成的門級網表,
時序約束文件 SDC 是一樣
的,Pad 的定義文件--tdf, .tf 文件--technology file,Foundry 廠提供的標
準單元、宏單元和 I/O
Pad 的庫文件就與 FRAM, CELL view, LM view 形式給出(Milkway 參考庫 and
DB, LIB file)
標準單元版圖。標準單元分為單元庫和全定制兩種。單元庫一般是 foundry 給
定的,全定制的話,
版圖是由自己公司專門的版圖工程師畫的, Layout 工具有 Cadence Virtuoso
layout editor,另外
還有 Laker 等使用也很廣泛。版圖畫完后往往要做一下 DRC 驗證( Design Rule
Checking 設計規則檢
查,檢查連線間距,連線寬度等幾何規則是否滿足工藝要求), LVS 驗證
( Layout Vs Schematic 版圖
與邏輯綜合后的門級電路圖的參數對比驗證),這要借助 Cadence 的 Diva,
Dracula 或者 Mentor 公司
的 Calibre 或者 Synopsys 公司的 Hercules, LVS 上 Hercules 功能尤顯強大。
6.自動布局布線( Auto place & route,簡稱 APR)
利用前面做好的網表和單元版圖生成整塊芯片版圖。可用工具有 Synopsys 公司
的 Astro( Avant!
的 Apollo), Cadence 的 design framework,Silicon Ensembler, Envisia
place &route DSM,Design
Planner,Gate Ensemble。
( 1)布局規劃,主要是標準單元、 I/O Pad 和宏單元(如 IP 模塊, RAM 等)的
布局。 I/O Pad 一般
是預先給定了位置的,而宏單元則根據時序要求進行擺放,標準單元則是給出了
一定的區域由工具自
動擺放。布局規劃后,芯片的大小,Core 的面積,Row 的形式、電源及地線的
Ring 和 Strip 就都確定下來
了。如果有必要,在自動放置標準單元和宏單元之后, 可以先做一次
PNA(power network analysis)
--IR drop(電壓降) and EM(電遷移)。布局規劃能直接影響芯片最終的面
積。
( 2) Placement(標準單元放置)。布局規劃后,宏單元、 I/O Pad 的位置和放
置標準單元的區域
都已確定,這些信息由 SE( Silicon Ensemble)通過 DEF 文件傳遞給
PC(Physical Compiler 物理綜合
工具),PC 根據由邏輯綜合給出的.DB 文件獲得網表和時序約束信息進行自動放
置標準單元,同時進行
時序檢查和單元放置優化。如果是用 PC +Astro,則可用 write_milkway,
read_milkway 傳遞數據。
( 3) Routing(布線)是指在滿足工藝規則和布線層數限制、線寬、線間距限
制和各線網可靠絕
緣的電性能約束的條件下,根據電路的連接關系將各單元和 I/O Pad 用互連線連
接起來,這些是在時
序驅動(Timing driven ) 的條件下進行的,保證關鍵時序路徑上的連線長度能
夠最小。基本流程是:
Global route-- Track assign --Detail Dummy Metal 的增加(詳見第 10
步)。
( 4)布局布線中需要注意的是 CTS( Clock Tree Synthesis,時鐘樹綜合),
簡單點說就是時鐘
的布線。由于時鐘信號在數字芯片的全局指揮作用,它的分布應該是對稱式的
連到各個時序單元,
使時鐘從同一個時鐘源到達各個時許單元的延遲差異最小。而且有的時序單元,
對時鐘源來說負載很
多,其負載延時很大也會造成不平衡,這是就需要插入緩沖器減小負載和平衡延
時。從而因此時鐘信
號一般需要單獨布線。這些時鐘網絡及其上的緩沖器構成了時鐘樹。一般要反
復幾次才可以做出一
個比較理想的時鐘樹。 CTS 工具常用 Synopsys 的 Physical Compiler。
7.寄生參數提取及后仿真
( 1)由于芯片里面的導線等本身存在的電阻,相鄰導線之間還有互感,耦合電
容等,他們都會在
芯片內部會產生信號噪聲,串擾和反射。這些效應會產生信號完整性問題,導
致信號的電壓波動和
變化,如果嚴重就會導致信號失真錯誤。因此從 layout 進行寄生參數提取
( extract),反標到前面
的網表中,再次分析驗證信號完整性問題是非常重要的。常用的參數提取工具
有 Synopsys 的 Star-RC
XT, Cadence 的 Nautilus DC,軟件生成的帶有完整的延時信息的設計文件格式
一般有: *.vho,*.sdf
文件。
( 2) STA( Static Timing Analysis 靜態時序分析)是采用窮盡分析方法來提
取出整個電路存在的
所有時序路徑,計算信號在這些路徑上的傳播延時,檢查信號的建立時間
( setup time)和保持時
間( hold time)是否滿足時序要求,通過對最大路徑延時和最小路徑延時的分
析,找出違背時序約
束的錯誤。因為時鐘樹插入后,每個單元的位置都確定下來了,工具可以提出
Global Route 形式的連
線寄生參數,此時對延時參數的提取就比較準確了。例如 SE 把.V 和.SDF 文件傳
遞給靜態時序驗證工具
進行分析。而對 Astro 而言,在 detail routing 之后, 用 starRC XT 進
行參數提取,生成的.V 和.SDF
文件傳遞給 PrimeTime 做靜態時序分析,那將會更準確。時序驗證工具有
Cadence 的 Pearl, Synopsys
的 Prime Time 等。這些流程都沒有問題后,就可以將.v 和.sdf 文件送去前端
人員那里進行后仿真,
即 DTA(動態時序分析),再次驗證邏輯功能,后仿真應做 SI(信號完整性)
分析。
8. ECO(Engineering Change Order)
針對靜態時序分析和后仿真中出現的問題,對電路和單元布局進行小范圍的改動。
后仿真和前面
的布局布線階段可能需要反復的循環進行才能達到設計要求,這需要前端人員
和后端人員的良好配
合。
9.芯片功耗分析
實際的后端流程還包括電路功耗分析,功耗分析常用的工具有 Prime power,
Power Compiler 等。
10.Filler 的插入(pad filler, cell filler)和 Dummy 金屬的添加
Filler 指的是標準單元庫和 I/O Pad 庫中定義的與邏輯無關的填充物,用來填
充標準單元和標準單元
之間,I/O Pad 和 I/O Pad 之間的間隙,它主要是把擴散層連接起來,滿足 DRC 規
則和設計需要。另外還
因為 Foundry 對金屬密度一般都有規定,使其金屬密度不要低于一定的值,以防
在芯片制造過程中的
刻蝕階段對連線的金屬層過度刻蝕從而降低電路的性能,加入 Dummy Metal 就
是為了增加金屬的密
度。
11.整體物理版圖驗證
主要包括 LVS, DRC, ERC( Electrical Rule Checking 電氣規則檢查,檢查短
路,開路等電氣規
則違例)。工具前面已經介紹,這一步的完成基本上就是是整個芯片設計階段
完成,下面的就是芯
片制造了。物理版圖以 GDSII 的格式交給掩膜版廠做掩膜,然后到芯片代工廠
( Foundry)流片( tape
out),在晶圓硅片上做出實際的電路。流片出來后要對樣片進行各種測試,滿
足要求后就可以批量
生產了。
附:
DFT( Design For Test 可測性設計)。 IC 設計時內部往往都設計為自帶測試電
路的結構, DFT 的目
的就是在設計的時候就考慮將來的測試。 DFT 的常見方法就是,在設計中插入
掃描鏈,將非掃描單元
(如寄存器)變為掃描單元, DFT 工具 Synopsys 的 DFT Compiler, Mentor 的
FastScan 等,需前后端設
計員合作,并參與 tapeout 后測試。還有隨著制造工藝不斷進步產生的 DFM
(可制造性設計)問題等
等。
總結:
Specification ->Architecture->RTL->SIM->DC->SIM->PT->DC->ASTRO->PT-
>DRC,LVS, ERC->TAPE OUT
數字 IC 設計中常見文件格式:
.alf: Advanced Library Format describing IC technology, cells and
blocks
.cif: Caltech Intermediate Format,純文本的中間文件,主要用于版圖的導
入輸出,不用于生產
.ctlf: Compiled Timing Library Format
.db: data base
.def:design exchange format
.dspf:寄生參數交互格式
.edif: Electronic Data Interchange Format
.gcf: General Constraint Format
.GDSII: Graphic Design System II, Foundry 最常用的最終版圖格式
.lef: Layout Exchange Format
.lib: DC 工具用的庫文件格式
.sdf:增量標準延時格式,用作靜態時序分析模塊 Prime Time 的輸入
.spef:標準寄生參數交換格式
.tdf:工藝庫對 pad 的定義文件
.tf : Technology File format
.tlf: timing library format
.v: Verilog 源代碼
.vhd: VHDL 源代碼
.vho:帶延時的門級網表文件,用于 vhdl 代碼在第三方仿真 tools 下運行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?----本人于網上找的資料,僅用于閱讀