本書(shū)是面向數(shù)字芯片設(shè)計(jì)與驗(yàn)證的入門(mén)書(shū)籍,是微電子相關(guān)專(zhuān)業(yè)的基礎(chǔ)課程。 本書(shū)以理論基礎(chǔ)為核心,以參考實(shí)例為主線(xiàn),幫助讀者迅速建立數(shù)字芯片設(shè)計(jì)和驗(yàn)證的概念和設(shè)計(jì)基礎(chǔ),包括兩篇:數(shù)字電路及Verilog篇講解數(shù)字邏輯電路基礎(chǔ),硬件描述語(yǔ)言Verilog的基礎(chǔ)語(yǔ)法,對(duì)應(yīng)的實(shí)例分析,以及組合邏輯電路和時(shí)序邏輯電路的設(shè)計(jì)和驗(yàn)證的參考實(shí)例;SystemVerilog篇講解包括兼顧設(shè)計(jì)和驗(yàn)證的語(yǔ)言SystemVerilog的基礎(chǔ)語(yǔ)法,對(duì)應(yīng)的實(shí)例分析,以及由簡(jiǎn)單到相對(duì)復(fù)雜的運(yùn)算器的設(shè)計(jì)和驗(yàn)證的參考實(shí)例。 本書(shū)根據(jù)實(shí)際工程項(xiàng)目的經(jīng)驗(yàn),做了精簡(jiǎn)和重難點(diǎn)分析,并提供了豐富的實(shí)例和源代碼供學(xué)習(xí)參考,通俗易懂,并且易于上機(jī)實(shí)踐,提升學(xué)習(xí)效果,適合初學(xué)者入門(mén),也可作為高等院校和培訓(xùn)機(jī)構(gòu)相關(guān)專(zhuān)業(yè)的教學(xué)參考書(shū)。
●提供了豐富的實(shí)例和源代碼,在學(xué)習(xí)基礎(chǔ)語(yǔ)法的同時(shí)方便讀者上機(jī)實(shí)踐并加深理解
●提供了豐富的視頻教程,方便參照和進(jìn)一步學(xué)習(xí)
●簡(jiǎn)化了在實(shí)際工程項(xiàng)目中很少去使用的語(yǔ)法內(nèi)容的介紹
●側(cè)重對(duì)重點(diǎn)內(nèi)容的學(xué)習(xí)介紹,幫助讀者更快入門(mén)
●由易到難的循序漸進(jìn)的參考實(shí)例,幫助讀者更好吸收和理解設(shè)計(jì)和驗(yàn)證的大致過(guò)程
前言
行業(yè)發(fā)展
芯片行業(yè)作為高科技設(shè)計(jì)和制造業(yè),是人才、資本齊聚集的行業(yè),既是科技信息行業(yè)的基礎(chǔ),也是大國(guó)博弈的必爭(zhēng)之地。然而,芯片行業(yè)的發(fā)展無(wú)法一蹴而就,需要長(zhǎng)期投入和積累,需要一代一代的人去努力。近年來(lái),我國(guó)的芯片行業(yè)正在快速發(fā)展,需要更多的人才進(jìn)入該行業(yè),對(duì)于未來(lái)計(jì)劃從事數(shù)字芯片設(shè)計(jì)與驗(yàn)證相關(guān)崗位的初學(xué)者來(lái)講,希望本書(shū)可以起到一定的幫助作用。
本書(shū)內(nèi)容
本書(shū)分為兩篇共7章,數(shù)字電路及Verilog篇(第1~5章),SystemVerilog篇(第6章和第7章),兩篇都包括了基礎(chǔ)語(yǔ)法及對(duì)應(yīng)的實(shí)例分析,并且上述內(nèi)容根據(jù)實(shí)際工程項(xiàng)目的經(jīng)驗(yàn),做了內(nèi)容的精簡(jiǎn)和重點(diǎn)、難點(diǎn)的分析和補(bǔ)充。
第1章介紹數(shù)字芯片設(shè)計(jì)的基礎(chǔ)概念和常識(shí),從而為學(xué)習(xí)后面的內(nèi)容做鋪墊。
第2章講述數(shù)字邏輯電路基礎(chǔ),包括數(shù)制表示、門(mén)電路及分析、組合邏輯和時(shí)序邏輯電路。
第3章講述Verilog硬件描述語(yǔ)言的基礎(chǔ)語(yǔ)法并提供了實(shí)例代碼以幫助讀者理解。
第4章將第2章和第3章的內(nèi)容串聯(lián)在一起,講述如何分析并使用Verilog硬件描述語(yǔ)言實(shí)現(xiàn)組合邏輯電路,并講述如何基于Verilog硬件描述語(yǔ)言搭建測(cè)試平臺(tái),從而對(duì)組合邏輯電路設(shè)計(jì)做簡(jiǎn)單的功能驗(yàn)證。
第5章將第2章和第3章的內(nèi)容串聯(lián)在一起,講述如何分析并使用Verilog硬件描述語(yǔ)言實(shí)現(xiàn)時(shí)序邏輯電路,然后講述如何基于Verilog硬件描述語(yǔ)言搭建測(cè)試平臺(tái),從而對(duì)時(shí)序邏輯電路設(shè)計(jì)做簡(jiǎn)單的功能驗(yàn)證。
第6章講述SystemVerilog這種兼顧硬件設(shè)計(jì)和驗(yàn)證的編程語(yǔ)言的基礎(chǔ)語(yǔ)法并提供實(shí)例代碼以幫助讀者理解。
第7章以一個(gè)對(duì)初學(xué)者難度適中的運(yùn)算器設(shè)計(jì)為例,講述整個(gè)設(shè)計(jì)和驗(yàn)證的過(guò)程,從而將之前章節(jié)的內(nèi)容都串聯(lián)起來(lái),對(duì)讀者的學(xué)習(xí)效果進(jìn)行鞏固提升。
本書(shū)特色
(1) 不同于以往數(shù)字電路和Verilog的相關(guān)書(shū)籍,本書(shū)在提供基礎(chǔ)語(yǔ)法的同時(shí)還提供了可以練習(xí)的案例和源代碼,并且通過(guò)實(shí)例講解,將設(shè)計(jì)和驗(yàn)證的概念串聯(lián)在一起,使讀者學(xué)習(xí)起來(lái)更加有針對(duì)性,更有效率。
(2) 本書(shū)側(cè)重描述實(shí)際工程中的語(yǔ)法使用,而不只是簡(jiǎn)單地介紹基礎(chǔ)的語(yǔ)法而脫離實(shí)際,因?yàn)槭聦?shí)上,有不少語(yǔ)法在實(shí)際工程中并不推薦去使用,因此在實(shí)際工程項(xiàng)目中幾乎不會(huì)用到的內(nèi)容本書(shū)將不進(jìn)行講解。
(3) 市面上相對(duì)缺乏對(duì)于SystemVerilog這種兼顧硬件設(shè)計(jì)和驗(yàn)證編程語(yǔ)言的圖書(shū),本書(shū)旨在引導(dǎo)廣大讀者更輕松、更容易且更貼近實(shí)際工程項(xiàng)目地學(xué)習(xí)相關(guān)語(yǔ)法知識(shí),并教給讀者如何去應(yīng)用。
讀者對(duì)象
(1) 相關(guān)專(zhuān)業(yè)的在校大學(xué)生。
(2) 相關(guān)領(lǐng)域的技術(shù)工程人員。
學(xué)習(xí)建議
(1) 本書(shū)內(nèi)容由易到難,建議讀者按照章節(jié)順序進(jìn)行學(xué)習(xí),也可根據(jù)自身掌握情況適當(dāng)跳過(guò)部分基礎(chǔ)章節(jié)的內(nèi)容進(jìn)行學(xué)習(xí)。
(2) 本書(shū)語(yǔ)法基礎(chǔ)及實(shí)例章節(jié)都提供了代碼以供下載,建議讀者下載后導(dǎo)入推薦的仿真環(huán)境中進(jìn)行仿真運(yùn)行,從而加深理解,提升學(xué)習(xí)效果。
(3) 本書(shū)作為數(shù)字電路設(shè)計(jì)和驗(yàn)證的入門(mén)書(shū)籍,較為詳盡地講述了常用于硬件設(shè)計(jì)的Verilog硬件描述語(yǔ)言,兼顧硬件設(shè)計(jì)和驗(yàn)證的SystemVerilog編程語(yǔ)言,并且提供了較為豐富的實(shí)例供讀者練手,但依然難以窮盡所有細(xì)節(jié)。讀者在閱讀本書(shū)后,應(yīng)根據(jù)在實(shí)際工作中的項(xiàng)目,參考相關(guān)語(yǔ)法標(biāo)準(zhǔn),進(jìn)一步學(xué)習(xí)Verilog、SystemVerilog及涉及的UVM驗(yàn)證方法學(xué)和腳本等內(nèi)容。
資源下載提示
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
視頻等資源: 掃描封底的文泉云盤(pán)防盜碼,再掃描書(shū)中相應(yīng)章節(jié)的二維碼,可以在線(xiàn)學(xué)習(xí)。
本書(shū)所有的代碼都在Synopsys VCS上經(jīng)過(guò)了仿真驗(yàn)證(仿真運(yùn)行的腳本在各個(gè)章節(jié)代碼目錄下,名稱(chēng)為run.do),并且提供了標(biāo)注所在路徑位置的代碼供讀者下載,未標(biāo)注所在路徑位置的代碼都為說(shuō)明性代碼,相對(duì)比較簡(jiǎn)單,因此不提供下載。
仿真環(huán)境
建議使用Synopsys VCS I2014.03以上版本運(yùn)行本書(shū)提供的實(shí)例代碼。
致謝
寫(xiě)書(shū)時(shí)可愛(ài)的女兒才九個(gè)月,需要照顧和陪伴,而工作和寫(xiě)作占用了我大部分的時(shí)間,感謝家人,尤其是妻子的理解和支持。
本書(shū)一定還存在一些不足之處,懇請(qǐng)讀者給予批評(píng)指正。
作者
2023年6月
馬驍,東南大學(xué)集成電路專(zhuān)業(yè)碩士,已申請(qǐng)芯片驗(yàn)證領(lǐng)域多個(gè)專(zhuān)利,網(wǎng)易云課堂芯片驗(yàn)證:UVM理論與實(shí)戰(zhàn)芯片驗(yàn)證:Python腳本理論與實(shí)戰(zhàn)等課程的作者。
數(shù)字電路及Verilog篇
第1章引言(15min)
1.1基礎(chǔ)概念
1.1.1模擬信號(hào)和數(shù)字信號(hào)
1.1.2計(jì)算機(jī)和芯片的組成關(guān)系
1.1.3芯片設(shè)計(jì)的流程
1.1.4芯片設(shè)計(jì)的方向
1.1.5學(xué)習(xí)數(shù)字電路、Verilog和SystemVerilog的必要性
1.2設(shè)計(jì)與驗(yàn)證的常識(shí)
1.2.1設(shè)計(jì)與驗(yàn)證的關(guān)系
1.2.2驗(yàn)證方案要素
1.2.3測(cè)試平臺(tái)組成
1.2.4覆蓋率的分類(lèi)
1.3本章小結(jié)
第2章數(shù)字邏輯電路基礎(chǔ)(12min)
2.1數(shù)制及其表示
2.1.1數(shù)制
2.1.2有符號(hào)數(shù)
2.2布爾代數(shù)
2.3基本邏輯電路
2.3.1與門(mén)電路
2.3.2或門(mén)電路
2.3.3非門(mén)電路
2.3.4鎖存器
2.3.5觸發(fā)器
2.4邏輯電路結(jié)構(gòu)
2.4.1建立時(shí)間和保持時(shí)間
2.4.2組合邏輯電路
2.4.3時(shí)序邏輯電路
2.5硬件描述的抽象級(jí)別
2.6本章小結(jié)
第3章Verilog基礎(chǔ)(85min)
3.1數(shù)值表示
3.2數(shù)據(jù)類(lèi)型
3.2.1變量
3.2.2線(xiàn)網(wǎng)
3.2.3參數(shù)
3.2.4字符串
3.3運(yùn)算符
3.3.1基本運(yùn)算符
3.3.2按位運(yùn)算符
3.3.3邏輯運(yùn)算符
3.3.4關(guān)系運(yùn)算符
3.3.5移位運(yùn)算符
3.3.6拼接運(yùn)算符
3.3.7縮減運(yùn)算符
3.3.8三目運(yùn)算符
3.3.9復(fù)制運(yùn)算符
3.3.10位選擇運(yùn)算符
3.3.11運(yùn)算符的優(yōu)先級(jí)別
3.4程序塊語(yǔ)句
3.4.1順序執(zhí)行程序塊
3.4.2并行執(zhí)行程序塊
3.4.3混合執(zhí)行程序塊
3.5結(jié)構(gòu)語(yǔ)句
3.5.1initial語(yǔ)句
3.5.2always語(yǔ)句
3.6賦值語(yǔ)句
3.6.1阻塞和非阻塞賦值語(yǔ)句
3.6.2連線(xiàn)賦值語(yǔ)句
3.6.3強(qiáng)制賦值語(yǔ)句
3.7條件和循環(huán)語(yǔ)句
3.7.1條件語(yǔ)句
3.7.2循環(huán)語(yǔ)句
3.7.3程序塊的自動(dòng)生成
3.8任務(wù)和函數(shù)
3.8.1任務(wù)
3.8.2函數(shù)
3.9控制語(yǔ)句
3.9.1終止程序語(yǔ)句
3.9.2同步等待語(yǔ)句
3.10系統(tǒng)函數(shù)
3.10.1$display和$write,$time和$realtime
3.10.2$random
3.10.3$finish
3.10.4$readmemb和$readmemh
3.10.5$fopen、$fclose、$fdisplay和$fwrite
3.10.6$test$plusargs和$value$plusargs
3.10.7$realtobits和$bitstoreal
3.10.8$signed和$unsigned
3.10.9$monitor
3.11宏定義
3.11.1仿真時(shí)間單位和精度
3.11.2文件包含
3.11.3全局參數(shù)
3.11.4條件編譯
3.12本章小結(jié)
第4章組合邏輯電路實(shí)例(46min)
4.1解碼器
4.1.1真值表
4.1.2卡諾圖及邏輯表達(dá)式
4.1.3電路圖
4.1.4Verilog實(shí)現(xiàn)
4.1.5測(cè)試平臺(tái)
4.1.6仿真驗(yàn)證
4.2加法器
4.2.1真值表
4.2.2卡諾圖及邏輯表達(dá)式
4.2.3電路圖
4.2.4Verilog實(shí)現(xiàn)
4.2.5測(cè)試平臺(tái)
4.2.6仿真驗(yàn)證
4.3存儲(chǔ)器
4.3.1Verilog實(shí)現(xiàn)
4.3.2測(cè)試平臺(tái)
4.3.3仿真驗(yàn)證
4.4本章小結(jié)
第5章時(shí)序邏輯電路實(shí)例(84min)
5.1觸發(fā)器
5.1.1Verilog實(shí)現(xiàn)
5.1.2測(cè)試平臺(tái)
5.1.3仿真驗(yàn)證
5.2移位寄存器
5.2.1Verilog實(shí)現(xiàn)
5.2.2測(cè)試平臺(tái)
5.2.3仿真驗(yàn)證
5.3計(jì)數(shù)器
5.3.1Verilog實(shí)現(xiàn)
5.3.2測(cè)試平臺(tái)
5.3.3仿真驗(yàn)證
5.4狀態(tài)機(jī)
5.4.1過(guò)程分析
5.4.2Verilog實(shí)現(xiàn)
5.4.3測(cè)試平臺(tái)
5.4.4仿真驗(yàn)證
5.5本章小結(jié)
SystemVerilog篇
第6章SystemVerilog基礎(chǔ)(169min)
6.1數(shù)據(jù)類(lèi)型
6.1.1基本類(lèi)型
6.1.2枚舉類(lèi)型
6.1.3字符串類(lèi)型
6.1.4數(shù)組和隊(duì)列類(lèi)型
6.1.5自定義類(lèi)型
6.1.6結(jié)構(gòu)體和聯(lián)合體類(lèi)型
6.1.7常量
6.1.8變量轉(zhuǎn)換
6.2運(yùn)算符
6.3任務(wù)和函數(shù)
6.3.1Verilog與SystemVerilog的差異
6.3.2支持ref端口類(lèi)型
6.4循環(huán)及其控制語(yǔ)句
6.4.1循環(huán)語(yǔ)句
6.4.2控制及結(jié)束語(yǔ)句
6.5結(jié)構(gòu)語(yǔ)句
6.5.1final語(yǔ)句
6.5.2always_comb和always_ff語(yǔ)句
6.5.3末尾標(biāo)簽
6.6并行執(zhí)行程序塊語(yǔ)句
6.7控制語(yǔ)句
6.7.1wait fork等待語(yǔ)句
6.7.2iff條件控制語(yǔ)句
6.7.3inside匹配語(yǔ)句
6.7.4進(jìn)程控制類(lèi)
6.8分支語(yǔ)句
6.9面向?qū)ο缶幊?/p>
6.9.1面向?qū)ο蟮母拍?/p>
6.9.2結(jié)構(gòu)體和類(lèi)
6.9.3類(lèi)的封裝
6.9.4類(lèi)的繼承
6.9.5類(lèi)的多態(tài)
6.9.6類(lèi)的模板
6.9.7類(lèi)的靜態(tài)和動(dòng)態(tài)變量及方法
6.9.8類(lèi)的復(fù)制和克隆
6.9.9類(lèi)的參數(shù)化
6.10接口
6.10.1基本介紹
6.10.2端口分組
6.10.3時(shí)鐘塊
6.10.4虛接口和接口方法
6.11包
6.12斷言
6.12.1立即斷言
6.12.2并發(fā)斷言
6.13隨機(jī)化
6.13.1類(lèi)的隨機(jī)及約束
6.13.2隨機(jī)種子
6.13.3單向約束
6.13.4雙向約束
6.13.5權(quán)重分布
6.13.6約束開(kāi)關(guān)控制
6.13.7隨機(jī)開(kāi)關(guān)控制
6.13.8隨機(jī)回調(diào)方法
6.13.9檢查器
6.13.10約束求解順序
6.13.11權(quán)重分支
6.13.12軟約束
6.13.13隨機(jī)范圍
6.14系統(tǒng)函數(shù)
6.14.1$isunknown
6.14.2$urandom_range
6.14.3$system
6.14.4$bits
6.14.5$typename
6.14.6$left、$right、$size、$dimensions
6.14.7$clog2
6.14.8$sformatf
6.14.9$fscanf
6.14.10$root
6.15宏函數(shù)
6.16線(xiàn)程間的通信
6.16.1旗語(yǔ)
6.16.2郵箱
6.16.3事件
6.17覆蓋率收集
6.17.1基本介紹
6.17.2覆蓋組
6.17.3設(shè)置覆蓋倉(cāng)
6.17.4設(shè)置采樣條件
6.17.5參數(shù)化的覆蓋組
6.17.6翻轉(zhuǎn)覆蓋率收集
6.17.7覆蓋倉(cāng)中的通配符
6.17.8交叉覆蓋率
6.17.9忽略和非法覆蓋倉(cāng)
6.17.10覆蓋率選項(xiàng)參數(shù)
6.17.11覆蓋率方法接口
6.18綁定輔助代碼
6.18.1綁定到模塊
6.18.2綁定到接口
6.19與其他編程語(yǔ)言的通信
6.19.1基本介紹
6.19.2使用步驟
6.20本章小結(jié)
第7章參考實(shí)例
7.1對(duì)運(yùn)算器的設(shè)計(jì)和驗(yàn)證
7.1.1設(shè)計(jì)說(shuō)明
7.1.2設(shè)計(jì)實(shí)現(xiàn)
7.1.3測(cè)試計(jì)劃
7.1.4搭建測(cè)試平臺(tái)
7.1.5仿真驗(yàn)證
7.1.6覆蓋率分析和提高
7.2對(duì)寄存器控制的運(yùn)算器的設(shè)計(jì)和驗(yàn)證
7.2.1設(shè)計(jì)說(shuō)明
7.2.2設(shè)計(jì)實(shí)現(xiàn)
7.2.3測(cè)試計(jì)劃
7.2.4搭建測(cè)試平臺(tái)
7.2.5仿真驗(yàn)證
7.3對(duì)基于APB總線(xiàn)的運(yùn)算器的設(shè)計(jì)和驗(yàn)證
7.3.1設(shè)計(jì)說(shuō)明
7.3.2設(shè)計(jì)實(shí)現(xiàn)
7.3.3測(cè)試計(jì)劃
7.3.4搭建測(cè)試平臺(tái)
7.3.5仿真驗(yàn)證
7.4本章小結(jié)
參考文獻(xiàn)