当前位置:首页 > 工业技术
芯片验证漫游指南  从系统理论到UVM的验证全视界
芯片验证漫游指南  从系统理论到UVM的验证全视界

芯片验证漫游指南 从系统理论到UVM的验证全视界PDF电子书下载

工业技术

  • 电子书积分:16 积分如何计算积分?
  • 作 者:刘斌著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121339011
  • 页数:538 页
图书介绍:资深验证专家刘斌(路桑)向您全面介绍芯片验证,从验证的理论,到SystemVerilog语言和UVM验证方法学,再到高级验证项目话题。这本综合性、实用性的验证理论和编程方面的图书,针对芯片验证领域不同级别的验证工程师,给出由浅入深的技术指南:学习验证理论来认识验证流程和标准,学习SystemVerilog语言和UVM方法学来掌握目前主流的动态验证技术,了解高级验证话题在今后遇到相关问题时可以参考。
上一篇:欧洲城市设计下一篇:住宅庭院设计
《芯片验证漫游指南 从系统理论到UVM的验证全视界》目录

第1章 芯片验证全视 1

1.1 功能验证简介 1

1.2 验证的处境 4

1.2.1 验证语言的发展 4

1.2.2 验证面临的挑战 5

1.3 验证能力的5个维度 6

1.3.1 完备性 6

1.3.2 复用性 6

1.3.3 高效性 7

1.3.4 高产出 7

1.3.5 代码性能 8

1.4 验证的任务和目标 8

1.4.1 按时保质低耗 8

1.4.2 芯片研发与客户反馈 9

1.4.3 缺陷增长曲线 10

1.5 验证的周期 11

1.5.1 验证周期中的检查点 11

1.5.2 功能详述 13

1.5.3 制定验证计划 14

1.5.4 开发验证环境 14

1.5.5 调试环境和HDL文件 14

1.5.6 回归测试 15

1.5.7 芯片生产 15

1.5.8 硅后系统测试 16

1.5.9 逃逸分析 16

1.6 本章结束语 16

第2章 验证的策略 18

2.1 设计的流程 18

2.1.1 TLM模型的需求和ESL开发 18

2.1.2 传统的系统设计流程 19

2.1.3 ESL系统设计流程 19

2.1.4 语言的抽象级比较 20

2.1.5 传统的系统集成视角 20

2.1.6 ESL系统集成视角 21

2.2 验证的层次 23

2.2.1 模块级 24

2.2.2 子系统级 25

2.2.3 芯片系统级 25

2.2.4 硅后系统级 25

2.3 验证的透明度 26

2.3.1 黑盒验证 26

2.3.2 白盒验证 27

2.3.3 灰盒验证 28

2.4 激励的原则 29

2.4.1 接口类型 29

2.4.2 序列颗粒度 30

2.4.3 可控性 31

2.4.4 组件独立性 31

2.4.5 组合自由度 31

2.5 检查的方法 32

2.6 集成的环境 33

2.6.1 验证平台 33

2.6.2 待验设计 34

2.6.3 运行环境 34

2.6.4 验证管理 34

2.7 本章结束语 35

第3章 验证的方法 36

3.1 动态仿真 37

3.1.1 定向测试 37

3.1.2 随机测试 38

3.1.3 基于覆盖率驱动的随机验证 40

3.1.4 基于TLM的随机验证 41

3.1.5 断言检查 41

3.2 静态检查 44

3.2.1 语法检查 44

3.2.2 语义检查 44

3.2.3 跨时钟域检查 45

3.2.4 形式验证 46

3.3 开发环境 48

3.3.1 V im开发环境 48

3.3.2 商业SV开发环境——DVT 50

3.4 虚拟模型 51

3.5 硬件加速 53

3.6 效能验证 55

3.6.1 功率和能量 56

3.6.2 静态功耗和动态功耗 56

3.6.3 节能技术 56

3.6.4 效能验证 57

3.6.5 功耗预测与优化 58

3.7 性能验证 59

3.7.1 设定目标 59

3.7.2 测试环境 60

3.7.3 验证方法 60

3.8 趋势展望 61

3.8.1 技术之间的横向跨越 62

3.8.2 层次之间的纵向复用 63

3.9 本章结束语 63

第4章 验证的计划 64

4.1 计划概述 64

4.2 计划的内容 65

4.2.1 技术的视角 65

4.2.2 项目的视角 66

4.3 计划的实现 67

4.3.1 邀请相关人员 68

4.3.2 开会讨论 69

4.3.3 确定测试场景 69

4.3.4 创建验证环境 70

4.4 计划的进程评估 70

4.4.1 回归测试通过率 70

4.4.2 代码覆盖率 71

4.4.3 断言覆盖率 72

4.4.4 功能覆盖率 72

4.4.5 缺陷曲线 73

4.5 本章结束语 73

第5章 验证的管理 74

5.1 验证周期的检查清单 74

5.2 验证管理的三要素 76

5.2.1 时间管理 77

5.2.2 人力资源安排 78

5.2.3 任务拆分和重组 78

5.3 验证的收敛 79

5.3.1 回归流程 79

5.3.2 回归质量 80

5.3.3 回归效率 81

5.4 让漏洞无处可逃 82

5.5 团队建设 85

5.6 验证师的培养 87

5.6.1 全硅能力 87

5.6.2 不做假设 88

5.6.3 专注力 88

5.6.4 逻辑性 88

5.6.5 “战鼓光环” 89

5.6.6 降低复杂度 89

5.7 验证的专业化 90

5.7.1 对验证的偏见 90

5.7.2 验证面临的现状 91

5.7.3 验证标准化 92

5.7.4 验证经验的积累和突破 92

5.8 本章结束语 93

第6章 验证的结构 94

6.1 测试平台概述 94

6.2 硬件设计描述 95

6.2.1 功能描述 95

6.2.2 设计结构 95

6.2.3 接口描述 95

6.2.4 接口时序 97

6.2.5 寄存器描述 98

6.3 激励发生器 98

6.4 监测器 100

6.5 比较器 103

6.6 验证结构 105

6.6.1 项目背景 105

6.6.2 MCDF验证进度安排 105

6.7 本章结束语 107

第7章 SV环境构建 108

7.1 数据类型 108

7.2 模块定义与例化 111

7.2.1 模块定义 111

7.2.2 模块例化 113

7.2.3 参数使用 115

7.2.4 参数修改 115

7.2.5 宏定义 116

7.3 接口 116

7.3.1 接口连接方式1 117

7.3.2 接口连接方式2 117

7.3.3 接口的其他应用 119

7.4 程序和模块 122

7.4.1 Verilog设计竞争问题 123

7.4.2 SV的仿真调度机制 124

7.4.3 module数据采样示例1 126

7.4.4 module数据采样示例2 126

7.4.5 program数据采样示例 128

7.5 测试的始终 130

7.5.1 系统函数调用方式结束 130

7.5.2 program隐式结束 130

7.5.3 program显式结束 131

7.6 本章结束语 133

第8章 SV组件实现 134

8.1 激励发生器的驱动 134

8.1.1 激励驱动的方法 135

8.1.2 任务和函数 137

8.1.3 数据生命周期 139

8.1.4 通过接口驱动 140

8.1.5 测试向量产生 142

8.1.6 仿真结束控制 143

8.2 激励发生器的封装 144

8.2.1 类的封装 144

8.2.2 类的继承 146

8.2.3 成员覆盖 148

8.2.4 虚方法 150

8.2.5 句柄使用 152

8.2.6 对象复制 154

8.2.7 对象回收 156

8.3 激励发生器的随机化 157

8.3.1 可随机的激励种类 158

8.3.2 约束求解器 159

8.3.3 随机变量和数组 160

8.3.4 约束块 164

8.3.5 随机化控制 167

8.3.6 随机化的稳定性 168

8.3.7 随机化的流程控制 172

8.3.8 随机化的系统函数 173

8.4 监测器的采样 173

8.4.1 Interface clocking简介 174

8.4.2 利用clocking事件同步 175

8.4.3 利用clocking采样数据 176

8.4.4 利用clocking产生激励 177

8.4.5 monitor的采样功能 177

8.5 组件间的通信 181

8.5.1 通知的需求 182

8.5.2 资源共享的需求 184

8.5.3 数据通信的需求 187

8.5.4 进程同步的需求 191

8.5.5 进程通信要素的比较和应用 193

8.6 比较器和参考模型 196

8.6.1 异常检查 197

8.6.2 常规检查 198

8.6.3 时序检查 206

8.6.4 组件连接 209

8.7 测试环境的报告规范 211

8.7.1 信息报告库 212

8.7.2 信息库使用场景 213

8.8 本章结束语 217

第9章 SV系统集成 218

9.1 包的意义 219

9.2 验证环境的组装 223

9.2.1 封装验证环境的方式 223

9.2.2 模块环境的复用考量 224

9.2.3 比较器的复用考量 224

9.2.4 顶层环境的实现 226

9.3 测试场景的生成 231

9.3.1 动态控制激励 233

9.3.2 调度多个激励器 234

9.3.3 线程的精细控制 236

9.3.4 动态测试向量 240

9.3.5 向量群落的并发控制 242

9.4 灵活化的配置 244

9.4.1 Agent的两面性 244

9.4.2 各个组件的模式配置 245

9.4.3 验证结构的集成顺序 246

9.5 初论环境的复用性 250

9.5.1 复用的策略 250

9.5.2 水平复用的应用 251

9.5.3 垂直复用的应用 254

9.6 本章结束语 256

第10章 UVM世界观 257

10.1 我们所处的验证时代 257

10.2 类库地图 259

10.3 工厂机制 261

10.3.1 工厂的意义 262

10.3.2 工厂提供的便利 262

10.3.3 覆盖方法 269

10.3.4 确保正确覆盖的代码要求 272

10.4 核心基类 273

10.4.1 域的自动化 274

10.4.2 复制 277

10.4.3 比较 278

10.4.4 打印 280

10.4.5 打包和解包 282

10.5 phase机制 283

10.5.1 phase执行机制 284

10.5.2 如何开始UVM仿真 290

10.5.3 如何结束UVM仿真 292

10.6 config机制 296

10.6.1 interface传递 296

10.6.2 变量设置 297

10.6.3 config object传递 298

10.6.4 config机制 299

10.6.5 其他配置方法 300

10.6.6 uvm_resource_db的使用 302

10.7 消息管理 304

10.7.1 消息方法 304

10.7.2 消息处理 305

10.7.3 消息机制 309

10.8 宏的优劣探讨 311

10.9 本章结束语 314

第11章 UVM结构 315

11.1 组件家族 315

11.1.1 uvm_driver 316

11.1.2 uvm_monitor 316

11.1.3 uvm_sequencer 316

11.1.4 uvm_agent 317

11.1.5 uvm_scoreboard 318

11.1.6 uvm_env 319

11.1.7 uvm_test 319

11.2 把DUT装进TB分几步 320

11.2.1 MCDF顶层验证环境方案1 322

11.2.2 MCDF顶层验证环境方案2 324

11.3 构建环境的内经 327

11.3.1 环境构建的四要素 327

11.3.2 环境元素分类 328

11.4 本章结束语 330

第12章 UVM通信 331

12.1 TLM通信概论 331

12.2 单向、双向及多向通信 336

12.2.1 单向通信 337

12.2.2 双向通信 341

12.2.3 多向通信 343

12.3 通信管道应用 346

12.3.1 TLM FIFO 346

12.3.2 Analysis Port 347

12.3.3 Analysis TLM FIFO 348

12.3.4 Request&Response通信管道 349

12.4 TLM2通信 351

12.4.1 接口实现 352

12.4.2 传送数据 353

12.4.3 时间标记 354

12.4.4 典型使用 354

12.5 同步通信元件 356

12.5.1 uvm_event应用 356

12.5.2 uvm_barrier应用 359

12.5.3 uvm_callback应用 361

12.6 本章结束语 363

第13章 UVM序列 364

13.1 新手上路 364

13.2 Sequence和Item 367

13.2.1 Sequence Item 367

13.2.2 Flat Sequence 369

13.2.3 Hierarchical Sequence 373

13.3 Sequencer和Driver 374

13.3.1 双方的TLM端口和方法 374

13.3.2 事务传输实例 375

13.3.3 通信时序 378

13.4 Sequencer和Sequence 379

13.4.1 发送sequence及item的方法和宏 379

13.4.2 sequencer的仲裁特性及应用 385

13.5 Sequence的层次化 390

13.5.1 Hierarchical Sequence 391

13.5.2 Virtual Sequence 393

13.5.3 Layering Sequence 397

13.6 本章结束语 401

第14章 UVM寄存器 402

14.1 寄存器模型概览 402

14.2 寄存器模型的集成 409

14.2.1 总线UVC的实现 410

14.2.2 MCDF寄存器模块代码 413

14.2.3 Adapter的实现 415

14.2.4 Adapter的集成 416

14.2.5 前门访问 418

14.2.6 后门访问 419

14.2.7 前门访问和后门访问的比较 420

14.3 寄存器模型的常规方法 421

14.3.1 mirrored、desired和actual value 421

14.3.2 prediction的分类 422

14.3.3 uvm_reg的访问方法 423

14.3.4 mem与reg的联系和差别 425

14.3.5 内建sequences 426

14.4 寄存器模型的场景应用 429

14.4.1 如何检查寄存器模型 429

14.4.2 功能覆盖率的实现 430

14.5 本章结束语 433

第15章 验证平台自动化 434

15.1 为什么需要一款代码生成器 434

15.2 UVM Framework 437

15.3 如何定制一款TB自动化工具 443

15.3.1 验证环境的自动化创建 445

15.3.2 测试框架和测试用例的垂直复用 450

15.3.3 中心化的功能覆盖率管理 453

15.4 本章结束语 454

第16章 跨平台移植复用 456

16.1 便携激励标准(PSS) 456

16.2 PSS工具集概览 459

16.2.1 inFact 462

16.2.2 Perspec 463

16.2.3 Breker Trek系列 464

16.3 跨平台的验证结构考量 465

16.3.1 virtual prototyping与simulation的混合仿真 466

16.3.2 virtual prototyping与FPGAprototyping的混合仿真 467

16.3.3 simulation与emulation的混合仿真 468

16.3.4 virtual prototyping与emulation的混合仿真 470

16.4 本章结束语 471

第17章 SV及UVM接口应用 472

17.1 DPI接口和C测试 472

17.1.1 总线接口的读写实现 475

17.1.2 virtual core类的定义 476

17.1.3 DPI方法的实现 478

17.1.4 多核并行处理实现 479

17.1.5 中断响应的实现 481

17.2 SystemC与UVM的TLM2通信 485

17.2.1 UVMC连接 487

17.2.2 UVM指令API 490

17.3 MATLAB及Simulink模型与UVM的混合仿真 493

17.4 脚本语言与UVM的交互 495

17.4.1 线上控制和线下激励的交互应用 495

17.4.2 线上控制和线上激励的交互应用 499

17.5 本章结束语 502

第18章 SV及UVM高级话题 503

18.1 SystemVerilog开源公共库 503

18.1.1 SV开源库之一:svlib 504

18.1.2 SV开源库之二:cluelib 509

18.2 SV单元测试方法SVUnit 513

18.3 OVM到UVM的移植 521

18.3.1 OVM代码检视 523

18.3.2 OVM到UVM的代码自动转换 525

18.3.3 替换OVM phase方法 525

18.3.4 替换OVM objection方法 526

18.3.5 替换OVM configuration方法 526

18.3.6 添加UVM的新特性 528

18.4 OVM与UVM的混合仿真 530

18.4.1 UVM-ML验证框架 531

18.4.2 OVM兼容层 531

18.4.3 XVM 533

18.5 本章结束语 536

参考文献 537

返回顶部