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