本書系統(tǒng)介紹了數(shù)字集成電路的設計思想、原理、方法和技術,主要內(nèi)容包括數(shù)字集成電路設計流程、Verilog硬件描述語言、基于Verilog HDL的邏輯設計方法、數(shù)字集成電路設計的驗證方法、EDA 工具的原理及使用方法、基于FPGA的集成電路設計方法、低功耗設計技術、可測性設計方法、SoC設計方法以及多個復雜度較高的設計實例等。
本書根據(jù)數(shù)字集成電路設計與驗證的工程需要確定知識結(jié)構,內(nèi)容涵蓋了數(shù)字集成電路設計流程中的各個知識點;設計實例豐富且介紹詳盡,使讀者能夠深入了解各個設計環(huán)節(jié),加深對設計方法的理解,提高工程實踐能力;在內(nèi)容的組織編排方面,突出邏輯性和條理性,遵循循序漸進的原則,利于讀者學習和掌握。
本書可以作為高等學校電子信息類專業(yè)本科生和研究生的教材,也可供相關的工程技術人員參考。
本書內(nèi)容涵蓋了數(shù)字集成電路設計全流程,系統(tǒng)介紹了數(shù)字集成電路設計與驗證的思想、原理、方法和技術。涵蓋數(shù)字集成電路設計概述、數(shù)字集成電路設計流程、Verilog硬件描述語言、基于Verilog HDL的邏輯設計方法、數(shù)字集成電路設計的驗證方法、EDA工具的原理及使用方法、基于FPGA的集成電路設計方法、低功耗設計技術、可測性設計方法、SOC設計方法、設計實例等內(nèi)容。本書具有以下特點:(1)內(nèi)容新穎,緊跟學科和產(chǎn)業(yè)發(fā)展,將新的研究成果和先進的實用技術納入其中。
(2)知識結(jié)構系統(tǒng)完備,內(nèi)容涵蓋了數(shù)字集成電路設計流程中的各個知識點。
(3)設計實例豐富,每個實例都來自作者的科研項目,具有一定的設計復雜度和創(chuàng)新性,并經(jīng)過嚴格的測試驗證;所有實例都提供全部的Verilog RTL設計代碼和驗證代碼及測試向量,供讀者參考;通過對設計實例的詳細講解和讀者親自動手實踐,培養(yǎng)讀者的工程思維和動手能力。
(4)注重總結(jié)和提煉具有普遍指導意義的設計思想和方法,引導讀者舉一反三,提高分析問題和解決問題的能力。
(5)在內(nèi)容的組織與編排方面突出邏輯性和條理性,遵循循序漸進的原則,符合讀者的學習習慣。
數(shù)字集成電路設計技術是信息產(chǎn)業(yè)的核心技術,關系到國家的安全和經(jīng)濟的發(fā)展,體現(xiàn)了一個國家的核心競爭力和創(chuàng)新能力。目前,我國集成電路設計產(chǎn)業(yè)發(fā)展迅速,人才缺口較大,很多高校的電子信息類專業(yè)陸續(xù)開設了數(shù)字集成電路設計相關課程。編寫本書的目的是提高我國數(shù)字集成電路設計人才的培養(yǎng)質(zhì)量,為我國集成電路設計產(chǎn)業(yè)的發(fā)展提供支持。
編寫本書的指導思想是:面向?qū)W科前沿,面向產(chǎn)業(yè)需求,面向工程實踐,在內(nèi)容的選擇和組織上體現(xiàn)出系統(tǒng)性、完備性、先進性和實用性。
基于上述指導思想,本書首先介紹了數(shù)字集成電路的歷史、現(xiàn)狀和發(fā)展趨勢,以及相關的基本概念、思想和方法;然后介紹了目前產(chǎn)業(yè)界流行的數(shù)字集成電路設計流程,之后以該設計流程為主線,詳細介紹了流程中各個環(huán)節(jié)所用到的設計思想、原理、方法和技術,主要內(nèi)容包括數(shù)字集成電路設計流程、Verilog硬件描述語言、基于Verilog HDL的邏輯設計方法、數(shù)字集成電路設計的驗證方法、EDA 工具的原理及使用方法、基于FPGA 的集成電路設計方法、低功耗設計技術、可測性設計方法、SoC設計方法以及多個復雜度較高的設計實例等。
本 書內(nèi)容新穎,緊跟學科前沿,能夠把新的理論研究成果和先進的實用技術及時納入其中;知識結(jié)構系統(tǒng)完備,內(nèi)容涵蓋了數(shù)字集成電路設計流程中的各個知識點;設計實例豐富,每個實例都來自筆者的科研項目且介紹詳盡,使讀者能夠深入了解各個設計環(huán)節(jié),加深對設計方法的理解,提高工程實踐能力;注重總結(jié)和提煉具有普遍指導意義的設計思想和方法,引導讀者重視對一般性的設計思想、設計方法的理解和掌握,而非僅僅局限于某些具體問題的解決,從而提高讀者分析問題和解決問題的能力;在內(nèi)容的組織編排方面,突出邏輯性和條理性,遵循循序漸進的原則,符合學習習慣。
本書可以作為高等學校電子信息類專業(yè)本科生和研究生的教材,也可供相關的工程技術人員參考。建議本教材的授課學時為80學時,其中理論48學時,實驗32學時,具體學時分配見下表:
授課內(nèi)容 學時分配
第1章 數(shù)字集成電路設計概述 4學時
第2章 數(shù)字集成電路設計流程 8學時
第3章 Verilog硬件描述語言 8學時
第4章 基于Verilog HDL的邏輯設計方法 6學時
第5章 數(shù)字集成電路設計的驗證方法 4學時
第6章 EDA工具的原理及使用方法 8學時
第7章 基于FPGA的集成電路設計方法 4學時
第8章 低功耗設計技術 2學時
第9章 可測性設計方法 2學時
第10章 SoC設計方法 2學時
實驗(可從第11~15章5個設計實例中選擇1個作為實驗內(nèi)容,將設計實例劃分為體系結(jié)構 32學時
設計、各個子模塊的RTL代碼設計與功能仿真、系統(tǒng)集成與功能仿真、基于FPGA 進行綜
合與布局布線、靜態(tài)時序分析與時序仿真、FPGA實現(xiàn)與測試等多個實驗)
本書由曲英杰和李陽編寫,筆者學生明洋、仝令威、林澤龍、苗恒、馬敬萬、孫希杰、趙晨旭、王靜等參與了書中部分設計實例的仿真與驗證工作,在此向他們表示感謝。本書在編寫過程中參考了近年來國內(nèi)外出版的多本同類書籍和相關資料,在此一并向相關人員表示衷心的感謝!
限于筆者水平,書中難免有不當之處,敬請廣大讀者批評指正!
編著者
E-mail:quyj_qd@163.com
曲英杰,現(xiàn)任青島科技大學教授,主要研究方向為集成電路設計、計算機系統(tǒng)結(jié)構、信息安全,擁有二十三年集成電路設計與教學經(jīng)驗。本科畢業(yè)于山東大學,碩士畢業(yè)于南京航空航天大學,博士畢業(yè)于北京科技大學。1987年2月至2004年8月在青島理工大學任教師,2004年8月至今在青島科技大學任教師、教研室主任,負責籌建了集成電路設計與集成系統(tǒng)、微電子科學與工程兩個本科專業(yè)和計算機應用技術碩士點,并擔任集成電路設計相關課程的主講教師。1998年8月至2001年12月在北京多思公司從事集成電路設計工作,2002年1月至2004年3月在東北大學計算機科學與技術博士后流動站和海信集團ASIC中心從事集成電路設計方面的研究。主要科研成果如下:
(1)主持完成了青島市重點技術創(chuàng)新項目—可重構密碼協(xié)處理器,設計實現(xiàn)了可重構密碼協(xié)處理器的FPGA驗證芯片,該項目已經(jīng)通過了青島市科技局和青島市經(jīng)濟委員會組織的鑒定,鑒定結(jié)論為水平。
(2)主持完成了青島市科技計劃項目—可移動高性能電腦加密機的研究與設計,提出了可移動高性能電腦加密機的設計方法與技術,并基于FPGA設計實現(xiàn)了一個原理樣機。該樣機采用USB2.0接口與電腦通信,能夠?qū)崿F(xiàn)AES算法和RSA算法,可用于機密文件的加密存儲和傳輸、數(shù)字簽名和身份認證等領域。
(3)主持完成了“可重組加密芯片”項目,所設計的FPGA驗證芯片通過了公安部和北京市專家組的測試。
(4)參與完成了“宏指令集計算機微處理器設計”項目,所設計的CPU已經(jīng)流片成功,并通過了權威部門的測試。
(5)主持設計完成了AES、RSA、SM2、SM4、DES、GOST、IDEA、RC5、RC6、SHA、SM3、MD5、RISC-V CPU等集成電路IP核,其中AES IP核已經(jīng)流片成功。
(6)發(fā)表學術論文50余篇。
(7)獲得發(fā)明專利授權5項、實用新型專利授權5項、軟件著作權8項。
(8)出版教材3部。
第1章 數(shù)字集成電路設計概述001
1.1 數(shù)字集成電路的發(fā)展歷史與現(xiàn)狀002
1.1.1 機械式計算機的啟蒙時代002
1.1.2 電子技術和半導體技術的誕生和發(fā)展002
1.2 現(xiàn)代數(shù)字IC 設計方法的發(fā)展005
1.2.1 自底向上的設計方法005
1.2.2 自頂向下的設計方法005
1.2.3 自頂向下與自底向上相結(jié)合的設計方法006
1.3 數(shù)字IC 前端設計語言及后端設計軟件(EDA) 006
1.3.1 Verilog 硬件描述語言007
1.3.2 VHDL 007
1.3.3 驗證和驗證語言007
1.3.4 數(shù)字IC 設計后端EDA 工具008
1.4 數(shù)字IC 的設計模式008
1.4.1 全定制設計模式008
1.4.2 標準單元設計模式009
1.4.3 門陣列設計模式009
1.4.4 宏模塊設計模式009
1.4.5 FPGA 設計模式009
1.4.6 不同設計模式的比較009
1.5 數(shù)字IC 設計面臨的挑戰(zhàn)010
1.5.1 工藝極限的挑戰(zhàn)010
1.5.2 投資風險的挑戰(zhàn)010
1.5.3 IC 工程師面臨的挑戰(zhàn)011
1.5.4 項目管理上的挑戰(zhàn)011
1.6 集成電路的分類011
1.6.1 按用途分類011
1.6.2 按集成度分類011
1.6.3 按設計與制造過程分類012
1.7 與集成電路設計與制造相關的常用術語和基本概念012
1.8 集成電路設計質(zhì)量評價014
第2章 數(shù)字集成電路設計流程016
2.1 數(shù)字集成電路設計流程簡介017
2.2 系統(tǒng)體系結(jié)構設計017
2.2.1 系統(tǒng)體系結(jié)構設計的內(nèi)容及方法017
2.2.2 系統(tǒng)體系結(jié)構設計實例018
2.3 RTL 代碼編寫045
2.4 RTL 代碼功能仿真046
2.5 綜合優(yōu)化048
2.6 可測性設計051
2.7 后端布局布線051
2.8 時序仿真052
2.9 靜態(tài)時序分析與時序收斂053
2.9.1 靜態(tài)時序分析053
2.9.2 時序收斂053
2.10 CMOS 工藝選擇053
2.11 IC 產(chǎn)業(yè)的變革及對設計方法的影響054
第3章 Verilog 硬件描述語言056
3.1 引言057
3.2 Verilog HDL 基本結(jié)構057
3.2.1 簡單的Verilog HDL 例子057
3.2.2 Verilog HDL 的基本結(jié)構059
3.2.3 邏輯功能定義059
3.2.4 關鍵字060
3.2.5 標識符060
3.2.6 編寫Verilog HDL 源代碼的標準061
3.3 數(shù)據(jù)類型及常量、變量062
3.4 運算符及表達式066
3.5 語句069
3.6 賦值語句和塊語句070
3.7 條件語句073
3.8 循環(huán)語句075
3.9 結(jié)構說明語句078
3.10 編譯預處理語句083
3.11 語句的順序執(zhí)行與并行執(zhí)行085
3.12 不同抽象級別的Verilog HDL 模型086
3.13 設計技巧088
第4章 基于Verilog HDL 的邏輯設計方法091
4.1 基本組合電路的設計方法092
4.2 基本時序電路設計097
4.3 同步狀態(tài)機的設計方法099
4.4 存儲模塊設計117
4.5 復雜數(shù)字系統(tǒng)的邏輯設計121
4.5.1 算法狀態(tài)機圖121
4.5.2 數(shù)據(jù)通道/控制器劃分122
4.5.3 復雜數(shù)字系統(tǒng)的設計方法123
4.6 復雜數(shù)字系統(tǒng)設計舉例——多周期處理機設計123
4.6.1 多周期處理機Verilog RTL 代碼123
4.6.2 多周期處理機測試代碼128
4.6.3 多周期處理機功能仿真129
4.7 可綜合的Verilog RTL 設計129
4.7.1 可綜合的組合電路設計130
4.7.2 可綜合的時序電路設計131
4.8 代碼書寫風格132
第5章 數(shù)字集成電路設計的驗證方法133
5.1 數(shù)字集成電路設計驗證的原理與方法134
5.2 軟件仿真舉例1:RSA 加密處理器仿真135
5.3 軟件仿真舉例2:基于USB 的RSA 加密處理器的功能仿真139
5.4 軟件仿真舉例3:AES 加密處理器的時序仿真143
5.5 硬件仿真舉例:基于USB 的AES/RSA 加密處理器的硬件仿真146
5.6 驗證平臺編碼風格150
5.7 驗證平臺模塊設計150
5.8 驗證平臺結(jié)構設計154
5.9 斷言155
5.10 驗證質(zhì)量評估156
第6章 EDA 工具的原理及使用方法158
6.1 ModelSim 的使用方法159
6.1.1 ModelSim 概覽159
6.1.2 基本仿真流程160
6.1.3 ModelSim 工程165
6.1.4 基于多庫的仿真171
6.1.5 在波形窗口中查看仿真結(jié)果174
6.1.6 利用ModelSim 進行時序仿真178
6.2 Quartus Ⅱ的使用方法180
6.2.1 可編程邏輯設計流程180
6.2.2 設計輸入190
6.2.3 綜合198
6.2.4 仿真202
6.2.5 布局布線205
6.2.6 基于塊的設計211
6.2.7 時序分析215
6.2.8 時序逼近220
6.2.9 編程與配置224
6.2.10 調(diào)試228
6.2.11 工程更改管理231
6.2.12 系統(tǒng)級設計234
6.2.13 軟件開發(fā)238
第7章 基于FPGA 的集成電路設計方法241
7.1 FPGA 基礎知識242
7.2 FPGA 的基本結(jié)構242
7.2.1 Cyclone Ⅳ系列FPGA 器件概述242
7.2.2 Cyclone Ⅳ器件的邏輯單元和邏輯陣列模塊246
7.2.3 Cyclone Ⅳ器件中的存儲器模塊250
7.2.4 Cyclone Ⅳ器件中的嵌入式乘法器253
7.3 FPGA 的設計流程256
7.4 基于FPGA 設計與實現(xiàn)集成電路的EDA 工具259
7.4.1 基于Quartus Prime 的FPGA 設計流程259
7.4.2 啟動Quartus Prime 軟件259
7.4.3 創(chuàng)建一個新的工程260
7.4.4 輸入用Verilog 代碼描述的設計模型263
7.4.5 編譯設計電路266
7.4.6 引腳分配267
7.4.7 FPGA 芯片的編程與配置268
7.4.8 對所設計的電路進行測試270
第8章 低功耗設計技術271
8.1 低功耗設計的背景和意義272
8.2 低功耗設計技術的發(fā)展趨勢273
8.3 常用的低功耗設計技術介紹275
第9章 可測性設計方法278
9.1 可測性設計的背景及意義279
9.2 可測性設計的基本概念與方法279
9.2.1 常用縮略語解釋279
9.2.2 DFT 的常用方法280
9.3 基于ATPG 的掃描測試284
9.3.1 掃描測試的基本原理284
9.3.2 掃描測試的主要階段285
9.3.3 掃描測試的基本時序286
9.3.4 掃描設計的注意事項287
9.4 邊界掃描電路設計288
9.4.1 邊界掃描簡介288
9.4.2 邊界掃描電路結(jié)構289
9.4.3 TAP 控制器及指令集289
9.4.4 基于BSD Compiler 的邊界掃描電路設計方法292
第10章 SoC 設計方法297
10.1 SoC 概述297
10.2 SoC 設計流程300
10.2.1 軟硬件協(xié)同設計300
10.2.2 基于標準單元的SoC 芯片設計流程302
10.3 SoC 系統(tǒng)結(jié)構設計305
10.4 IP 復用的設計方法314
10.5 SoC 驗證方法318
第11章 AES 密碼處理器設計與驗證(方案1) 320
11.1 AES 算法描述321
11.1.1 數(shù)學預備知識321
11.1.2 符號和習慣用語322
11.1.3 AES 加密算法323
11.1.4 AES 解密算法326
11.1.5 密鑰擴展329
11.2 AES 密碼處理器的體系結(jié)構設計330
11.2.1 AES 密碼處理器框圖及外部信號說明330
11.2.2 AES 密碼處理器模塊結(jié)構圖331
11.2.3 AES 密碼處理器各子模塊設計方案331
11.3 AES 密碼處理器的Verilog 模型設計342
11.4 AES 密碼處理器的功能仿真355
11.4.1 密鑰擴展仿真結(jié)果355
11.4.2 加密仿真結(jié)果356
11.4.3 解密仿真結(jié)果357
11.5 基于FPGA 的AES 密碼處理器的實現(xiàn)與測試358
11.5.1 基于FPGA 的AES 密碼處理器的綜合與時序仿真358
11.5.2 基于FPGA 的AES 密碼處理器的實現(xiàn)與測試361
第12章 AES 密碼處理器設計與驗證(方案2) 365
12.1 AES 密碼處理器體系結(jié)構設計366
12.1.1 AES 密鑰擴展模塊電路結(jié)構設計367
12.1.2 AES 加/解密模塊電路結(jié)構設計368
12.1.3 提高性能和降低成本采用的技術368
12.2 AES 密碼處理器Verilog RTL 模型設計369
12.3 AES 密碼處理器功能仿真382
12.4 AES 密碼處理器綜合及性能、規(guī)模分析384
12.5 AES 密碼處理器綜合后時序仿真385
12.6 AES 密碼處理器布局布線385
12.7 AES 密碼處理器版圖后物理檢查(DRC、LVS) 386
12.8 AES 密碼處理器版圖后性能、規(guī)模、功耗分析387
12.9 AES 密碼處理器版圖后時序仿真387
12.10 AES 密碼處理器基于FPGA 的綜合、布局布線及分析388
12.11 AES 密碼處理器基于FPGA 的實現(xiàn)與測試389
12.12 AES 密碼處理器使用說明390
第13章 SM4 密碼處理器設計與驗證391
13.1 SM4 密碼算法簡介392
13.1.1 說明與定義392
13.1.2 SM4 加/解密算法393
13.1.3 SM4 密鑰擴展算法393
13.1.4 SM4 加密實例394
13.2 SM4 密碼處理器體系結(jié)構設計395
13.3 SM4 密碼處理器Verilog RTL 模型設計397
13.4 SM4 密碼處理器功能仿真408
13.5 SM4 密碼處理器綜合及性能、規(guī)模、功耗分析410
13.6 SM4 密碼處理器綜合后時序仿真412
13.7 SM4 密碼處理器布局布線413
13.8 SM4 密碼處理器物理驗證(DRC、LVS) 414
13.9 SM4 密碼處理器布局布線后性能、規(guī)模、功耗分析414
13.10 SM4 密碼處理器版圖后時序仿真415
13.11 SM4 密碼處理器FPGA 驗證415
第14章 RSA 密碼處理器設計與驗證419
14.1 RSA 算法描述420
14.2 RSA 算法硬件實現(xiàn)原理421
14.3 RSA 密碼處理器體系結(jié)構設計422
14.3.1 RSA 控制模塊設計423
14.3.2 參數(shù)寄存器模塊設計428
14.3.3 數(shù)據(jù)選擇器模塊設計429
14.3.4 模乘模塊設計429
14.4 RSA 密碼處理器主要RTL 代碼設計433
14.5 RSA 密碼處理器功能仿真440
14.5.1 模乘模塊功能仿真440
14.5.2 RSA 密碼處理器功能仿真441
14.6 RSA 密碼處理器基于FPGA 的綜合、布局布線與性能、規(guī)模、功耗分析442
14.7 RSA 密碼處理器基于FPGA 的實現(xiàn)與測試444
14.8 基于ASIC 標準單元工藝庫對RSA 密碼處理器進行綜合及分析445
14.9 對綜合后的RSA 密碼處理器進行布局布線及分析447
14.10 附錄(表14-17) 448
第15章 基于RISC-Ⅴ處理器和密碼協(xié)處理器的SoC 設計453
15.1 密碼算法簡介454
15.1.1 AES 算法454
15.1.2 RSA 算法455
15.2 SoC 體系結(jié)構設計456
15.2.1 領域?qū)S皿w系結(jié)構456
15.2.2 SoC 系統(tǒng)結(jié)構457
15.2.3 擴展指令編碼457
15.3 協(xié)處理器設計與功能仿真459
15.3.1 AES 算法核設計459
15.3.2 RSA 算法核設計461
15.3.3 EAI 接口控制邏輯的設計462
15.3.4 功能仿真465
15.4 FPGA 實現(xiàn)與測試467
15.4.1 FPGA 測試方案467
15.4.2 測試程序開發(fā)468
15.4.3 SoC 測試結(jié)果469
15.5 后端設計470
15.5.1 綜合470
15.5.2 綜合后的靜態(tài)時序分析471
15.5.3 形式驗證472
15.5.4 布局布線474
15.5.5 布局布線后的靜態(tài)時序分析478
15.5.6 時序仿真479
15.5.7 物理驗證480
15.6 設計結(jié)果分析481
參考文獻484