SystemVerilog与功能验证.pdf-FPGA CPLD资料源码分享社区-FPGA CPLD-ChipDebug

SystemVerilog与功能验证.pdf

该帖子部分内容已隐藏
付费阅读
3积分
此内容为付费阅读,请付费后查看

本书的结构和内容
本书分为 11章,系统论述了基于 SystemVerilog的功能验证方法,重点关注以下三个方
面的内容。
功能验证在整个 FPGA/ASIC设计流程中的作用及主要的验证技术和方法学。
SystemVerilog的语法结构和在功能验证上的应用及基本原理。
如何采用 SystemVerilog搭建验证平台。
第 1章从 FPGA/ASIC整个设计流程的角度介绍功能验证的地位和作用、验证的基本流
程、验证的主要技术和方法学,最后引入硬件验证语言 SystemVerilog。
第 2章介绍 SystemVerilog相对于 Verilog增加的数据类型、SystemVerilog的编程结构、流
程控制和方法 (任务 /函数)等基本语法。
第 3章介绍 fork…join结构、并行进程之间的通信方法:mailbox/semaphore/event同步和
互斥机制。
第 4章介绍面向对象编程语言、类的基本概念、对象的创建、赋值与复制;如何采用
类来封装事务处理器等验证组件和搭建验证平台。
第 5章介绍虚接口,以及如何通过虚接口实现类的对象和设计模块的连接,实现事务
处理器的可重用。
第 6章介绍随机激励生成,其中重点讨论基于对象的约束随机激励产生机制、约束定
义以及动态控制激励随机生成。
第 7章介绍面向对象编程语言中的继承和多态。
第 8章介绍覆盖率在验证流程中的作用、SystemVerilog功能覆盖率的语法,包括覆盖
组、覆盖点和交叉覆盖点,以及如何实现一个覆盖率驱动验证平台。
第 9章介绍断言在验证流程中的作用、断言的采用策略、SystemVerilog断言子集的语法
结构以及如何通过 bind结构实现断言与设计分离。
第 10章介绍验证重用以及 OVM验证方法学的核心技术:基于 Factory的对象生成机制、
动态参数配置、激励生成与验证架构分离以及测试用例在验证架构的顶层。
第 11章介绍 SystemVerilog和 C语言的接口:DPI,重点介绍如何在 SystemVerilog层面定
义输入方法接口 (SystemVerilog调用外部 C程序)和输出方法接口 (SystemVerilog程序输出
供外部 C调用),最后介绍 DPI在验证中的作用。

前言
第 1章 功能验证技术与方法学概要 !!!!!!!!!!!!!!!!!!!! 1
11 功能验证与验证平台 !!!!!!!!!!!!!!!!!!!!!!!!! 1
111 专用芯片设计流程 !!!!!!!!!!!!!!!!!!!!!!!! 1
112 什么是验证!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2
113 验证平台可以做些什么 !!!!!!!!!!!!!!!!!!!!!! 3
114 功能验证流程!!!!!!!!!!!!!!!!!!!!!!!!!!! 5
12 验证技术和验证方法学 !!!!!!!!!!!!!!!!!!!!!!!! 8
121 黑盒、白盒与灰盒验证 !!!!!!!!!!!!!!!!!!!!!! 8
122 验证技术!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 9
123 验证存在的挑战 !!!!!!!!!!!!!!!!!!!!!!!!! 13
124 验证方法学 !!!!!!!!!!!!!!!!!!!!!!!!!!! 13
125 断言验证 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 15
126 覆盖率驱动验证 !!!!!!!!!!!!!!!!!!!!!!!!! 16
13 硬件验证语言 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 21
131 OpenVera!!!!!!!!!!!!!!!!!!!!!!!!!!!! 21
132 e语言 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 21
133 PSL !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 22
134 SystemC!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 22
135 SystemVerilog !!!!!!!!!!!!!!!!!!!!!!!!!! 22
第 2章 数据类型与编程结构 !!!!!!!!!!!!!!!!!!!!!!! 24
21 数据类型 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 24
211 两态数据类型 !!!!!!!!!!!!!!!!!!!!!!!!!! 25
212 枚举类型和用户自定义类型 !!!!!!!!!!!!!!!!!!!! 26
213 数组与队列 !!!!!!!!!!!!!!!!!!!!!!!!!!! 28
214 字符串 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 36
215 结构体和联合体 !!!!!!!!!!!!!!!!!!!!!!!!! 37
216 常量 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 39
217 文本表示 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 41
218 操作符和表达式 !!!!!!!!!!!!!!!!!!!!!!!!! 43
22 过程语句 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 45
221 赋值语句 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 45
222 控制结构 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 46
23 函数和任务 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 52
231 函数和任务的区别 !!!!!!!!!!!!!!!!!!!!!!!! 52
232 子程序定义 !!!!!!!!!!!!!!!!!!!!!!!!!!! 53
233 子程序参数 !!!!!!!!!!!!!!!!!!!!!!!!!!! 53
234 子程序返回 !!!!!!!!!!!!!!!!!!!!!!!!!!! 56
235 自动存储 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 56
24 编程结构 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 57
241 模块 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 57
242 接口 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 59
243 过程块和语句块 !!!!!!!!!!!!!!!!!!!!!!!!! 60
244 数据对象 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 62
245 程序块 !!!!!!!!!!!!!!!!!!!!!!!!!!!!! 62
246 简单的验证架构 !!!!!!!!!!!!!!!!!!!!!!!!! 63
25 数据的生命周期和作用域 !!!!!!!!!!!!!!!!!!!!!!! 64
26 数据类型转换 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 65
261 静态类型转换 !!!!!!!!!!!!!!!!!!!!!!!!!! 66
262 动态类型转换 !!!!!!!!!!!!!!!!!!!!!!!!!! 66
第 3章 并发进程与进程同步 !!!!!!!!!!!!!!!!!!!!!!! 68
31 fork…join !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 68
311 三种并发方式 !!!!!!!!!!!!!!!!!!!!!!!!!! 69
312 进程与变量 !!!!!!!!!!!!!!!!!!!!!!!!!!! 72
313 进程控制 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 73
32 mailbox!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 74
321 mailbox的基本操作 !!!!!!!!!!!!!!!!!!!!!!!! 75
322 参数化 mailbox!!!!!!!!!!!!!!!!!!!!!!!!!! 77
323 mailbox应用实例 !!!!!!!!!!!!!!!!!!!!!!!!! 77
33 semaphore!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 78
331 semaphore的基本操作 !!!!!!!!!!!!!!!!!!!!!!! 79
332 semaphore应用实例 !!!!!!!!!!!!!!!!!!!!!!!! 80

34 event!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 81
341 事件触发 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 81
342 等待事件 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 81
343 事件的触发属性 !!!!!!!!!!!!!!!!!!!!!!!!! 81
第 4章 面向对象编程入门 !!!!!!!!!!!!!!!!!!!!!!!! 83
41 过程编程语言与面向对象编程语言 !!!!!!!!!!!!!!!!!!! 83
42 类 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 84
421 类的基本概念 !!!!!!!!!!!!!!!!!!!!!!!!!! 85
422 构造函数 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 87
423 静态属性与方法 !!!!!!!!!!!!!!!!!!!!!!!!! 89
424 this操作符 !!!!!!!!!!!!!!!!!!!!!!!!!!! 91
425 对象的赋值与复制 !!!!!!!!!!!!!!!!!!!!!!!! 91
426 块外声明 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 94
43 石头、剪刀、布仲裁器实例 (基于类的验证平台) !!!!!!!!!!! 95
431 验证环境顶层 !!!!!!!!!!!!!!!!!!!!!!!!!! 96
432 验证组件 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 99
第 5章 虚接口 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 107
51 虚接口的基本概念及应用 !!!!!!!!!!!!!!!!!!!!!! 107
511 虚接口的基本概念 !!!!!!!!!!!!!!!!!!!!!!! 107
512 虚接口的应用 !!!!!!!!!!!!!!!!!!!!!!!!! 109
52 端口模式和时钟控制块 !!!!!!!!!!!!!!!!!!!!!!! 113
521 端口模式!!!!!!!!!!!!!!!!!!!!!!!!!!!! 113
522 时钟控制块!!!!!!!!!!!!!!!!!!!!!!!!!!! 114
第 6章 随机测试 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 118
61 激励产生 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 118
611 什么是随机!!!!!!!!!!!!!!!!!!!!!!!!!!! 119
612 潜在问题!!!!!!!!!!!!!!!!!!!!!!!!!!!! 119
62 随机生成机制!!!!!!!!!!!!!!!!!!!!!!!!!!!! 120
621 随机系统函数 !!!!!!!!!!!!!!!!!!!!!!!!! 120
622 randcase/randsequence !!!!!!!!!!!!!!!!!!!!!! 121
63 基于对象的随机生成 !!!!!!!!!!!!!!!!!!!!!!!! 122
631 随机变量!!!!!!!!!!!!!!!!!!!!!!!!!!!! 123
632 约束定义!!!!!!!!!!!!!!!!!!!!!!!!!!!! 124

633 随机方法!!!!!!!!!!!!!!!!!!!!!!!!!!!! 130
634 随机使能控制 !!!!!!!!!!!!!!!!!!!!!!!!! 131
635 约束的动态修改 !!!!!!!!!!!!!!!!!!!!!!!! 134
64 标准随机函数!!!!!!!!!!!!!!!!!!!!!!!!!!!! 134
65 随机激励的应用!!!!!!!!!!!!!!!!!!!!!!!!!!! 135
第 7章 继承与多态 !!!!!!!!!!!!!!!!!!!!!!!!!!! 137
71 继承和多态的基本概念 !!!!!!!!!!!!!!!!!!!!!!! 137
72 继承与子类!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 137
721 类的继承与重写 !!!!!!!!!!!!!!!!!!!!!!!! 138
722 子类对象与父类对象的赋值 !!!!!!!!!!!!!!!!!!! 141
723 构造函数调用 !!!!!!!!!!!!!!!!!!!!!!!!! 142
73 虚方法与多态!!!!!!!!!!!!!!!!!!!!!!!!!!!! 144
731 虚方法!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 145
732 多态 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 148
74 虚类和参数化类!!!!!!!!!!!!!!!!!!!!!!!!!!! 148
741 虚类 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 148
742 参数化类!!!!!!!!!!!!!!!!!!!!!!!!!!!! 149
75 约束重写 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 150
76 数据的隐藏与封装 !!!!!!!!!!!!!!!!!!!!!!!!! 151
第 8章 功能覆盖率 !!!!!!!!!!!!!!!!!!!!!!!!!!! 153
81 覆盖率 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 153
811 目标覆盖率!!!!!!!!!!!!!!!!!!!!!!!!!!! 153
812 代码覆盖率!!!!!!!!!!!!!!!!!!!!!!!!!!! 154
813 功能覆盖率!!!!!!!!!!!!!!!!!!!!!!!!!!! 154
82 SystemVerilog的功能覆盖率 !!!!!!!!!!!!!!!!!!!!!! 155
821 覆盖组 (covergroup) !!!!!!!!!!!!!!!!!!!!!! 155
822 覆盖点 (coverpoint) !!!!!!!!!!!!!!!!!!!!!! 157
823 交叉覆盖点 (cross) !!!!!!!!!!!!!!!!!!!!!! 159
83 覆盖率驱动的验证平台 !!!!!!!!!!!!!!!!!!!!!!! 162
第 9章 断言 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 167
91 断言的概念及作用 !!!!!!!!!!!!!!!!!!!!!!!!! 167

92 SVA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 169
921 SVA的语法层次结构 !!!!!!!!!!!!!!!!!!!!!! 170
922 SVA应用实例 !!!!!!!!!!!!!!!!!!!!!!!!! 173
923 bind!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 175
第 10章 验证重用与验证方法学 !!!!!!!!!!!!!!!!!!!! 178
101 验证重用中存在的问题 !!!!!!!!!!!!!!!!!!!!!!! 178
102 验证方法学 OVM !!!!!!!!!!!!!!!!!!!!!!!!! 179
103 OVM的四大核心技术 !!!!!!!!!!!!!!!!!!!!!!!! 180
1031 基于 Factory的验证平台动态构建 !!!!!!!!!!!!!!!! 181
1032 动态的配置机制 !!!!!!!!!!!!!!!!!!!!!!!! 183
1033 测试用例在验证架构的顶层 !!!!!!!!!!!!!!!!!!! 184
1034 激励产生与验证架构分离 !!!!!!!!!!!!!!!!!!!! 185
第 11章 SystemVerilog与 C语言的接口 !!!!!!!!!!!!!!!! 187
111 什么是 DPI !!!!!!!!!!!!!!!!!!!!!!!!!!!! 187
112 DPI的应用 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 188
1121 方法的导入 !!!!!!!!!!!!!!!!!!!!!!!!!! 188
1122 方法的导出 !!!!!!!!!!!!!!!!!!!!!!!!!! 190
1123 DPI的数据类型映射 !!!!!!!!!!!!!!!!!!!!!! 191
1124 DPI的具体应用 !!!!!!!!!!!!!!!!!!!!!!!! 192
附录 A 覆盖率内置参数和方法列表 !!!!!!!!!!!!!!!!!!! 193
附录 B 断言重复操作符和序列操作符列表 !!!!!!!!!!!!!!! 195
附录 C QuestaSim简要介绍 !!!!!!!!!!!!!!!!!!!!!! 198
附录 D 常用术语中英文对照 !!!!!!!!!!!!!!!!!!!!!! 205
参考文献 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 207
后记 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 208

请登录后发表评论

    没有回复内容