本書結合多年的集成電路設計和CAD/EDA工具使用經驗編寫,輔以不同的設計實例和流程,介紹相應的典型工具的使用。 本書分為三個部分,共18章。*部分(第1~5章)是模擬集成電路設計工具及使用,主要內容包括:電路仿真工具軟件使用,設計實例基準源、噪聲、開關電容設計及驗證,版圖繪制及其工具軟件,版圖驗證與后仿真,設計所需規則文件的詳細說明。第二部分(第6~13章)是數字集成電路設計工具及使用,主要內容包括:系統級建模與數模混合仿真,數字電路設計與Verilog HDL,硬件描述語言的軟件仿真與FPGA硬件驗證,邏輯綜合與Design Compiler,自動布局布線及Astro,布局布線工具IC Compiler,數字集成電路設計的驗證方法,可測性設計及可測性設計軟件使用。第三部分(第14~18章)是Linux操作系統及其他相關知識,主要內容包括:Linux系統常用命令,Memory Compiler軟件Embed-It Integrator使用方法,數字IC功耗分析工具PTPX使用方法,流片前的Check List,集成電路設計領域常用英文縮略語。本書提供配套電子課件、仿真程序源文件等。 本書可以作為微電子及相關專業的研究生和高年級本科生的集成電路課程的參考教材,也適合于作為集成電路領域的科研人員和工程師的參考資料。
◎提供配套電子課件、仿真程序源文件等;◎從應用的角度引導讀者學習、掌握軟件的使用;◎選取典型的工具,每部分的主體設計流程均經過流片和測試驗證;◎實例都取自實際科研和教學項目,具有一定的代表性和實用性。
前 言
集成電路是電子工業的基礎,以集成電路為基礎的電子信息產業的發展,對國民經濟發展、產業技術創新能力提高及現代國防建設都具有極其重要的作用,而集成電路設計業則是集成電路產業鏈中的核心。隨著集成電路技術的發展,集成電路設計的手段也經歷了從手工設計、到計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE),在20世紀90年代開始逐步發展到電子設計自動化(Electronics Design Automation,EDA)階段。CAD/EDA工具已經成為當今集成電路設計和制造流程中的必不可少的工具。
技術進步伴隨著設計復雜性的增加,導致了CAD/EDA工具的功能也越來越強大,對集成電路設計工程師和科研人員提出了更高的要求。他們不但要有足夠的數學、物理、器件、電路、工藝的知識,還要投入相當的精力學習、熟悉CAD/EDA工具和系統的使用。不同CAD/ EDA工具提供的手冊因其系統的復雜性及不是用中文閱讀者母語編寫的,會給沒有相應經驗指導的初學者帶來很大的困難。已經出版的CAD/EDA書籍大多都是關于電子系統級應用或是針對超大規模集成電路的設計方法學,而針對模擬集成電路設計、數字/模擬及數;旌霞呻娐吩O計和生產制造相關的CAD/EDA工具的指導書籍卻很少;谶@個原因,編著者結合多年的集成電路設計和CAD/EDA工具使用經驗,編寫了本書,輔以不同的設計實例和流程,介紹相應的典型工具的使用。
本書分為三個部分,共18章。第一部分(第1~5章)以不同的設計實例介紹了模擬集成電路設計工具的應用,以Cadence設計流程中的工具為主,同時也介紹業界常用的Synopsys的Hspice電路仿真工具、Mentor Graphics的Calibre版圖驗證工具及SpringSoft公司的Laker軟件的使用。第二部分(第6~13章)為數字集成電路的設計工具使用教程,分別介紹了用MATLAB進行系統級驗證、使用ModelSim和NC-Verilog進行HDL描述和仿真、使用Xilinx ISE進行FPGA驗證設計、使用Synopsys的Design Compiler工具進行綜合及使用Astro進行后端設計,最后介紹了數字IC設計的驗證方法學及可測性設計的基本概念和流程。本書與上一版相比,增加了第11章布局布線工具IC Compiler的使用方法,在第12章中增加了形式驗證及靜態時序分析的內容和相關工具的使用方法。同時本書在上一版教程的基礎上新增了第三部分(第14~18章)Linux操作系統及其他相關知識,主要講解在集成電路設計過程中一些需要掌握的服務器Linux操作系統知識、第三方存儲單元的嵌入方法、數字集成電路功耗分析流程及相關工具的使用方法、芯片流片前需要檢查和注意的事項,最后給出了集成電路設計領域常用的英文縮略語。
本書出版前的講義多年來一直作為浙江大學微電子相關專業集成電路課程設計研究生課程的教材,不斷積累并更新。本書在寫作方式上,盡量從應用的角度引導讀者學習、掌握軟件的使用。選取了典型的工具,每部分的主體設計流程均經過了流片和測試驗證,所選的例子也都是取自實際的科研和教學項目,具有一定的代表性和實用性。本書可以作為微電子及相關專業的研究生和高年級本科生的集成電路相關課程的參考教材,也適合作為集成電路領域的科研人員和工程師的參考資料。
本書提供配套電子課件、仿真程序源文件等,請登錄華信教育資源網(http://www.hxedu.com.cn)注冊下載。
全書架構及內容由浙江大學微電子學院韓雁教授總負責并審稿定稿,同時負責第一部分的編寫;韓曉霞講師負責第二部分的編寫;第三部分由張世峰助理研究員編寫。本書在編寫過程中得到了浙江大學微電子學院微納電子研究所多名研究生的大力幫助,有馬紹宇、洪慧、陳金龍、霍明旭、黃小偉、周海峰、崔強、付文、韓成功、黃大海、陳磊、蔡友、陳茗、羅豪、張斌、程維維、廉玉平、張艷、張昊、彭成、范鎮琪、蔡坤明、斯瑞珺、彭洋洋、張吉皓、曾才賦、杜宇禪、梁筱、周騫、陳雅雅和喬志通等,他們在文檔翻譯、實例的仿真驗證、文稿錄入、圖表制作等方面都做了大量工作。作者在編寫過程中也參考了大量的文獻、資料、手冊。在此一并表示真誠的感謝。
由于編者學識和水平有限,加之CAD/EDA工具的版本也在不斷更新發展,錯漏之處敬請讀者批評指正。
作 者
2017年08月于浙大求是園
韓雁:博士、教授、博導。浙江大學微電子與光電子研究所副所長。1982年畢業于浙大半導體器件專業。長期從事微電子學與集成電路設計相關領域的教學、科研工作。中國半導體行業協會IC分會理事、浙江省電源學會常務理事、半導體行業協會常務理事。從事微電子學科及集成電路設計、功率器件設計方向的教學、科研工作,承擔過國家863 IC設計重大專項、國家科技重大專項(核高基)、國家自然科學基金、教育部博士點基金、浙江省自然科學基金、重大橫向課題、海外合作項目在內的近50項科研項目。
目 錄
第一部分 模擬集成電路設計工具及使用1
第1章 電路仿真工具軟件使用3
1.1 Cadence電路仿真工具包3
1.1.1 Cadence設計環境簡介3
1.1.2 電路圖輸入工具Virtuoso Schematic Composer5
1.1.3 仿真環境工具Analog Design Environment6
1.1.4 仿真結果的顯示及處理9
1.1.5 建立子模塊10
1.1.6 示例(D觸發器)11
1.2 Hspice的使用13
1.2.1 Hspice簡介13
1.2.2 *.sp文件的生成14
1.2.3 Hspice的運行與仿真14
1.3 Ultrasim仿真技術15
1.3.1 Ultrasim技術簡介15
1.3.2 Ultrasim仿真環境設置16
1.4 芯片封裝的建模與帶封裝信息的仿真19
1.4.1 Modeling RF IC Packages簡介19
1.4.2 PKG的具體使用19
第2章 設計實例基準源、噪聲、開關電容設計及驗證24
2.1 電壓基準源設計24
2.1.1 電壓基準源簡介24
2.1.2 電壓基準源分類24
2.1.3 實現帶隙基準源的原理25
2.1.4 基準源啟動電路26
2.1.5 基準源噪聲27
2.1.6 基準源輸出驅動27
2.1.7 基準源計算機仿真28
2.1.8 基準源的版圖設計31
2.2 CMOS集成電路噪聲分析及仿真31
2.2.1 噪聲類型32
2.2.2 噪聲分析方法33
2.2.3 連續時間系統的噪聲仿真步驟34
2.3 開關電容電路仿真36
2.3.1 開關電容電路背景知識36
2.3.2 開關電容電路的精度37
2.3.3 使用雙相無交疊時鐘的開關電容電路的分析方法38
2.3.4 開關電容電路的Cadence仿真方法39
2.3.5 開關電容電路頻率響應仿真40
2.3.6 開關電容電路的噪聲仿真42
第3章 版圖繪制及其工具軟件49
3.1 典型CMOS工藝流程簡介49
3.2 設計規則簡介52
3.3 Virtuoso軟件簡介及使用53
3.3.1 Virtuoso軟件啟用53
3.3.2 Virtuoso中快捷鍵的使用56
3.3.3 反相器版圖繪制舉例57
3.3.4 PDK簡介59
3.4 Laker軟件簡介及使用62
3.4.1 Laker使用時需要的文件62
3.4.2 Laker軟件啟用及主窗口63
3.4.3 Laker基本的版圖編輯功能介紹63
3.4.4 Laker特有的高級版圖編輯功能介紹66
3.4.5 原理圖驅動的版圖編輯67
3.4.6 設計實例68
3.5 版圖設計中的相關主題73
3.5.1 天線效應73
3.5.2 Dummy的設計73
3.5.3 Guard Ring的設計75
3.5.4 Match的設計76
第4章 版圖驗證與后仿真78
4.1 版圖驗證與后仿真簡介78
4.2 Diva驗證工具79
4.2.1 Diva DRC規則文件79
4.2.2 Diva版圖提取文件81
4.2.3 LVS文件的介紹83
4.2.4 寄生參數提取文件83
4.2.5 Diva的使用84
4.3 Calibre驗證工具88
4.3.1 Calibre規則文件88
4.3.2 Calibre的用法89
4.3.3 數;旌想娐稬VS的操作方法94
第5章 設計所需規則文件的詳細說明96
5.1 完整的Diva DRC、Extract、LVS規則文件96
5.1.1 Diva DRC規則文件96
5.1.2 Diva Extract規則文件97
5.1.3 Diva LVS規則文件98
5.2 Diva 層次處理語句的圖文解釋99
5.2.1 邏輯命令99
5.2.2 關系命令101
5.2.3 選擇命令104
5.2.4 尺寸命令105
5.2.5 層生成命令106
5.2.6 存儲命令107
5.3 Diva中DRC和寄生參數提取語句107
5.3.1 Diva DRC語句107
5.3.2 Diva寄生參數提取語句110
第二部分 數字集成電路設計工具及使用113
第6章 系統級建模與數;旌戏抡116
6.1 MATLAB簡介117
6.2 MATLAB的Toolboxes117
6.2.1 數字信號處理118
6.2.2 濾波器設計118
6.2.3 Link For ModelSim119
6.3 MATLAB的編程122
6.4 Simulink仿真基礎123
6.4.1 Simulink簡介123
6.4.2 Simulink的模塊124
6.4.3 Simulink仿真參數的設定124
6.4.4 Simulink系統仿真的簡單實例125
6.5 Verilog-A簡介130
6.6 Verilog-A的編程130
6.6.1 基本語法131
6.6.2 基本表達式132
6.6.3 模擬運算符132
6.6.4 Verilog-A仿真133
6.7 Verilog-A建模實例133
6.7.1 反相器133
6.7.2 利用Cadence中的向導產生模擬模塊136
6.8 SpectreVerilog混合信號仿真137
6.8.1 SpectreVerilog仿真簡介137
6.8.2 創建模擬模塊137
6.8.3 創建數字模塊138
6.8.4 設置仿真配置文件138
6.8.5 設置和檢查模塊劃分139
6.8.6 設置數模接口141
6.8.7 設置仿真菜單及仿真結果141
第7章 數字電路設計與Verilog HDL143
7.1 HDL設計方法學簡介143
7.1.1 數字電路設計方法143
7.1.2 硬件描述語言143
7.1.3 設計方法學144
7.1.4 Verilog HDL簡介144
7.2 Verilog HDL建模概述146
7.2.1 模塊146
7.2.2 時延148
7.2.3 三種建模方式148
7.3 Verilog HDL基本語法151
7.3.1 標識符151
7.3.2 注釋152
7.3.3 格式152
7.3.4 數字值集合152
7.3.5 數據類型154
7.3.6 運算符及表達式155
7.3.7 條件語句159
7.3.8 case語句160
7.4 結構建模161
7.4.1 模塊定義161
7.4.2 模塊端口161
7.4.3 實例化語句161
7.5 數據流建模162
7.5.1 連續賦值語句163
7.5.2 阻塞賦值語句163
7.5.3 非阻塞賦值語句164
7.5.4 數據流建模具體實例165
7.6 行為建模166
7.6.1 簡介166
7.6.2 順序語句塊166
7.6.3 過程賦值語句166
7.7 可綜合設計168
7.7.1 設計準則168
7.7.2 進程劃分準則169
7.7.3 可綜合子集169
7.7.4 可綜合設計中的組合電路設計169
7.7.5 可綜合設計中的時序電路設計169
第8章 硬件描述語言的軟件仿真與FPGA硬件驗證170
8.1 ModelSim的使用170
8.1.1 ModelSim的啟動170
8.1.2 ModelSim仿真流程171
8.1.3 編譯工藝資源庫173
8.1.4 調試173
8.1.5 ModelSim仿真小結174
8.2 NC-Verilog的使用174
8.2.1 ncvlog命令174
8.2.2 ncelab命令176
8.2.3 ncsim命令177
8.2.4 NC-Verilog仿真小結178
8.3 用Debussy調試仿真結果178
8.4 HDL仿真總結180
8.5 FPGA硬件驗證180
8.5.1 FPGA基本組成180
8.5.2 FPGA設計流程181
8.5.3 FPGA下載配置184
第9章 邏輯綜合與Design Compiler191
9.1 邏輯綜合綜述191
9.2 用Design Compiler綜合電路192
9.2.1 Design Analyzer的啟動193
9.2.2 設計讀入194
9.2.3 鏈接196
9.2.4 實例唯一化197
9.2.5 設計環境197
9.2.6 設計約束202
9.2.7 設計的邏輯綜合206
9.2.8 邏輯綜合結果的分析207
9.2.9 邏輯綜合結果保存209
9.2.10 時序約束文件的導出210
9.3 Synplify的使用方法210
9.3.1 Synplify概述210
9.3.2 Synplify設計流程210
9.3.3 Synplify文件類型總結213
9.4 邏輯綜合總結213
第10章 自動布局布線及Astro214
10.1 Astro簡介214
10.2 數據準備214
10.2.1 庫文件214
10.2.2 工藝文件217
10.2.3 設計文件217
10.3 利用Astro進行布局布線的設計流程218
10.3.1 工具啟動219
10.3.2 創建設計庫219
10.3.3 讀入網表文件220
10.3.4 打開設計庫和設計單元221
10.3.5 布圖規劃222
10.3.6 布局229
10.3.7 時鐘樹綜合235
10.3.8 布線前的電源/地線檢查240
10.3.9 布線240
10.3.10 可制造性設計處理246
10.3.11 版圖驗證246
10.3.12 數據輸出247
第11章 布局布線工具IC Compiler249
11.1 IC Compiler簡介249
11.2 ICC后端設計須知250
11.2.1 后端設計中常用文件的格式說明250
11.2.2 I/O庫與標準單元庫中的特殊單元251
11.2.3 ICC中的靜態時序分析252
11.2.4 ICC中的MCMM256
11.3 利用ICC進行布局布線的設計流程258
11.3.1 設計準備258
11.3.2 布圖規劃265
11.3.3 布局276
11.3.4 時鐘樹綜合279
11.3.5 布線286
11.3.6 DFM(可制造性設計)289
11.3.7 版圖驗證295
11.3.8 數據輸出296
11.3.9 ECO297
第12章 數字集成電路設計的驗證方法299
12.1 OVM驗證方法學介紹299
12.2 驗證工具QuestaSim軟件介紹302
12.3 使用OVM搭建驗證環境307
12.4 隨機驗證315
12.5 形式驗證及Formality軟件使用方法318
12.5.1 設置Reference Design320
12.5.2 設置Implementation Design322
12.5.3 設置環境323
12.5.4 Match324
12.5.5 Verify324
12.5.6 Debug325
12.5.7 形式驗證中所用的腳本及代碼325
12.6 靜態時序驗證及PrimeTime軟件使用方法328
12.6.1 靜態時序驗證328
12.6.2 靜態時序分析原理329
12.6.3 基于PrimeTime的靜態時序分析330
第13章 可測性設計及可測性設計軟件使用336
13.1 可測性設計基礎336
13.1.1 測試336
13.1.2 可測性設計336
13.1.3 故障模型336
13.1.4 自動測試矢量生成338
13.1.5 可測性設計的常用方法338
13.2 使用DFTC進行可測性設計340
13.2.1 Synopsys的DFT流程340
13.2.2 DFT掃描鏈插入342
13.2.3 Synopsys Adaptive Scan壓縮344
13.3 使用TetraMAX進行ATPG生成344
13.3.1 TetraMAX的圖形界面344
13.3.2 TetraMAX的基本流程345
13.3.3 ATPG測試向量生成346
13.4 DFT設計實例348
13.4.1 設計代碼編寫348
13.4.2 綜合并插入掃描鏈的過程349
13.4.3 ATPG自動測試矢量生成351
第三部分 Linux操作系統及其他1