目錄
第1章 驗證導(dǎo)論 1
1.1 驗證流程 2
1.2 驗證方法學(xué) 3
1.3 基本測試平臺的功能 4
1.4 定向測試 4
1.5 方法學(xué)基礎(chǔ) 5
1.6 受約束的隨機激勵 7
1.7 隨機化的對象是什么? 8
1.8 功能覆蓋率 10
1.9 測試平臺的構(gòu)件 11
1.10 分層的測試平臺 12
1.11 建立一個分層的測試平臺 17
1.12 仿真環(huán)境的階段 17
1.13 最大限度的代碼重用 18
1.14 測試平臺的性能 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 動態(tài)數(shù)組 30
2.4 隊列 32
2.5 關(guān)聯(lián)數(shù)組 33
2.6 數(shù)組的方法 36
2.7 選擇存儲類型 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 表達式的位寬 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ù)存儲 70
3.7 時間值 72
3.8 小結(jié) 74
3.9 練習(xí) 74
第4章 連接設(shè)計和測試平臺 77
4.1 將測試平臺和設(shè)計分開 77
4.2 接口 80
4.3 激勵時序 86
4.4 接口的驅(qū)動和采樣 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 考慮名詞,而非動詞 115
5.3 編寫第一個類(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 在一個類內(nèi)使用另一個類 131
5.14 理解動態(tài)對象 134
5.15 對象的復(fù)制 137
5.16 公有和私有 143
5.17 題外話 143
5.18 建立一個測試平臺 144
5.19 小結(jié) 145
5.20 練習(xí) 145
第6章 隨機化 149
6.1 介紹 149
6.2 什么需要隨機化? 149
6.3 SystemVerilog中的隨機化 152
6.4 約束 154
6.5 解的概率 164
6.6 控制多個約束塊 168
6.7 有效性約束 169
6.8 內(nèi)嵌約束 169
6.9 pre_randomize和post_randomize函數(shù) 170
6.10 隨機數(shù)函數(shù) 172
6.11 約束的技巧和技術(shù) 172
6.12 隨機化的常見錯誤 177
6.13 迭代和數(shù)組約束 178
6.14 產(chǎn)生原子激勵和場景 187
6.15 隨機控制 189
6.16 隨機數(shù)發(fā)生器 191
6.17 隨機器件配置 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)筑帶線程并可實現(xiàn)線程間通信的測試程序 234
7.8 小結(jié) 237
7.9 練習(xí) 238
第8章 面向?qū)ο缶幊痰母呒壖记芍改稀?41
8.1 繼承簡介 241
8.2 藍圖(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 覆蓋選項 316
9.11 覆蓋率數(shù)據(jù)的分析 318
9.12 在仿真過程中進行覆蓋率統(tǒng)計 320
9.13 小結(jié) 320
9.14 練習(xí) 321
第10章 高級接口 323
10.1 ATM路由器的虛擬接口 323
10.2 連接到多個不同的設(shè)計配置 331
10.3 參數(shù)化接口和虛擬接口 337
10.4 接口中的過程代碼 338
10.5 小結(jié) 341
10.6 練習(xí) 341
第11章 完整的SystemVerilog測試平臺 343
11.1 設(shè)計單元 343
11.2 測試平臺的模塊 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
參考文獻 411