You are on page 1of 23

CIC Referenced Flow for Cell-based IC Design

設計服務組

Version 1.0

中 華 民 國 九 十 七 年 五 月
版本說明

版本編號 日期(Date) 說明(Description)


(Version)
V. 1.0 2008/5/ 初版

1
Abstract
CIC 整合了一個數位電路設計流程,並提供給學術界。本設計流程包含各階段的實
現及驗證的方法,驗證的目的是確保各個實現階段結果的正確性,項目包括有
function、timing、power、DRC 等,越到實體階段所須驗證的項目就越多。CIC 提
供的 Cell-Based Design Flow 從 Logic Synthesis、Place&Route、Layout Merging
到最後 Tape out 的步驟。每個步驟階段都有對應的軟體,學生只要遵循此流程,配
合 CIC 提供的 Cell Library,就可以完成電路晶片的實作。
1 The CIC Cell-Based Design Flow Overview
2 RTL Verification
2.1 RTL Code
2.2 Code Coverage Analysis
2.3 RTL Simulation
3 Gate-level Pre-layout Verification
3.1 To Generate Gate-level Netlist Using Logic Synthesis Tool
3.2 Gate-level Simulation
3.3 Gate-level Power Analysis
3.4 Formal Verification
4 Gate-level Post-layout Verification
4.1 To Generate GDSII & Gate-level Netlist Using APR Tool
4.2 RC Extraction
4.3 Gate-level STA & Simulation
4.4 Gate-level Power Analysis
4.5 Formal Verification
4.6 DRC/LVS
5 Circuit-level Verification
5.1 Replace True Layout
5.2 DRC/LVS
5.3 Circuit Extraction
5.4 Circuit-level STA & Simulation

2
目錄
版本說明.................................................................................................................................... 1
Abstract ...................................................................................................................................... 2
目錄............................................................................................................................................ 3
1 The CIC Cell-Based Design Flow Overview..................................................................... 4
2 The RTL Verification.......................................................................................................... 5
2-1 RTL Code ..................................................................................................................... 5
2-2 RTL Simulation............................................................................................................ 7
2-3 Code Coverage Analysis .............................................................................................. 8
3 Gate-level Pre-Layout Verification .................................................................................... 9
3-1 To Generate Gate-level Netlist Using Logic Synthesis Tool ..................................... 10
3-2 Gate-level Simulation ................................................................................................ 11
3-3 Gate-level Power Analysis......................................................................................... 12
3-4 Formal Verification .................................................................................................... 13
4 Gate-level Post-layout Verification .................................................................................. 14
4-1 To Generate GDSII & Gate-level Netlist Using APR Tool........................................ 15
4-2 RC Extraction............................................................................................................. 16
4-3 Gate-level STA & Simulation .................................................................................... 17
4-4 Gate-level Power Analysis......................................................................................... 17
4-5 Formal Verification .................................................................................................... 18
4-6 DRC/LVS ................................................................................................................... 19
5 Circuit-level Verification.................................................................................................. 20
5-1 Replace True Layout .................................................................................................. 20
5-2 DRC/LVS ................................................................................................................... 21
5-3 Circuit Extraction....................................................................................................... 21
5-4 Circuit-level Simulation............................................................................................. 21
參考文獻.................................................................................................................................. 22

3
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

RTL Verification
Code coverage RTL
Analysis simulation

Logic synthesis

Gate-level Netlist
Gate-level Pre-layout
Verification
Gate-level
Gate-level Formal
Power
simulation verification
Analysis

Place&Route

Gate-level Post-
layout Verification
Layout Gate-level Netlist

RC Extraction
Gate-level
Gate-level Formal
DRC/LVS Delay Power
simulation verification
Caculation Analysis

Gate-level
Layout Merging
STA

Layout

Circuit-level
Verification
Circuit Circuit-level Netlist
DRC/LVS
Extraction

Circuit -level Circuit -level


Simulation STA

Tapeout

圖一、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

SIGNAL a, b : std_logic_vector(2 DOWNTO 0);


SIGNAL x : std_logic_vector(5 DOWNTO 0);
x <= a + b;

其中,a、b、x 都是我宣告的訊號,在 VHDL 中可以將他視做連接線或是暫存器,<=

是指定運算子,+是加法運算子,也可以看作是 ALU,像這樣很簡單的設計描述就是 RTL

Code。另外,有關 ALU 的部份也可以請使用者自行設計,然後用 component 的方式去

呼叫使用它。
表二 RTL Code by Verilog

module comparator(gt, lt , eq , A, B);


output gt, lt , eql
input [3:0] A, B;
assign gt = (A>B);
assign lt = (A<B);
assign eq = (A= =B);

endmodule

這是一個比較器的 RTL Code,處理的是比較大,比較小與相等三種情況。其中 gt、lt、


eql 是輸出的訊號。A、B 都是 4bits 的輸入向量。

不管是使用 Verilog 或是 VHDL 來撰寫 RTL Code,都要能夠符合可以邏輯合成的語


法,有些語法不可以合成,請使用者在撰寫 RTL Code 的時候,就需要避免使用這類的

語法,這些語法可參考[2]。HDL 語言風格強烈左右邏輯合成的結果,好的寫法會產生

有效率的硬體,比較差的寫作風格合成時可能會失敗。一般在 RTL Level 的敘述通常與

硬體沒有直接的關係,所以有可能產生一些不需要的硬體。但是通常與硬體有密切關係

的寫法,卻又會犧牲設計的可攜性與再使用性。如何針對這個問題做改進,提出一些看

法。
1. 針對 module 與連線做有意義的命名:讓使用者一看就知道是什麼用途,有益
於線路的除錯以及避免出錯。
2. 避免混用正緣與負緣觸發的暫存器:同時使用正緣與負緣觸發的暫存器,會在
時脈的路徑上加入反向器與緩衝器,會產生 clock skew,將會發生不可預期的
結果。

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 中。

RTL
design

Clock Gating
Power Opt.
RTL

Operand Isolation
MVMS
(Power Intent)

Compiler Design
Technology
library
Insert DFT Circuit

Power Opt &


Testing Netlist

圖七 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
.lib file有提供每個Cell之
Select libraries Dynamic/Leakage Power Info.

Gate-level Netlist
Read Netlist

Read Gate SAIF Switch Activity Info.

Report power 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);
APR
or2 U2 (.I0(B), .I1(C), .Z(T2); IP
mux2 U3 (.S(A),.I1(T1),.I2(T2), .Z(X);
………..

Gate-level Netlist P&R’d Layout

create_clock –period 10 ……
set_input_delay –max 1.2 ….
set_output_delay –max 2.5 ….
set_load 0.25 …..
……….

Standard Cell Library Timing Constraints


圖十二 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。

22

You might also like