0515-cic referenced flow for cell-based ic...
TRANSCRIPT
-
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。