本書從RTL設(shè)計(jì)師視角出發(fā),系統(tǒng)梳理ASIC/VLSI行業(yè)標(biāo)準(zhǔn)工作流程中的關(guān)鍵知識與面試要點(diǎn),通過分享行業(yè)經(jīng)驗(yàn)與獨(dú)特視角,幫助讀者理解企業(yè)所需技能,提升面試競爭力,斬獲心儀職位。
全書分為三大部分:第一部分圍繞架構(gòu)與微架構(gòu)展開,涵蓋CPU流水線、CPU亂序調(diào)度、虛擬內(nèi)存和TLB、緩存一致性、FIFO、CDC、LRU算法、重排序、仲裁器、數(shù)字分頻器、算術(shù)邏輯設(shè)計(jì)、序列產(chǎn)生器等;第二部分聚焦驗(yàn)證、實(shí)現(xiàn)、綜合與功耗,詳細(xì)講解設(shè)計(jì)驗(yàn)證、形式驗(yàn)證、CDC檢查、RDC檢查、ECO流程等;第三部分涉及物理設(shè)計(jì)和芯片調(diào)試,包括STA、SDC、時(shí)序ECO等;同時(shí)在末尾分享行為類問題及實(shí)用面試建議等。
更多科學(xué)出版社服務(wù),請掃碼獲取。
2009年4月獲得西北工業(yè)大學(xué)信號與信息處理專業(yè)碩士學(xué)位西安微電子技術(shù)研究所(中國航天科技集團(tuán)公司第九研究院771所)微電子學(xué)與固體電子學(xué)、計(jì)算機(jī)科學(xué)與技術(shù)曾發(fā)表《一種面向多核DSP芯片的低功耗驗(yàn)證方法》、《一種RS(24,20)碼編譯碼器設(shè)計(jì)》、《超聲調(diào)制聲頻定向傳播性能研究》、《基于層次化事件隊(duì)列的賦值操作應(yīng)用》等多篇文章,擁有《一種用于低功耗設(shè)計(jì)的可重用仿真驗(yàn)證方法》、《一種用于低功耗設(shè)計(jì)的可重用仿真驗(yàn)證方法》等多項(xiàng)專利
目錄
第一部分 架構(gòu)與微架構(gòu)
第1章 架構(gòu)與原型 2
1.1 CPU流水線 2
【問題1】MIPS五級流水線是什么樣的? 2
【問題2】流水線冒險(xiǎn)及解決方案——基于MIPS五級流水線的案例分析 4
【問題3】能否任意增加CPU流水線的深度? 6
【問題4】如何實(shí)現(xiàn)基于硬件的分支預(yù)測? 7
1.2 CPU亂序調(diào)度 9
【問題5】Tomasulo算法如何工作? 9
【問題6】Tomasulo算法中如何處理內(nèi)存引起的數(shù)據(jù)依賴? 11
【問題7】如何通過內(nèi)存處理數(shù)據(jù)依賴? 12
【問題8】如何在Tomasulo算法中實(shí)現(xiàn)基于硬件的推測以最小化控制冒險(xiǎn)? 16
1.3 虛擬內(nèi)存和TLB 19
【問題9】使用虛擬內(nèi)存有哪些好處? 19
【問題10】虛擬地址如何轉(zhuǎn)換? 19
【問題11】為什么需要TLB? 20
【問題12】如何處理TLB 缺失? 21
【問題13】如何處理缺頁異常? 21
1.4 精確中斷的實(shí)現(xiàn) 21
【問題14】什么是精確中斷?什么是非精確中斷? 21
【問題15】如何實(shí)現(xiàn)精確中斷? 22
1.5 緩存 25
【問題16】為什么需要緩存? 25
【問題17】什么是緩存沖突? 27
【問題18】緩存中的讀/寫/替換策略是什么? 27
【問題19】如何衡量緩存性能? 29
【問題20】為什么緩存增大后性能沒有提升? 30
【問題21】用虛擬地址訪問緩存會(huì)有什么問題? 30
【問題22】根據(jù)索引位和標(biāo)簽(tag)位,緩存有哪些類型? 31
1.6 緩存一致性 33
【問題23】什么是NUMA/UMA架構(gòu)? 33
【問題24】什么是緩存一致性? 34
【問題25】如何實(shí)現(xiàn)緩存一致性? 34
【問題26】你能展示基于偵聽的MSI 協(xié)議狀態(tài)轉(zhuǎn)換嗎? 35
【問題27】什么是MESI/MEOSI/MEOFSI協(xié)議? 37
【問題28】如何為MESI協(xié)議實(shí)現(xiàn)主目錄? 38
1.7 通用片上總線協(xié)議 39
【問題29】能描述一下APB協(xié)議的工作原理嗎? 39
【問題30】能描述一下AHB協(xié)議的工作原理嗎? 42
【問題31】能描述一下AXI協(xié)議的工作原理嗎? 44
【問題32】為什么AXI和AHB 協(xié)議提供回環(huán)突發(fā)傳輸? 45
【問題33】AXI協(xié)議中通道之間有哪些依賴關(guān)系? 46
【問題34】如何強(qiáng)制AXI寫通道和讀通道間的順序? 46
【問題35】AXI協(xié)議中的獨(dú)占訪問是什么? 47
第2章 微架構(gòu)設(shè)計(jì) 48
2.1 Verilog語法與原語 48
【問題36】阻塞賦值與非阻塞賦值有什么區(qū)別? 48
【問題37】如何檢測和解決與X相關(guān)的RTL 問題? 48
【問題38】casex、casez和case-inside有什么區(qū)別? 49
【問題39】使用SystemVerilog的signed數(shù)據(jù)類型時(shí)需要注意什么? 50
【問題40】“===”和“==”有什么區(qū)別? 51
【問題41】什么是delta 仿真時(shí)間? 51
【問題42】什么是通用邏輯門? 52
2.2 握手協(xié)議 54
【問題43】什么是valid-ready協(xié)議? 54
【問題44】什么是valid-ready切片? 54
【問題45】如何將4 相req-ack協(xié)議轉(zhuǎn)換為valid-ready協(xié)議? 57
【問題46】如何將valid-ready協(xié)議轉(zhuǎn)換為4相req-ack協(xié)議? 57
2.3 FIFO 58
【問題47】如何設(shè)計(jì)基于觸發(fā)器的非2 次冪深度的同步FIFO? 58
【問題48】如何設(shè)計(jì)一個(gè)支持2 次寫入1 次讀取的基于觸發(fā)器的同步FIFO 58
【問題49】如何基于雙端口SRAM設(shè)計(jì)同步FIFO? 59
【問題50】如何設(shè)計(jì)基于觸發(fā)器的異步FIFO? 62
【問題51】如何設(shè)計(jì)一個(gè)非2 次冪偶數(shù)深度的異步FIFO 62
【問題52】設(shè)計(jì)一個(gè)基于SRAM 的異步FIFO 62
2.4 跨時(shí)鐘域(CDC) 63
【問題53】什么是亞穩(wěn)態(tài)? 63
【問題54】什么是MTBF?為什么同步器能處理CDC 問題? 63
【問題55】傳輸脈沖信號時(shí)有哪些常見的CDC 注意事項(xiàng)? 64
【問題56】傳輸多比特信號時(shí)有哪些常見的CDC 注意事項(xiàng)? 64
2.5 LRU算法 65
【問題57】如何實(shí)現(xiàn)真正的LRU 算法? 65
【問題58】如何實(shí)現(xiàn)偽LRU? 66
2.6 重排序 67
【問題59】支持有序讀響應(yīng)功能的內(nèi)存控制器設(shè)計(jì)(Ⅰ) 67
【問題60】支持有序讀響應(yīng)功能的內(nèi)存控制器設(shè)計(jì)(Ⅱ) 69
2.7 查找表 69
【問題61】使用一維LUT(查找表)實(shí)現(xiàn)y = f(x) 函數(shù) 69
【問題62】使用二維查找表實(shí)現(xiàn)z = f(x, y) 函數(shù) 71
2.8 仲裁器 72
【問題63】設(shè)計(jì)一個(gè)固定優(yōu)先級仲裁器 72
【問題64】設(shè)計(jì)一個(gè)輪詢仲裁器 72
【問題65】設(shè)計(jì)一個(gè)基于優(yōu)先級的仲裁器 73
2.9 數(shù)字分頻器 74
【問題66】實(shí)現(xiàn)任意整數(shù)N 的分頻器(無占空比要求) 74
【問題67】實(shí)現(xiàn)2N 分頻器(50% 占空比) 74
【問題68】實(shí)現(xiàn)2N 分頻器(50% 占空比) 74
【問題69】實(shí)現(xiàn)(2N+1) 分頻器(50% 占空比) 75
2.10 算術(shù)邏輯設(shè)計(jì) 76
【問題70】設(shè)計(jì)一個(gè)簡單的ALU 并繪制其邏輯框圖 76
【問題71】如何實(shí)現(xiàn)w = 3/2x+1/4y+z? 77
【問題72】如何實(shí)現(xiàn)BCD 碼的乘以5 運(yùn)算? 77
【問題73】如何實(shí)現(xiàn)整數(shù)除法器? 78
【問題74】用兩個(gè)16 位加法器構(gòu)建一個(gè)2 周期延遲的32 位加法器 79
【問題75】用兩個(gè)16 位加法器構(gòu)建一個(gè)2 周期延遲的32 位累加器 79
2.11 序列產(chǎn)生器和檢測器80
【問題76】序列產(chǎn)生器 80
【問題77】設(shè)計(jì)一個(gè)電路用于檢測一個(gè)輸入是否為另一個(gè)輸入的延遲版本 80
【問題78】設(shè)計(jì)一個(gè)檢測序列1(01)*1 的電路 81
【問題79】3 位回文序列檢測器 82
【問題80】判斷一個(gè)無限序列是否是5 的倍數(shù) 82
【問題81】設(shè)計(jì)一個(gè)可編程序列檢測器 84
2.12 查找 85
【問題82】在字節(jié)數(shù)組中從LSB 開始查找第一個(gè)1 的索引位置 85
【問題83】在一個(gè)16 位數(shù)組中從最低有效位(LSB)開始查找第一個(gè)1 的索引位置 85
【問題84】在深度為8、寬度為1 位的FIFO 中查找最近一次寫入的1 的索引位置 86
【問題85】在排序數(shù)組中找到最接近給定數(shù)字的索引(Ⅰ) 87
【問題86】在排序數(shù)組中找到最接近給定數(shù)字的索引(Ⅱ) 88
第二部分 驗(yàn)證、實(shí)現(xiàn)、綜合與功耗以及前端設(shè)計(jì)檢查表
第3章 驗(yàn)證 90
3.1 設(shè)計(jì)驗(yàn)證 90
【問題87】什么是約束隨機(jī)回歸測試?為什么約束檢查很重要? 90
【問題88】如何驗(yàn)證輪詢仲裁器的公平性? 90
【問題89】為自動(dòng)售貨機(jī)設(shè)計(jì)編寫測試計(jì)劃 91
【問題90】什么是代碼覆蓋率? 92
【問題91】什么是功能覆蓋率?如何寫功能覆蓋率? 92
3.2 形式驗(yàn)證 94
【問題92】什么是形式驗(yàn)證(FV)?它與動(dòng)態(tài)驗(yàn)證(DV)有何不同? 94
【問題93】FV 的優(yōu)缺點(diǎn)是什么? 95
【問題94】什么是即時(shí)斷言?什么是并發(fā)斷言? 95
【問題95】什么是交疊蘊(yùn)含?什么是非交疊蘊(yùn)含? 96
【問題96】什么是形式化屬性驗(yàn)證(FPV)? 97
【問題97】如果FPV 無法實(shí)現(xiàn)完全驗(yàn)證怎么辦? 98
【問題98】什么是形式化等價(jià)性驗(yàn)證(FEV)? 99
第4章 實(shí)現(xiàn)、綜合與功耗 101
4.1 代碼規(guī)范檢查 101
【問題99】在代碼檢查中,最關(guān)鍵的錯(cuò)誤有哪些? 101
4.2 CDC檢查 101
【問題100】如何在CDC檢查中定義CDC/SGDC約束? 101
4.3 復(fù)位域交叉(RDC)檢查 103
【問題101】同步復(fù)位與異步復(fù)位的區(qū)別何在? 103
【問題102】RDC檢查功能具體有什么作用呢? 104
【問題103】常見的RDC技術(shù)/方案有哪些? 105
4.4 綜 合 106
【問題104】什么是線負(fù)載模型下的綜合?什么是合理性綜合? 106
【問題105】什么是拓?fù)渚C合/生成式綜合? 106
【問題106】運(yùn)行綜合之前的基本設(shè)置有哪些?如何執(zhí)行set_app_var以及創(chuàng)建Milkyway設(shè)計(jì)庫? 107
【問題107】什么是DC的綜合流程?能否編寫一個(gè)簡單的DC綜合腳本? 108
【問題108】進(jìn)行綜合分析前需檢查哪些內(nèi)容? 112
【問題109】DC 綜合優(yōu)化的常用技術(shù)有哪些? 112
4.5 邏輯等價(jià)性檢查(LEC) 114
【問題110】什么是LEC?我們?yōu)槭裁匆M(jìn)行LEC? 114
【問題111】LEC 的流程是怎樣的?又是如何開展關(guān)鍵點(diǎn)映射的? 115
4.6 ECO流程 117
【問題112】什么是 ECO?為什么需要ECO? 117
【問題113】功能ECO的流程是什么? 117
4.7 功 耗 119
【問題114】什么是靜態(tài)功耗、動(dòng)態(tài)功耗以及短路損耗功耗? 119
【問題115】如何降低靜態(tài)功耗、動(dòng)態(tài)功耗以及短路損耗功耗? 120
【問題116】在功耗敏感型設(shè)計(jì)中,為何需要隔離單元? 121
【問題117】隔離單元有多少種類型? 122
【問題118】時(shí)鐘門控單元的結(jié)構(gòu)是怎樣的? 122
【問題119】SRAM 有哪些功耗狀態(tài)? 125
第5章 前端設(shè)計(jì)檢查清單 128
第三部分 物理設(shè)計(jì)和芯片調(diào)試
第6章 物理設(shè)計(jì) 134
6.1 靜態(tài)時(shí)序分析(STA) 134
【問題120】STA與亞穩(wěn)態(tài)有何關(guān)系? 134
【問題121】STA是做什么的?“同步”意味著什么? 134
【問題122】什么是建立時(shí)間和保持時(shí)間? 135
【問題123】什么是建立時(shí)間約束和保持時(shí)間約束? 135
【問題124】采用半周期路徑的益處何在? 137
【問題125】時(shí)鐘設(shè)計(jì)裕量的來源有哪些? 138
【問題126】STA如何檢查復(fù)位移除時(shí)間與恢復(fù)時(shí)間、時(shí)鐘門控單元及
數(shù)據(jù)到數(shù)據(jù)的時(shí)序? 139
【問題127】STA是如何驗(yàn)證異步FIFO 功能的? 141
【問題128】STA如何對基于鎖存器的設(shè)計(jì)進(jìn)行檢查? 141
【問題129】在STA中,多周期路徑(MCP)是如何工作的? 144
6.2 Synopsys 設(shè)計(jì)約束(SDC) 145
【問題130】什么是設(shè)計(jì)對象/庫對象?如何訪問和操作這些對象? 145
【問題131】在CTS后的運(yùn)行階段,如何設(shè)置單時(shí)鐘設(shè)計(jì)約束條件? 147
【問題132】在CTS后的運(yùn)行階段,如何為單時(shí)鐘設(shè)計(jì)設(shè)置I/O 約束? 148
【問題133】如何對多同步時(shí)鐘設(shè)計(jì)約束條件進(jìn)行設(shè)置? 150
【問題134】在CTS后的運(yùn)行階段,如何設(shè)置生成時(shí)鐘的設(shè)計(jì)約束? 152
【問題135】如何設(shè)置互斥同步時(shí)鐘設(shè)計(jì)約束? 153
【問題136】異步時(shí)鐘設(shè)計(jì)約束該如何設(shè)置? 154
【問題137】如何對SDC 進(jìn)行驗(yàn)證? 155
6.3 STA工具/PrimeTime156
【問題138】什么是PrimeTime流程?能編寫一個(gè)簡單的PrimeTimeSTA腳本嗎? 156
【問題139】運(yùn)行PrimeTime之前需要檢查什么? 158
【問題140】何為基于圖的分析(GBA)以及基于路徑的分析(PBA)? 159
【問題141】什么是OCV/AOCV/POCV? 160
【問題142】如何運(yùn)用OCV 方法計(jì)算時(shí)序裕量? 161
【問題143】在PrimeTime時(shí)序報(bào)告中,CRPR是什么? 163
6.4 時(shí)序ECO164
【問題144】時(shí)序ECO的流程是什么? 164
【問題145】如何解決建立時(shí)間和保持時(shí)間違例問題? 165
【問題146】時(shí)序ECO工具是什么? 166
第7章 芯片調(diào)試 168
【問題147】常用的可調(diào)試性設(shè)計(jì)(DFD)技術(shù)有哪些? 168
【問題148】如何實(shí)現(xiàn)校驗(yàn)和? 173
【問題149】如何實(shí)現(xiàn)CRC? 173
【問題150】如何識別32 位寄存器中哪一位存在固定故障? 174
參考文獻(xiàn) 177
附 錄 行為類問題及實(shí)用面試建議 179
【問題151】在簡歷中使用哪些動(dòng)詞可使自身脫穎而出? 179
【問題152】面試禮儀和最佳面試技巧 183
【問題153】在面試尾聲,當(dāng)被問及“你有什么問題想問我嗎”該如何作答? 185
【問題154】“感謝信”中應(yīng)包含哪些內(nèi)容? 186
【問題155】為何要對求職申請進(jìn)行跟進(jìn),以及應(yīng)如何跟進(jìn)? 187