CIC Referenced Flow for Cell-based IC Design 設計服務組 Version 1.0 中 華 民 國 九 十 七 年 五 月
CIC Referenced Flow for Cell-based IC Design
設計服務組
Version 1.0
中 華 民 國 九 十 七 年 五 月
1
版本說明
版本編號
(Version)
日期(Date) 說明(Description)
V. 1.0 2008/5/ 初版
Abstract
CIC 整合了一個數位電路設計流程,並提供給學術界。本設計流程包含各階段的實
現及驗證的方法,驗證的目的是確保各個實現階段結果的正確性,項目包括有
function、timing、power、DRC 等,越到實體階段所須驗證的項目就越多。CIC 提
供的 Cell-Based Design Flow 從 Logic Synthesis、Place&Route、Layout Merging
到最後 Tape out 的步驟。每個步驟階段都有對應的軟體,學生只要遵循此流程,配
合 CIC 提供的 Cell Library,就可以完成電路晶片的實作。
2
目錄 版本說明 .................................................................................................................................... 1 Abstract ...................................................................................................................................... 1 目錄 ............................................................................................................................................ 2 1 The CIC Cell-Based Design Flow Overview..................................................................... 3 2 The RTL Verification.......................................................................................................... 4
2-1 RTL Code..................................................................................................................... 4 2-2 RTL Simulation............................................................................................................ 6 2-3 Code Coverage Analysis .............................................................................................. 7
3 Gate-level Pre-Layout Verification .................................................................................... 8 3-1 To Generate Gate-level Netlist Using Logic Synthesis Tool ....................................... 9 3-2 Gate-level Simulation ................................................................................................ 10 3-3 Gate-level Power Analysis......................................................................................... 11 3-4 Formal Verification .................................................................................................... 12
4 Gate-level Post-layout Verification .................................................................................. 13 4-1 To Generate GDSII & Gate-level Netlist Using APR Tool........................................ 14 4-2 RC Extraction............................................................................................................. 15 4-3 Gate-level STA & Simulation .................................................................................... 16 4-4 Gate-level Power Analysis......................................................................................... 16 4-5 Formal Verification .................................................................................................... 17 4-6 DRC/LVS ................................................................................................................... 18
5 Circuit-level Verification.................................................................................................. 19 5-1 Replace True Layout .................................................................................................. 19 5-2 DRC/LVS ................................................................................................................... 20 5-3 Circuit Extraction....................................................................................................... 20 5-4 Circuit-level Simulation............................................................................................. 20
參考文獻 .................................................................................................................................. 21
1 The CIC Cell-Based Design Flow Overview 對於數位電路設計,CIC 整合了一個基本的數位電路設計流程,並提供給學術界。
圖一所示,Cell-Based Design implementation 流程包含幾個主要的實現步驟:RTL
coding、Logic synthesis、Place&Route、Layout Merge,在這些實現步驟當中還穿插各種
不同的驗證,驗證的目的是確保各個實現階段結果的正確性,項目包括有 function、
timing、power、DRC 等,越到實體階段所須驗證的項目就越多。CIC 提供的 Cell-Based
Design Flow 從 Logic Synthesis、Place&Route、Layout Merging 到最後 Tape out 的步驟。
每個步驟階段都有對應的軟體,學生只要遵循此相關流程,配合 CIC 提供的 Cell
Library,就可以完成電路晶片的實作,提高學術界 IC 設計的水準。
RTL Code
Logic synthesis
RTL simulation
Code coverage Analysis
Gate-level Netlist
Gate-level simulation
Gate-level Power
Analysis
Formal verification
Place&Route
Gate-level Netlist
DRC/LVS
Layout
Formal verification
Gate-level simulation
Gate-level Power
AnalysisDelay
Caculation
RC Extraction
Layout Merging
Layout
Circuit ExtractionDRC/LVS
Circuit-level Netlist
Circuit -level Simulation
Tapeout
RTL Verification
Gate-level Pre-layout Verification
Gate-level Post-layout Verification
Circuit-level Verification
Circuit -level STA
Gate-level STA
圖一、The CIC Cell-Based Design Flow
4
2 The RTL Verification 暫存器轉換階層(Register Transfer Level),簡稱 RTL Level 主要特色就是大量的使用
暫存器與算數邏輯元件來描述電路,是最廣泛被運用的初期 IC 設計和驗證的方式。最
熱門的語言莫過於硬體描述語言(Hardware Description Language),主要以 VHDL[1]與
Verilog HDL[2]為主流。整個 RTL Design Flow 如圖二所示,在任何的設計中,首先是對
於所設計晶片的要求,指定此晶片的功能、介面與整體的線路的架構,此時不用考慮將
如何完成晶片等的細部問題。只需利用硬體描述語言來描述電路的行為,並且將這些資
料傳送的情形詳細的描述出來即可。最後配合模擬軟體的使用,針對剛剛完成的電路做
功能性的初步驗證。
設計需求描述
RTL 描述
功能驗證與測試
圖二 RTL Level Design Flow
2-1 RTL Code
在 RTL Level 的階段,定義暫存器及暫存器間的邏輯閘。設計的電路將會包含整個
架構的資訊但是對於內部詳細的技術不干涉。使用者只要專心確保設計的功能正確性就
好。作完功能驗證之後,就丟給邏輯合成的軟體去處理。RTL Code 就像是以前在用繪
圖設計時畫方塊流程圖一樣,使用者可以自己定義一些 Function Unit,然後加上一些暫
存器,利用這樣的方式來完成使用者自己定義的一些 Function。例如表一所示,利用
VHDL 舉個簡單的實例,完成部份的 RTL Code。表二所示為利用 Verilog 舉個簡單的實
例,完成部份的 RTL Code。
5
表一 RTL Code by VHDL
其中,a、b、x 都是我宣告的訊號,在 VHDL 中可以將他視做連接線或是暫存器,B); assign lt = (A
6
3. 使用多工器與使用 if-else 敘述的不同:雖然是用 if-else 或是 case 的語法,都會
對應到多工器的線路,但是如果使用者本來就是需要多工器的架構時,建議最
好還是使用多工器的指定敘述。因為如果使用 if-else 的敘述,有可能再合成的
時候多合成出一些多餘的邏輯閘。
4. 使用括號來作邏輯最佳化:利用括號增加程式的閱讀性。
5. 避免針對同一個變數做重複的指定:如果同時有兩個區塊,都同時對同一變數
作重複的指定,合成的時候,會出現不可預期的電路產生。
6. 清楚定義 if-else 與 case 的敘述:這兩種判斷式都必須要明確的指定,合成的工
作才能正常的運作,合成出預期的邏輯電路。
2-2 RTL Simulation
撰寫完的電路設計,需要驗證電路的正確與否。通常是利用測試平台(Test Bench)的方
式,提供一種自動模擬、檢查與驗證,以提高電路設計的錯誤涵蓋率(Fault Coverage),
並降低人為作波形(Waveform),檢查時容易造成的疏忽與不完成。
一般而言,在數位電路的設計上,在驗證的過程中往往所花費的時間,通常比設計
過程所花費的時間來的多。利用 Test Bench,在設計的初期,也就是在作邏輯性的功能
驗證(Function Verification),早期發現設計的錯誤,早期更正,以免浪費後段已經完成的
Place&Route 的工作。初期的驗證,主要針對邏輯設計來模擬,又稱為原始程式碼模擬
(Source Code Level),最後的結果輸出與驗證,可以分為下列三種方式:
1. 將結果輸出成向量格式(Vector Format),再利用波形圖的方式,將結果利用波
形的方式輸出,方便觀察。
2. 將輸出的結果的資料利用一個檔案儲存起來,再利用分析工具加以檢查與驗
證。
3. 將資料結果的驗證工作,包含在 Test Bench,利用 HDL 硬體描述語言直接描述
出來加以驗證。
Test Bench 主要是用來驅動設計好的電路並檢查輸出的結果是否符合要求,因此通常
合理的設計方式是將 Test Bench 與設計電路分開,較常見的作法有兩種分別如下:
1. 在設計電路內使用 module,並直接驅動這些 module 的輸入訊號,如圖三所示。
Test Bench 為最上層的電路,直接驅動設計電路的輸入訊號 clk 與 reset,檢查
7
輸出訊號 x,並將最後的輸出結果顯示在監視器上。
2. 將 Test Bench 當做訊號產生器,另外再建一個 module,如圖四所示。Test Bench
的輸出訊號例如 t_clk 與 t_reset,輸入到設計電路中當作輸入訊號,例如 clk 與
reset。將設計電路的輸出訊號,例如 x,輸出到 Test Bench,當作是 Test Bench
的輸入訊號,例如 t_x,將最後的輸出結果利用波形秀出,以方便檢查錯誤。
圖三
圖四
2-3 Code Coverage Analysis
Code Coverage 又稱測試覆蓋率,它是軟體測試的方法之一,用以評估程式原始碼的
測試完整程度。並可針對已測試過的程式原始碼,追蹤其所做的新增或修改狀況,得知
測試效果的優劣。程式設計時須確保每次的變更都經過 Code Coverage 測試,因為程式
原始碼變更時,經常會導致錯誤的出現。Code Coverage 的數值越高,代表著測試的工
作做得更完整,換句話說,可以將錯誤找出的機率也越高。舉一個簡單的範例來說,電
路在 RTL Level 的時候,進入 Place&Route 之前,都會寫一連串的 Test Bench 用來測試
8
電路的功能是否正常工作。假設此電路擁有 100 個功能,可是 Test Bench 只測試 70 個
功能,則在功能項目的 Code Coverage 是 70/100 = 70%。換句話說,只有測試了 70%的
功能,最多能保證 70%的功能可以使用,另外 30%功能則無法確定是否能夠保證正常使
用。 一般而言,Code Coverage 可分為六大類: 1. Function coverage:主要是測試在電路中每個 Function 是否都有被完整執行。 2. Statement coverage:主要是測試電路程式原始碼每一個 Statement 是否有被完
整執行。 3. Condition coverage:主要是測試每個 Condition 測試點是否有被完整執行,例
如 True、False…等條件判斷式。 4. Path coverage:主要是測試電路中每條 Path 是否有被完整執行。 5. Entry/exit coverage:主要是測試在 Function 中有 call 或是 return 語法是否有被
完整執行。
3 Gate-level Pre-Layout Verification
Pre-layout 為整個 Cell-Based Design Flow 中 Front-End 的部分,主要是將已撰寫好
的 RTL Code 開始進行 Logic Synthesis,以產生 ASIC 晶片 Layout 時需要的 Gate-level
Netlist,在 Layout 前產生的該檔案,必須要先確認有 Logic Synthesis 後有滿足規格及
Function 正確,因此以下將針對 Logic Synthesis、Gate-level Simulation、Power Analysis、
Formal Verification 作說明,其詳細內容茲分述如下:
圖五 From RTL To Gate-level Netlist Using Logic Synthesis
9
3-1 To Generate Gate-level Netlist Using Logic Synthesis Tool
Logic Synthesis在Front-End Design中扮演非常重要角色,可以將設計者撰寫之RTL
Code轉換成Gate-level Netlist,如圖五所示。圖六為ASIC Synthesis Design Flow所示,設
計者完成RTL Code設計後,開始進行Logic Synthesis。在Compiler Design前需設定該晶
片的周遭環境為何?這包括使用哪一種製程(Process)的標準元件庫(Standard-Cell)製作作
晶片?工作電壓範圍(Voltage Range)是多少?工作溫度範圍(Temperature Range)?輸入
端要延遲多久時間才收得到輸入訊號?自己的晶片要延遲多久時間才可以傳送到下一
塊晶片去?此外設計者還需提供標準元件庫的Timing Model給合成軟體計算Cell Delay,
提供Wire Load Model計算Net Delay,以完成整個Design Environment的設定。Design
Constraint就是根據該晶片規格設定Timing需要跑多快以滿足規格?功率消耗要多低才
可以滿足規格?晶片面積需要多小以滿足需求?最後還須讓合成軟體知道每個Cell最大
推動力為何以防止合成後之電路有前一級Cell推不動下一級的問題發生。完成這些設定
便可以開始進行合成也就是圖五中的Compiler Design。Compiler時,合成軟體會以現有
給定的Standard Cell資源,由Tool自行挑選最合適的Cell來完成邏輯電路。最後再經由
Analysis以確認合成軟體有滿足規格後,即可將該電路存檔成Gate-level Netlist,電路中
的Timing Delay Information可以使用Standard Delay Format存成sdf檔案作為Gate-level
Simulation之用。關於Logic Synthesis較細節的操作步驟與設定可參考CIC訓練課程講義
[5]。
圖六 ASIC Synthesis Design Flow
10
另外,假使設計者有用到一些合成軟體所提供的 Low Power 技術[6],像是 Clock
Gating、Operand Isolation、Dynamic & Leakage Power Optimization、Multi-Voltage
Multi-Supply (Power Intent)等功能時,需在 Compiler Design 步驟前下好相對的指令與
Support Low Power Library 的準備,如圖七所示,合成軟體即可在 Compiler Design 步驟
時,作出 Low Power 電路來,以滿足設計者的需求。若設計者考量晶片下線後會有失敗
的情形發生,往往為了查出錯誤發生點在哪裡,會在Compiler Design步驟後,加入Testing
Circuit[7]於電路中,最後合成出來的電路便擁有 Low Power 及 Testing 電路功能於
Gate-level Netlist 中。
RTLdesign
RTL
Pow
er O
pt. Clock Gating
Operand Isolation
MVMS (Power Intent)
Compiler Design
Insert DFT Circuit
Power Opt & Testing Netlist
Technologylibrary
RTLdesign
RTL
Pow
er O
pt. Clock Gating
Operand Isolation
MVMS (Power Intent)
Compiler Design
Insert DFT Circuit
Power Opt & Testing Netlist
Technologylibrary
圖七 To Append Low Power Technology & Insert DFTC Flow
3-2 Gate-level Simulation
合成後,Gate-level 電路的 Function 有可能因合成後而有所改變,假使設計者撰寫
RTL Code 因一些語法或特殊狀況沒有注意到,往往就會造成合成前後 Function 不一致,
至於在寫 Code 有哪些地方要特別注意的可以參考[5]的第二章便有提到。因此在 Layout
之前須先確認 Function 是否正確,要作 Pre-layout Simulation 也稱作 Gate-level Simulation
如圖八所示,Gate-level Simulation 至少須準備四種類型檔案,包括合成後得到的
Gate-level Netlist、SDF 及之前 RTL Simulation 用的 Test Bench 檔案根據合成軟體 STA
分析之 Timing 修改適當的 Period 值並附加 sdf 於其中讓 Simularor 知道電路每個 Cell、
11
Net 的 Delay Time 以及 Simulation Model 像是每個 Standard Cell Behavior Model、Memory
Behavior Model、ARM Processor Model 等,此外設計者有時也會用一些特殊的 PLI 程式
如 Low Power Design 會額外用到的 PLI 程式[6]也一同加入一起模擬,接著 Simulator 模
擬後即可從文字介面得知結果是否正確或產生 Waveform Format 檔案作驗證其 Function
正確性,假使 Function 不正確可透過 Debug 軟體[4]找出其問題點所在處。
圖八 Gate-level Pre-Layout Simulation
3-3 Gate-level Power Analysis
在合成軟體中就有 Power Analysis的功能,但是合成軟體是根據什麼來Report Power
其準確度又是如何?這是一般設計者第一個會想到的問題。論準確度其實不準,因為合
成軟體 Report Power 會假設整個電路中的所有電晶體電路 on / off 機率為 50%去考量功
率消耗,實際上電路動作時不可能剛好如此,一個準確的功率量測必須要灌入大量且實
際的 Pattern 去測試得到的 on/off 資訊即 Switch Activity 給軟體去作 Power Analysis 才會
準確,整個 Power Analysis 流程如圖九所示。首先告知軟體所有會用到的 Library 其 Lib
檔,因為 Library 或 IP 廠商會定義其 Cell 或 Macro Power Information 於 lib 檔中,Power
Analysis 軟體只需透過 lib 檔即可計算 Cell / Macro 內部之功率消耗,接著將合成完之電
路 Gate-level Netlist 讀入,再從 Gate-level Simulation 中得到實際 Switch Activity 資訊[6],
如此便可以得較準確之功率消耗資訊。Pre-Layout 的 Power Analysis 由於受到 WLM 不
準確[9]、Clock Tree Synthesis 還未實際產生及 Layout 後電路還會再變化等因素影響,所
以 Pre-layout Power Analysis 並非完全精準的。
12
Select libraries
Read Netlist
Read Gate SAIF
Report power
.lib file有提供每個Cell之Dynamic/Leakage Power Info.
Gate-level Netlist
Switch Activity Info.
Pre-layout Power Report
圖九 Pre-Layout Power Report/Analysis Flow
3-4 Formal Verification
依前述所言,合成前後Function可能會不一致,我們可以考量用Gate-level Simulation
得知合成後 Function 之正確性,但假使驗證後發現 Function 不正確,要用 Debug Tool[8]
來抓錯誤點,往往需要耗上相當多的時間,為解決這問題,可以使用 Formal Verification
工具找出其問題點。Formal Verification 是作為合成前後驗證 Function 是否會一致的工
具,其操作流程如圖十所示。設計者須準備合成前的 Golden RTL Code 與合成後產生的
Gate-level Netlist (Revised Code)及其相關 Library 檔,當合成時有額外添加電路如 Testing
Circuit,可以給定Constraints予以Mask掉,接著Tool會從電路的Key Point開始比對(Key
Point 意指 Primary Input / Output、Flip-Flop、Latch、Black Box 等)作 Logic Equivalence
Check 如圖十一所示,比對完全正確。假使比對有錯,Tool 會將錯誤點以 Schematic 方
式秀出來,讓設計者知道需改善的地方。
13
圖十 Formal Verification Flow
圖十一 Logic Equivalence Check
4 Gate-level Post-layout Verification
Post-layout 為整個 Cell-Based Design Flow 中 Back-End 的部分,主要是將合成完的
Gate-level Netlist 使用 APR(Auto Placement & Route)軟體開始進行 Auto-layout,以產生
ASIC 晶片的 Layout 檔案 GDSII 及 Post-layout Gate-level Netlist,為驗證 Layout 後
Function 是否依然正確,以下將針對 Post-layout RC Extraction、Gate-level Simulation、
Power Analysis、Formal Verification、DRC/LVS 作說明,其詳細內容茲分述如下:
14
module CONTROL ….
input A, B, C;
output reg X;
………..
and2 U1 (.I0(B), .I1(C), .Z(T1);
or2 U2 (.I0(B), .I1(C), .Z(T2);
mux2 U3 (.S(A),.I1(T1),.I2(T2), .Z(X);
………..
APR
Gate-level Netlist
Standard Cell Library
P&R’d Layout
create_clock –period 10 ……
set_input_delay –max 1.2 ….
set_output_delay –max 2.5 ….
set_load 0.25 …..
……….
Timing Constraints
IP
module CONTROL ….
input A, B, C;
output reg X;
………..
and2 U1 (.I0(B), .I1(C), .Z(T1);
or2 U2 (.I0(B), .I1(C), .Z(T2);
mux2 U3 (.S(A),.I1(T1),.I2(T2), .Z(X);
………..
APR
Gate-level Netlist
Standard Cell Library
P&R’d Layout
create_clock –period 10 ……
set_input_delay –max 1.2 ….
set_output_delay –max 2.5 ….
set_load 0.25 …..
……….
Timing Constraints
IPIPIP
圖十二 From Pre-layout Gate-level Netlist to Layout
4-1 To Generate GDSII & Gate-level Netlist Using APR Tool
APR(Auto Placement & Route)在Back-End Design中扮演非常重要角色,可以將已合
成好的Pre-layout Gate-level Netlist轉換成Post-layout GDSII & Gate-level Netlist,如圖十
二所示。圖十三為整個APR的流程,Floorplan前先準備已合成好的Gate-level Netlist、
Standard Cell Library、IO Pad Library、Technology File(讓APR Tool得知P&R之Rule)、
Macro(如Memory、ARM Processor等)。在Floorplan步驟中由設計者決定該晶片Die面積
大小、Power/Ground Pad的配置、IO Constraint(決定IO擺放順序)、Macro擺置及Power
Mesh的配置。在Placement前準備好Timing Constraint(告知APR Tool該晶片的規格為何?
包括Design Environment、Design Constraint)及計算Net Delay的RC Table檔(如TLU+、
captbl)。在Placement步驟中,APR軟體會根據設計者的Constraint將Cell擺放至適當方位
以滿足規格,假使未滿足規格,設計者可再透過Placement Optimization取得更好的
Performance。另外假使有Testing Circuit,需要在Placement時將Scan Chain作Re-order,
以取得較好的Performance。完成Placement後即可開始進行Clock Tree Synthesis(CTS),
目的讓每個Clock Signal可以balance送至Flip-Flop的末端,以降低Clock Skew及增加Clock
Signal的推動力。最後再將Standard Cell、IO Pad Cell、Macro等Cell之Signal Pin進行繞線,
並作Routing Optimization達成規格,完成Routing步驟。完成整個晶片P&R後,確認都沒
Violation後即可存成Post-layout GDSII及Gate-level Netlist檔案。關於APR比較細節的操作
步驟與設定可以參考CIC訓練課程講義[10][11]。
15
從整個 APR Flow 可以發現,Placement、CTS、Routing 這些都是軟體在作的,這對
設計者來說並非是難事,但是在 Floorplan 及 Power 的規劃卻是要花最多 Effort 的,這
是因為 Design 中如果有多個 Macro 時會不知道怎麼擺放才可以做到滿足 Timing 規格,
也不知道要如何作出一個好的 Power Mesh 規劃,像是 P/G Cell 個數要多少?、Metal
寬度要多少?Stripe 要幾條?才不會造成 IR Drop 過多或 Electro-Migration(EM)問題發
生。這些問題常常困擾著設計者,也是 Layout 最花時間的部分,關於這問題在 Layout
軟體之進階功能中就有 Solution,可參考 CIC 的技術文章[12]有詳細介紹。
圖十三 Auto Placement & Route Flow
4-2 RC Extraction
如圖十三所示,晶片在 Layout 過程中,每作一道關卡設計者最好隨時都要確認
Timing 規格是否依然滿足,以決定各關卡 Optimization 功能之啟用。然而在 Timing 的
Report 中,Tool 是根據什麼來計算的?這和合成時的分析方式又有何不同?在 Layout
時,設計者要提供 RC Table 給 Tool 計算 Net 的 Delay,RC Table 如 TLU+或 capTbl 都是
由 Library 廠商會提供,該 Table 可以查到每 unit 長度的 Metal 其 RC 值為多少,Tool 會
自動查表並計算 Net 長度為多少,來決定每條 Net 的 Delay 是多少。由於 Layout 時已有
實際電路存在,Tool 可以依據實際長度計算出 Net Delay 時間,因此跟合成時所使用的
WLM 準確度差異甚多。因此每次設計者要 Report Timing 前,都要針對目前 Layout 電
16
路再作一次 RC Extraction,以取得精確地 Delay Calculation,直到最後 Layout 完成產生
正確的 sdf 檔,作為 Post-layout Gate-level Simulation 之用。
4-3 Gate-level STA & Simulation
Layout 後,電路的 Function 有可能因 Layout 而有所改變。會造成電路 Function 錯
誤原因一般是 Signal Pin 被 floating 掉或 CTS 出了問題。因此在 Layout 後還要再作
Gate-level Post-layout Simulation 以確認 Function 是否正確。其方法與圖八之 Pre-layout
Simulation 相似,不同處為 Gate-level Netlist 與 sdf 檔要改用 Layout 後產生的即可。Test
Bench 中的 Period,依據 Layout 後的 STA 結果作設定。
圖十四 Power Analysis Data Preparation v.s. Data Output
4-4 Gate-level Power Analysis
在 Layout 過程中,當完成 Power Mesh 規劃及 Cell、Macro 擺定位後,為了確認目
前規劃的 Power Mesh 夠 Robust,不會造成 IR Drop 超過合理範圍(一般為工作電壓 10%
以下)及 EM Violations 發生,因此要使用 Layout 軟體之 Power Analysis 的功能進行分析。
Power Analysis 前須準備包括,P/G Cell 個數及方位、該晶片的 Input 端的 Transition
Time(因一個 Cell Power Consumption 是根據 Input Transition 與 Output Capacitance 查表
得知的 )、Net Switch Activity。前面兩項可依實際電路給定,Switch Activity 須將目前
Layout 結果存成 Gate-level Netlist 並灌入實際的 Pattern 進行 Simulation,得到的 Switch
17
Activity 資訊輸入給 Tool 計算,才可以得到精準的 Power Analysis 結果。經 Power Analysis
工具分析後會產生 IR Drop Map、Electro-Migration Map 如圖十五所示。假設工作電壓為
1.2V,Max IR Drop 為 39.58mV 僅降 3.27%(未超過 10%)表示 Power Mesh 建構的很好。
另外,每條 Metal 在 Technology File 都有定義每 1um 最大可以承受的電流量,如表一所
示。從圖十五(b) EM Map 我們可以看出 Worst EM 僅有 3.89mA/um 發生於 Metal3,然而
Metal3 最大可以承受到 19.3mA/um,因此設計者可以斷定如此的 Power Mesh 規劃對 EM
也是無任何的 Violation。關於 Power Analysis 的操作細節與分析方法可參考 CIC 訓練課
程講義[10][11][12]。
(a) (b) 圖十五 Power Analysis Output(a)IR Drop Map、(b)Electro-Migration Map
表一 Example for Max Current Density
4-5 Formal Verification
依前述所言,合成前後 Function 可能會不一致,同樣地 Layout 前後 Function 也可
能會不一致。因此我們可以考量用 Post-layout Gate-level Simulation 得知 Layout 後
Function 之正確性,但假使驗證後發現 Function 不正確,要用 Debug Tool[8]來抓錯誤
點,往往需要耗上相當多的時間,為解決這問題,同樣地我們可以使用 Formal Verification
工具找出其問題點。Formal Verification 也可作為 Layout 前後驗證 Function 是否會一致
的工具,其操作流程與之前相同,流程如圖十所示。
18
圖十六 Design Rule Check Item
4-6 DRC/LVS
Design Rule Check(DRC)顧名思義就是將 Layout 結果,依據 Foundry 對該製程定義
的 Max or Min Width、Area、Inside/Outside Spacing 等 Rule 作確認有無違反,如圖十六
所示。假如發現有違反 Rule 時,設計者可以將 Layout 完的 GDSII 檔用 Layout 軟體(如
Virtuoso、Laker)開啟,再點選 DRC 軟體所發現的錯誤點座標,即可將 Layout 有違反
Rule 的地方予以修正。
圖十七 (a)Transistor LVS (b)Black Box LVS
19
Layout vs. Schematic (LVS)顧名思義就是將 Layout 結果與 Schematic 作比對,比較
兩者間 Instance、Port(PIN)、Net 等個數、Cell 連線情況及 Power/Ground 連接是否一致,
以確認 Layout 完結果之正確性,如圖十七(b)所示。LVS 原本應該是要像圖十七(a)作
Transistor LVS,例如 Full-Custom Flow 便是如此,由於 Library 廠商當初在製作 Standard
Cell 時,早已針對所有的 Cell 內部電晶體電路作過 LVS 比對,因此為了加快整體電路
的 LVS 驗證速度,在 Cell-Based Flow 中都會將所有 Cell 視為 Black Box,略過其內部檢
查,僅需驗證 Black Box 的個數與連線正確性等作確認即可。關於 DRC/LVS 相關操作
細節可以參考 CIC 訓練教材[10][11]。
5 Circuit-level Verification
由於 Gate-level 模擬使用了大量的 model 以化簡龐大的計算量,因而犧牲了相當的精
準度以及忽略各種 transistor-level 中可能出現的效應,因此會須要以 Cirucit-level 模擬來
確保晶片的正確性。為了讓使用者能夠順利進行 Transistor-level Simulation,CIC 提供
Post-layout Verification System,簡稱 PVS。整個流程如圖十八所示,過程包含有替換真
實的佈局、進行 LPE 轉換成 Transistor-level Netlist 並淬取電路中的寄生元件,最後搭配
測試輸入訊號進行 Transistor-level Simulation,由於此時的電路通常相當龐大以至於無法
用一般 spice 軟體進行模擬,在這裏使用的軟體是屬於 fast spice 種類,其以 event driven
配合 transition table 的方式使得可以進行大電路模擬,模擬結果則可用相關波形顯示軟
體來觀察。
圖十八
5-1 Replace True Layout
對於 CIC Cell-Based Design Flow 而言,因為智慧財產權保密協定之考量,所以 CIC
無法將真實電路佈局提供給學校。使用者需要透過 CIC 將自己設計的電路 GDSII 檔案
替換成真實的佈局。在替換成真實電路佈局的同時,之前使用者在 Gate-level Post-layout
Verification 的步驟所碰到缺少 Metal Density 的問題,系統會自動在這個步驟中將 Metal
Density 補上,完成最後完整的電路佈局。
20
5-2 DRC/LVS
轉換成真實電路佈局後,最後的電路佈局給果須再做一次 DRC 檢查。由於在這個
階段,電路已經轉成真實的電路佈局,所以其主要的重點在於轉換之後繞線是否符合製
程的規定,或是在轉換的過程出現連線的問題,以便修正錯誤,減少下線之後失敗的機
率。
另外會對電路的 Power 例如 VDD、VSS,作最後的 LVS 檢查,主要目的是檢查電
路是否在轉換成真實佈局後產生短路,避免電路出錯。
5-3 Circuit Extraction
在 PVS 系統上是利用電晶體層次的電路佈局寄生元件萃取功能(Layout Parasitic
Extract),簡稱 LPE,萃取電路的雜散電容。將之前已經轉換成真實的電路佈局執行 LPE
指令轉換成 Transistor-level Netlist。 5-4 Circuit-level Simulation
在進行 Circuit-level Simulation 之前,必須先提供 IO 及環境的設定檔,環境設定檔
設定項目包括模擬電路之腳位負載、設定所要觀看輸出節點之模擬結果、模擬電路工作
電壓位準、模擬所需精確度控制方式等。以之配合事先準備好的測試向量檔即可以使用
fast spice 軟體進行模擬,模擬後的波形檔可以一般波形顯示軟體來觀察模擬輸出結果,
以驗證最後電路的完整正確性。
21
參考文獻
[1] CIC 訓練課程– VHDL. [2] CIC 訓練課程– Verilog. [3]林俊賓, “如何在 Post-layout Verification System(PVS)中進行 Post-layout Simulation”,
PDS-031218-00-002.pdf. , pp. 1-5, Dec 2003. [4] CIC 訓練課程– Nanosim. [5]王旭昇,”Logic Synthesis with Design Compiler,” CIC 訓練課程 2008。 [6]王旭昇,”Power Optimization / Analysis with Synopsys Tool Power Compiler and
PrimePower,”CIC 技術文章 2006。 [7]蔡振宇,”Design for Testability with TurboBist-Memory, DFT Compiler and TetraMAX,”
CIC 訓練課程 2008。 [8]陳獻文,”Advanced Debugging with Verdi,” CIC 訓練課程 2008。 [9]王旭昇,”A Timing Closed Approach for Block Implementation of a 300MHZ DCT/IDCT
Processor,”CIC 技術文章 2005。 [10]張年翔,”Cell-Based IC Physical Design and Verification with SOC Encounter,” CIC 訓練
課程 2008。 [11]莊宗桓,”Cell-Based IC Physical Design and Verification with Astro,” CIC 訓練課程
2008。 [12]王旭昇,”Automatic Floorplan and Power Network Synthesis / Analysis with Synopsys
Tool : JupiterXT,”CIC 技術文章 2006。