目錄
第1章 驗(yàn)證導(dǎo)論 1
1.1 驗(yàn)證流程 2
1.2 驗(yàn)證方法學(xué) 3
1.3 基本測試平臺(tái)的功能 4
1.4 定向測試 4
1.5 方法學(xué)基礎(chǔ) 5
1.6 受約束的隨機(jī)激勵(lì) 7
1.7 隨機(jī)化的對象是什么? 8
1.8 功能覆蓋率 10
1.9 測試平臺(tái)的構(gòu)件 11
1.10 分層的測試平臺(tái) 12
1.11 建立一個(gè)分層的測試平臺(tái) 17
1.12 仿真環(huán)境的階段 17
1.13 最大限度的代碼重用 18
1.14 測試平臺(tái)的性能 19
1.15 小結(jié) 19
1.16 練習(xí) 19
第2章 數(shù)據(jù)類型 21
2.1 內(nèi)建數(shù)據(jù)類型 21
2.2 定寬數(shù)組 23
2.3 動(dòng)態(tài)數(shù)組 30
2.4 隊(duì)列 32
2.5 關(guān)聯(lián)數(shù)組 33
2.6 數(shù)組的方法 36
2.7 選擇存儲(chǔ)類型 41
2.8 使用typedef創(chuàng)建新的類型 43
2.9 創(chuàng)建用戶自定義結(jié)構(gòu) 44
2.10 包 47
2.11 類型轉(zhuǎn)換 48
2.12 流操作符 49
2.13 枚舉類型 51
2.14 常量 54
2.15 字符串 54
2.16 表達(dá)式的位寬 55
2.17 小結(jié) 56
2.18 練習(xí) 56
第3章 過程語句和子程序 61
3.1 過程語句 61
3.2 任務(wù)、函數(shù)以及void函數(shù) 62
3.3 任務(wù)和函數(shù)概述 63
3.4 子程序參數(shù) 63
3.5 子程序的返回 68
3.6 局部數(shù)據(jù)存儲(chǔ) 70
3.7 時(shí)間值 72
3.8 小結(jié) 74
3.9 練習(xí) 74
第4章 連接設(shè)計(jì)和測試平臺(tái) 77
4.1 將測試平臺(tái)和設(shè)計(jì)分開 77
4.2 接口 80
4.3 激勵(lì)時(shí)序 86
4.4 接口的驅(qū)動(dòng)和采樣 92
4.5 程序塊需要考慮的因素 97
4.6 將模塊連接起來 99
4.7 頂層作用域 100
4.8 程序和模塊的交互 102
4.9 SystemVerilog斷言 102
4.10 四端口的ATM路由器 105
4.11 Ref端口的方向 112
4.12 小結(jié) 113
4.13 練習(xí) 113
第5章 面向?qū)ο缶幊蹋∣OP)基礎(chǔ) 115
5.1 簡介 115
5.2 考慮名詞,而非動(dòng)詞 115
5.3 編寫第一個(gè)類(Class) 116
5.4 在哪里定義類 117
5.5 OOP術(shù)語 117
5.6 創(chuàng)建新對象 118
5.7 對象的解除分配(deallocation) 122
5.8 使用對象 123
5.9 類的方法 124
5.10 在類之外定義方法 124
5.11 靜態(tài)變量和全局變量 126
5.12 作用域規(guī)則 129
5.13 在一個(gè)類內(nèi)使用另一個(gè)類 131
5.14 理解動(dòng)態(tài)對象 134
5.15 對象的復(fù)制 137
5.16 公有和私有 143
5.17 題外話 143
5.18 建立一個(gè)測試平臺(tái) 144
5.19 小結(jié) 145
5.20 練習(xí) 145
第6章 隨機(jī)化 149
6.1 介紹 149
6.2 什么需要隨機(jī)化? 149
6.3 SystemVerilog中的隨機(jī)化 152
6.4 約束 154
6.5 解的概率 164
6.6 控制多個(gè)約束塊 168
6.7 有效性約束 169
6.8 內(nèi)嵌約束 169
6.9 pre_randomize和post_randomize函數(shù) 170
6.10 隨機(jī)數(shù)函數(shù) 172
6.11 約束的技巧和技術(shù) 172
6.12 隨機(jī)化的常見錯(cuò)誤 177
6.13 迭代和數(shù)組約束 178
6.14 產(chǎn)生原子激勵(lì)和場景 187
6.15 隨機(jī)控制 189
6.16 隨機(jī)數(shù)發(fā)生器 191
6.17 隨機(jī)器件配置 194
6.18 小結(jié) 197
6.19 練習(xí) 197
第7章 線程以及線程間的通信 201
7.1 線程的使用 201
7.2 停止線程 211
7.3 線程間的通信 214
7.4 事件 215
7.5 旗語 220
7.6 信箱 222
7.7 構(gòu)筑帶線程并可實(shí)現(xiàn)線程間通信的測試程序 234
7.8 小結(jié) 237
7.9 練習(xí) 238
第8章 面向?qū)ο缶幊痰母呒?jí)技巧指南 241
8.1 繼承簡介 241
8.2 藍(lán)圖(Blueprint)模式 247
8.3 類型向下轉(zhuǎn)換(Downcasting)和虛擬方法 251
8.4 合成、繼承和其他替代的方法 255
8.5 對象的復(fù)制 258
8.6 抽象類和純虛擬方法 260
8.7 回調(diào) 262
8.8 參數(shù)化的類 267
8.9 靜態(tài)和單例類 271
8.10 創(chuàng)建測試注冊表 276
8.11 小結(jié) 283
8.12 練習(xí) 284
第9章 功能覆蓋率 287
9.1 收集覆蓋率數(shù)據(jù) 288
9.2 覆蓋率的類型 289
9.3 功能覆蓋策略 291
9.4 功能覆蓋率的簡單例子 293
9.5 覆蓋組詳解 296
9.6 覆蓋組的觸發(fā) 297
9.7 數(shù)據(jù)采樣 301
9.8 交叉覆蓋率 309
9.9 通用的覆蓋組 315
9.10 覆蓋選項(xiàng) 316
9.11 覆蓋率數(shù)據(jù)的分析 318
9.12 在仿真過程中進(jìn)行覆蓋率統(tǒng)計(jì) 320
9.13 小結(jié) 320
9.14 練習(xí) 321
第10章 高級(jí)接口 323
10.1 ATM路由器的虛擬接口 323
10.2 連接到多個(gè)不同的設(shè)計(jì)配置 331
10.3 參數(shù)化接口和虛擬接口 337
10.4 接口中的過程代碼 338
10.5 小結(jié) 341
10.6 練習(xí) 341
第11章 完整的SystemVerilog測試平臺(tái) 343
11.1 設(shè)計(jì)單元 343
11.2 測試平臺(tái)的模塊 347
11.3 修改測試 369
11.4 小結(jié) 371
11.5 練習(xí) 371
第12章 SystemVerilog與C/C++語言的交互 373
12.1 傳遞簡單的數(shù)值 373
12.2 連接簡單的C子程序 377
12.3 調(diào)用C++程序 383
12.4 共享簡單數(shù)組 389
12.5 開放數(shù)組(open array) 390
12.6 共享復(fù)合類型 394
12.7 純導(dǎo)入方法和關(guān)聯(lián)導(dǎo)入方法 396
12.8 在C程序中與SystemVerilog通信 397
12.9 與其他語言交互 407
12.10 小結(jié) 409
12.11 練習(xí) 409
參考文獻(xiàn) 411