暂无商品咨询信息 [发表商品咨询]
集成电路是信息时代的“工业粮食”,小到手机、家电,大到超级计算机、卫星通信,都依赖于“芯片”。国家“卡脖子”问题,尤其是高端芯片的自给自足问题,已成为国家发展战略的重中之重。SystemVerilog 是 Verilog的扩展,广泛应用于数字集成电路 (IC)和 系统级芯片 (SoC)的?设计?与?验证?领域。其核心优势在于融合了硬件描述与验证功能,支持复杂系统建模和高效测试。SystemVerilog拥有芯片设计及验证工程师所需的全部结构,能够和芯片验证方法学结合在一起,即作为实现方法学的一种语言工具。使用验证方法学可以大大增强模块复用性、提高芯片开发效率,缩短开发周期。
《SystemVerilog入门指南》特点如下:
1.全书共 24 章,内容丰富,全面且详细地覆盖了SystemVerilog语言的方方面面。
2.通过大量浅显易懂的示例透彻讲解了SystemVerilog的基本功能,并对难以理解、容易混淆的功能进行了详细介绍。
3.SystemVerilog是芯片设计和验证的关键语言,通过本书可以快速了解SystemVerilog的全貌,为实际应用开发打下坚实基础。
《SystemVerilog入门指南》是一本全面介绍SystemVerilog基础知识,并使每位读者都可以毫无误解地理解SystemVerilog的入门读物。本书通过大量浅显易懂的示例,透彻讲解了SystemVerilog的基本功能,并对难以理解、容易混淆的功能进行了详细介绍,为读者进行SystemVerilog实践提供全面的知识准备。
《SystemVerilog入门指南》由24章构成,全面、详细介绍了SystemVerilog语言。在概述SystemVerilog的概况和发展历史的基础上,分别介绍了用于设计和验证的构建块,数据类型,类,进程,赋值语句,运算符和表达式,执行语句,任务和函数,时钟块,进程同步和通信,检查器,程序,接口,包,模块,系统任务和系统函数,基于约束的随机激励生成,SystemVerilog的验证功能,硬件建模和验证,UVM,编译器预处理指令,仿真执行模型。
《SystemVerilog入门指南》可作为广大从事硬件设计、验证的技术人员,特别是正在入门的初学人员的学习教材和技术参考书,也可作为高校集成电路、电子技术、计算机等专业的课程教材。
目 录
译者序
原书前言
本书使用的缩略语一览表
第1章 概述1
1.1 SystemVerilog的历史1
1.2 SystemVerilog概述2
1.2.1 作为语言的SystemVerilog 2
1.2.2 作为设计语言的SystemVerilog 3
1.2.3 作为验证语言的SystemVerilog 3
1.3 本书的语法描述4
1.4 SystemVerilog的语法规则5
1.5 编译和细化6
1.6 声明和定义6
1.7 本书的对象和目的7
1.8 本书的结构8
1.9 关于示例9
1.10 本书的标记法9
第2章 用于设计和验证的构建块12
2.1 设计要素12
2.2 模块12
2.3 程序14
2.4 接口15
2.5 检查器16
2.6 包17
2.7 门级和开关级建模18
2.8 基本元件19
2.9 配置20
2.10 编译单元20
2.11 `timescale编译器指令21
2.12 垃圾回收22
2.12.1 automatic变量23
2.12.2 static变量23
第3章 数据类型24
3.1 数据类型和数据对象24
3.2 logic类型25
3.3 线网(net)类型26
3.4 变量28
3.5 线网和变量30
3.6 4-state 类型31
3.7 2-state类型32
3.8 integral类型33
3.9 real、shortreal和realtime类型34
3.10 void 类型34
3.11 chandle 类型35
3.12 string类型35
3.13 event类型37
3.14 typedef语句39
3.15 enum类型40
3.16 常量43
3.17 const常量47
3.18 cast操作符47
3.19 $cast动态类型转换48
3.20 便利的初始值设置49
3.20.1 位值扩展49
3.20.2 通过位号的设定51
3.21 引用指针51
第4章 由多个元素组成的数据类型53
4.1 结构体53
4.1.1 紧凑结构体55
4.1.2 结构体的赋值56
4.2 共用体57
4.2.1 紧凑共用体58
4.2.2 标记共用体59
4.3 紧凑数组和非紧凑数组60
4.3.1 紧凑数组61
4.3.2 非紧凑数组61
4.3.3 数组的引用62
4.3.4 紧凑数组的引用64
4.4 动态数组64
4.4.1 适用于动态数组的方法65
4.4.2 数组的复制67
4.5 关联数组69
4.5.1 关联数组概述69
4.5.2 关联数组数据元素的添加及更新70
4.5.3 适用于关联数组的方法71
4.5.4 关联数组实量71
4.6 队列73
4.6.1 队列概述73
4.6.2 队列的操作74
4.6.3 适用于队列的方法75
4.7 数组信息获取函数76
4.8 数组操作方法77
4.8.1 数组搜索方法77
4.8.2 数组数据元素的排序方法79
4.8.3 数组计算方法81
4.9 数组扫描方法82
第5章 类84
5.1 类的概述84
5.2 类的语法85
5.3 类对象(类实例)88
5.4 类属性和方法的访问88
5.5 构造函数89
5.6 指定类型的构造函数调用90
5.7 static类属性90
5.8 static类方法92
5.9 this句柄93
5.10 句柄数组93
5.11 类的复制95
5.12 类继承和子类97
5.13 $cast101
5.14 const类属性102
5.15 virtual方法103
5.16 抽象类和pure virtual方法105
5.17 类作用域运算符107
5.18 类成员的访问控制109
5.19 如何在类外编写方法110
5.20 通过参数进行的通用类定义111
5.20.1 概述111
5.20.2 通过参数进行的通用类实现111
5.20.3 使用参数实现通用类的步骤113
5.21 类的前向声明115
5.22 将类应用于测试平台115
5.23 接口类117
5.23.1 概述117
5.23.2 功能118
第6章 进程121
6.1 仿真过程121
6.1.1 initial过程122
6.1.2 always过程123
6.1.3 final过程128
6.2 语句块129
6.2.1 begin-end语句块129
6.2.2 fork-join语句块129
6.2.3 语句块命名134
6.2.4 fork语句块的有效利用135
6.3 基于定时的执行控制136
6.3.1 基于定时的执行控制概述136
6.3.2 延时控制137
6.3.3 边缘敏感事件控制137
6.3.4 赋值定时控制139
6.3.5 事件等待控制141
6.3.6 事件控制和解除141
6.4 进程控制143
6.4.1 wait语句143
6.4.2 wait fork语句143
6.4.3 disable fork语句144
6.4.4 wait_order语句145
6.5 进程和RNG147
6.6 特定的用户进程控制148
第7章 赋值语句152
7.1 连续赋值语句153
7.2 行为赋值语句154
7.2.1 阻塞赋值语句155
7.2.2 非阻塞赋值语句156
7.3 模式赋值158
第8章 运算符和表达式160
8.1 运算符160
8.1.1 赋值运算符162
8.1.2 自增和自减运算符162
8.1.3 算术运算符163
8.1.4 比较运算符164
8.1.5 通配符比较运算符166
8.1.6 逻辑运算符167
8.1.7 位运算符168
8.1.8 单变量逻辑运算符168
8.1.9 移位运算符169
8.1.10 条件运算符170
8.1.11 拼接运算符171
8.1.12 inside运算符172
8.1.13 比特流运算符173
8.2 操作数177
8.2.1 部分选择177
8.2.2 非紧凑数组178
8.3 带标记成员的操作178
第9章 执行语句180
9.1 if语句180
9.1.1 所有条件的列举180
9.1.2 unique-if语句和unique0-if语句181
9.1.3 priority-if语句182
9.2 case语句182
9.2.1 unique-case语句和unique0-case语句184
9.2.2 priority-case语句185
9.2.3 casez和casex185
9.3 inside运算符与if语句及case语句186
9.3.1 if语句和inside运算符186
9.3.2 case语句和inside运算符187
9.4 循环语句188
9.4.1 for语句189
9.4.2 repeat语句190
9.4.3 foreach语句191
9.4.4 while语句194
9.4.5 do-while语句194
9.4.6 forever语句195
9.5 return语句195
9.6 break语句196
9.7 continue语句197
第10章 任务和函数199
10.1 任务199
10.1.1 端口信号列表199
10.1.2 任务内的描述200
10.2 函数200
10.2.1 函数的限制201
10.2.2 端口信号列表201
10.2.3 函数内的描述202
10.3 参数默认值的设置方法202
10.4 具有返回值函数的调用204
10.5 递归调用204
10.6 类方法和递归调用205
10.7 方法内的变量初始化206
10.8 作为参数的数组208
10.9 导入和导出209
第11章 时钟块212
11.1 最简单的时钟块212
11.2 时钟块的偏移213
11.3 时钟事件和Observed区域215
11.4 周期延时217
第12章 进程同步和通信220
12.1 旗语220
12.2 信箱223
12.3 参数化信箱227
12.4 命名事件227
12.4.1 概述227
12.4.2 triggered方法230
12.4.3 作为参数的事件对象232
12.4.4 事件资源的释放233
12.4.5 比较事件233
12.4.6 事件的别名233
第13章 检查器235
13.1 概述235
13.2 检查器的实例化236
13.3 检查器中的随机变量238
13.4 DUT输出采样239
第14章 程序242
14.1 语法242
14.2 程序的特点243
14.3 程序控制245
14.4 仿真结束246
第15章 接口248
15.1 语法248
15.2 接口功能概述249
15.3 基于通用接口的连接251
15.4 modport251
15.5 参数化接口252
15.6 虚接口253
第16章 包258
16.1 语法258
16.2 包的定义259
16.3 包的使用260
16.4 std包263
第17章 模块267
17.1 概述267
17.2 模块的定义268
17.3 端口信号列表271
17.3.1 Verilog风格和SystemVerilog风格271
17.3.2 关于端口信号方向的规则272
17.4 参数化模块273
17.5 top模块275
17.6 模块实例275
17.7 使用接口的模块描述275
17.8 未定义模块的声明277
17.9 层次结构名称279
第18章 系统任务和系统函数281
18.1 $display和$write任务281
18.2 $sformat任务和$sformatf函数283
18.3 $monitor284
18.4 仿真时间获取函数285
18.5 $printtimescale286
18.6 数值转换287
18.7 信息获取函数287
18.8 vector系统函数290
18.9 用于序列采样值获取的系统函数291
18.10 错误处理系统任务293
18.11 随机化系统函数294
18.12 仿真控制295
18.13 其他系统任务和函数295
18.14 命令行参数296
18.15 VCD文件298
18.15.1 VCD文件的指定298
18.15.2 VCD文件的记录298
18.15.3 VCD文件记录的暂停和恢复299
18.15.4 VCD文件创建示例299
第19章 基于约束的随机激励生成302
19.1 概述302
19.2 随机变量304
19.2.1 随机变量概述304
19.2.2 关键字rand305
19.2.3 关键字randc305
19.2.4 随机变量定义示例305
19.3 随机数生成函数306
19.4 约束条件308
19.4.1 关键字inside308
19.4.2 关键字dist311
19.4.3 关键字unique313
19.4.4 关键字implication314
19.4.5 运用foreach语句进行的约束315
19.4.6 随机变量生成顺序的约束317
19.5 测试过程中的约束定义318
19.6 随机变量的启用和禁用319
19.7 约束的启用和禁用321
19.8 使用randomize()方法进行的随机变量控制322
19.9 否定形式的约束条件描述324
19.10 结构体的随机化325
19.11 队列的随机化327
19.12 以约束对数据进行的检查328
19.13 测试用例约束的单独指定330
19.14 在类外部进行的约束定义332
19.15 std::randomize()函数333
19.16 系统函数334
第20章 SystemVerilog的验证功能336
20.1 功能覆盖率336
20.1.1 概述336
20.1.2 功能覆盖率计算337
20.1.3 功能覆盖率计算示例338
20.2 断言343
20.2.1 概述343
20.2.2 断言的类型344
20.2.3 断言表达式345
20.2.4 断言描述示例346
第21章 硬件建模和验证350
21.1 组合逻辑电路351
21.1.1 组合逻辑电路的描述规则351
21.1.2 验证组合逻辑电路的时机352
21.1.3 译码器353
21.1.4 编码器355
21.1.5 ALU357
21.1.6 比较器359
21.1.7 将格雷码转换为二进制码的电路360
21.1.8 筒式移位器(循环移位器)362
21.1.9 带符号整数的加减运算器364
21.2 时序逻辑电路366
21.2.1 时序逻辑电路描述规则367
21.2.2 时序逻辑电路的验证367
21.2.3 二进制计数器369
21.2.4 JK触发器370
21.2.5 Johnson计数器372
21.2.6 通用移位寄存器374
21.2.7 格雷计数器377
21.2.8 环形计数器379
21.2.9 门控时钟的描述示例380
21.3 FSM383
21.3.1 概述383
21.3.2 Moore型FSM电路的建模384
21.3.3 Mealy型FSM电路的建模387
21.4 采用FSM电路的比特序列模式识别390
21.4.1 比特序列模式识别问题390
21.4.2 Moore型FSM电路的建模391
21.4.3 Mealy型FSM电路的建模393
第22章 UVM概述395
22.1 什么是UVM395
22.2 验证技术的发展趋势与UVM395
22.3 UVM的验证要素397
22.3.1 与事务和方案描述相关的UVM类397
22.3.2 方法类397
22.4 TLM398
22.5 UVM仿真399
22.5.1 仿真阶段399
22.5.2 run_test()方法400
22.6 UVM验证组件的开发400
22.7 top模块401
第23章 编译器预处理指令403
23.1 `include语句403
23.2 `define语句404
23.2.1 常量的定义404
23.2.2 具有前缀和后缀的名称创建405
23.3 字符串中的参数展开406
23.4 `endif语句407
23.5 `_ _FILE_ _与`_ _LINE_ _的使用示例407
第24章 仿真执行模型409
24.1 调度区域409
24.2 #0延时效应411
参考文献413
基本信息 | |
---|---|
出版社 | 机械工业出版社 |
ISBN | 9787111787686 |
条码 | 9787111787686 |
编者 | 篠塚一也 著 |
译者 | |
出版年月 | 2025-08-01 00:00:00.0 |
开本 | 16开 |
装帧 | 平装 |
页数 | 414 |
字数 | 652 |
版次 | 1 |
印次 | 1 |
纸张 | 一般胶版纸 |
暂无商品评论信息 [发表商品评论]
暂无商品咨询信息 [发表商品咨询]