UVM实战

UVM实战

类似推荐

编辑推荐

用研究的眼光,详解如何搭建基于UVM的验证平台。

内容简介

全书详尽介绍了uvm的factory机制、sequence机制、phase机制、objection机制及寄存器模型等的使用。

此外,本书还试图引导读者思考uvm为什么要引入这些机制,从而使读者知其然,更知其所以然。

全书内容力求简单易懂,尽量将uvm中的概念与读者已有的概念联系起来。

在第11章还专门介绍了ovm与uvm的区别,为那些从ovm迁移到uvm的用户提供很大帮助。

本书主要面向uvm的初学者及想对uvm追根寻底的中级用户。

针对没有面向对象编程基础的用户,本书在附录中简要介绍了面向对象的概念及systemverilog中区别于其他编程语言的一些特殊语法。

作者简介

主编张强。

章节目录

版权信息

前言

第1章 与UVM的第一次接触

1.1 UVM是什么

1.1.1 验证在现代IC流程中的位置

1.1.2 验证的语言

1.1.3 何谓方法学

1.1.4 为什么是UVM

1.1.5 UVM的发展史

1.2 学了UVM之后能做什么

1.2.1 验证工程师

1.2.2 设计工程师

第2章 一个简单的UVM验证平台

2.1 验证平台的组成

2.2 只有driver的验证平台

*2.2.1 最简单的验证平台

*2.2.2 加入factory机制

*2.2.3 加入objection机制

*2.2.4 加入virtual interface

2.3 为验证平台加入各个组件

*2.3.1 加入transaction

*2.3.2 加入env

*2.3.3 加入monitor

*2.3.4 封装成agent

*2.3.5 加入reference model

*2.3.6 加入scoreboard

*2.3.7 加入field_automation机制

2.4 UVM的终极大作:sequence

*2.4.1 在验证平台中加入sequencer

*2.4.2 sequence机制

*2.4.3 default_sequence的使用

2.5 建造测试用例

*2.5.1 加入base_test

*2.5.2 UVM中测试用例的启动

第3章 UVM基础

3.1 uvm_component与uvm_object

3.1.1 uvm_component派生自uvm_object

3.1.2 常用的派生自uvm_object的类

3.1.3 常用的派生自uvm_component的类

3.1.4 与uvm_object相关的宏

3.1.5 与uvm_component相关的宏

3.1.6 uvm_component的限制

3.1.7 uvm_component与uvm_object的二元结构

3.2 UVM的树形结构

3.2.1 uvm_component中的parent参数

3.2.2 UVM树的根

3.2.3 层次结构相关函数

3.3 field automation机制

3.3.1 field automation机制相关的宏

3.3.2 field automation机制的常用函数

*3.3.3 field automation机制中标志位的使用

*3.3.4 field automation中宏与if的结合

3.4 UVM中打印信息的控制

*3.4.1 设置打印信息的冗余度阈值

*3.4.2 重载打印信息的严重性

*3.4.3 UVM_ERROR到达一定数量结束仿真

*3.4.4 设置计数的目标

*3.4.5 UVM的断点功能

*3.4.6 将输出信息导入文件中

*3.4.7 控制打印信息的行为

3.5 config_db机制

3.5.1 UVM中的路径

3.5.2 set与get函数的参数

*3.5.3 省略get语句

*3.5.4 跨层次的多重设置

*3.5.5 同一层次的多重设置

*3.5.6 非直线的设置与获取

*3.5.7 config_db机制对通配符的支持

*3.5.8 check_config_usage

3.5.9 set_config与get_config

3.5.10 config_db的调试

第4章 UVM中的TLM1.0通信

4.1 TLM1.0

4.1.1 验证平台内部的通信

4.1.2 TLM的定义

4.1.3 UVM中的PORT与EXPORT

4.2 UVM中各种端口的互连

*4.2.1 PORT与EXPORT的连接

*4.2.2 UVM中的IMP

*4.2.3 PORT与IMP的连接

*4.2.4 EXPORT与IMP的连接

*4.2.5 PORT与PORT的连接

*4.2.6 EXPORT与EXPORT的连接

*4.2.7 blocking_get端口的使用

*4.2.8 blocking_transport端口的使用

4.2.9 nonblocking端口的使用

4.3 UVM中的通信方式

*4.3.1 UVM中的analysis端口

*4.3.2 一个component内有多个IMP

*4.3.3 使用FIFO通信

4.3.4 FIFO上的端口及调试

*4.3.5 用FIFO还是用IMP

第5章 UVM验证平台的运行

5.1 phase机制

*5.1.1 task phase与function phase

5.1.2 动态运行phase

*5.1.3 phase的执行顺序

*5.1.4 UVM树的遍历

5.1.5 super.phase的内容

*5.1.6 build阶段出现UVM_ERROR停止仿真

*5.1.7 phase的跳转

5.1.8 phase机制的必要性

5.1.9 phase的调试

5.1.10 超时退出

5.2 objection机制

*5.2.1 objection与task phase

*5.2.2 参数phase的必要性

5.2.3 控制objection的最佳选择

5.2.4 set_drain_time的使用

*5.2.5 objection的调试

5.3 domain的应用

5.3.1 domain简介

*5.3.2 多domain的例子

*5.3.3 多domain中phase的跳转

第6章 UVM中的sequence

6.1 sequence基础

6.1.1 从driver中剥离激励产生功能

*6.1.2 sequence的启动与执行

6.2 sequence的仲裁机制

*6.2.1 在同一sequencer上启动多个sequence

*6.2.2 sequencer的lock操作

*6.2.3 sequencer的grab操作

6.2.4 sequence的有效性

6.3 sequence相关宏及其实现

6.3.1 uvm_do系列宏

*6.3.2 uvm_create与uvm_send

*6.3.3 uvm_rand_send系列宏

*6.3.4 start_item与finish_item

*6.3.5 pre_do、mid_do与post_do

6.4 sequence进阶应用

*6.4.1 嵌套的sequence

*6.4.2 在sequence中使用rand类型变量

*6.4.3 transaction类型的匹配

*6.4.4 p_sequencer的使用

*6.4.5 sequence的派生与继承

6.5 virtual sequence的使用

*6.5.1 带双路输入输出端口的DUT

*6.5.2 sequence之间的简单同步

*6.5.3 sequence之间的复杂同步

6.5.4 仅在virtual sequence中控制objection

*6.5.5 在sequence中慎用fork join_none

6.6 在sequence中使用config_db

*6.6.1 在sequence中获取参数

*6.6.2 在sequence中设置参数

*6.6.3 wait_modified的使用

6.7 response的使用

*6.7.1 put_response与get_response

6.7.2 response的数量问题

*6.7.3 response handler与另类的response

*6.7.4 rsp与req类型不同

6.8 sequence library

6.8.1 随机选择sequence

6.8.2 控制选择算法

6.8.3 控制执行次数

6.8.4 使用sequence_library_cfg

第7章 UVM中的寄存器模型

7.1 寄存器模型简介

*7.1.1 带寄存器配置总线的DUT

7.1.2 需要寄存器模型才能做的事情

7.1.3 寄存器模型中的基本概念

7.2 简单的寄存器模型

*7.2.1 只有一个寄存器的寄存器模型

*7.2.2 将寄存器模型集成到验证平台中

*7.2.3 在验证平台中使用寄存器模型

7.3 后门访问与前门访问

*7.3.1 UVM中前门访问的实现

7.3.2 后门访问操作的定义

*7.3.3 使用interface进行后门访问操作

7.3.4 UVM中后门访问操作的实现:DPI+VPI

*7.3.5 UVM中后门访问操作接口

7.4 复杂的寄存器模型

*7.4.1 层次化的寄存器模型

*7.4.2 reg_file的作用

*7.4.3 多个域的寄存器

*7.4.4 多个地址的寄存器

*7.4.5 加入存储器

7.5 寄存器模型对DUT的模拟

7.5.1 期望值与镜像值

7.5.2 常用操作及其对期望值和镜像值的影响

7.6 寄存器模型中一些内建的sequence

*7.6.1 检查后门访问中hdl路径的sequence

*7.6.2 检查默认值的sequence

*7.6.3 检查读写功能的sequence

7.7 寄存器模型的高级用法

*7.7.1 使用reg_predictor

*7.7.2 使用UVM_PREDICT_DIRECT功能与mirror操作

*7.7.3 寄存器模型的随机化与update

7.7.4 扩展位宽

7.8 寄存器模型的其他常用函数

7.8.1 get_root_blocks

7.8.2 get_reg_by_offset函数

第8章 UVM中的factory机制

8.1 SystemVerilog对重载的支持

*8.1.1 任务与函数的重载

*8.1.2 约束的重载

8.2 使用factory机制进行重载

*8.2.1 factory机制式的重载

*8.2.2 重载的方式及种类

*8.2.3 复杂的重载

*8.2.4 factory机制的调试

8.3 常用的重载

*8.3.1 重载transaction

*8.3.2 重载sequence

*8.3.3 重载component

8.3.4 重载driver以实现所有的测试用例

8.4 factory机制的实现

8.4.1 创建一个类的实例的方法

*8.4.2 根据字符串来创建一个类

8.4.3 用factory机制创建实例的接口

8.4.4 factory机制的本质

第9章 UVM中代码的可重用性

9.1 callback机制

9.1.1 广义的callback函数

9.1.2 callback机制的必要性

9.1.3 UVM中callback机制的原理

*9.1.4 callback机制的使用

*9.1.5 子类继承父类的callback机制

9.1.6 使用callback函数/任务来实现所有的测试用例

9.1.7 callback机制、sequence机制和factory机制

9.2 功能的模块化:小而美

9.2.1 Linux的设计哲学:小而美

9.2.2 小而美与factory机制的重载

9.2.3 放弃建造强大sequence的想法

9.3 参数化的类

9.3.1 参数化类的必要性

*9.3.2 UVM对参数化类的支持

9.4 模块级到芯片级的代码重用

*9.4.1 基于env的重用

*9.4.2 寄存器模型的重用

9.4.3 virtual sequence与virtual sequencer

第10章 UVM高级应用

10.1 interface

10.1.1 interface实现driver的部分功能

*10.1.2 可变时钟

10.2 layer sequence

*10.2.1 复杂sequence的简单化

*10.2.2 layer sequence的示例

*10.2.3 layer sequence与try_next_item

*10.2.4 错峰技术的使用

10.3 sequence的其他问题

*10.3.1 心跳功能的实现

10.3.2 只将virtual_sequence设置为default_sequence

10.3.3 disable fork语句对原子操作的影响

10.4 DUT参数的随机化

10.4.1 使用寄存器模型随机化参数

*10.4.2 使用单独的参数类

10.5 聚合参数

10.5.1 聚合参数的定义

10.5.2 聚合参数的优势与问题

10.6 config_db

10.6.1 换一个phase使用config_db

*10.6.2 config_db的替代者

*10.6.3 set函数的第二个参数的检查

第11章 OVM到UVM的迁移

11.1 对等的迁移

11.2 一些过时的用法

*11.2.1 sequence与sequencer的factory机制实现

11.2.2 sequence的启动与uvm_test_done

*11.2.3 手动调用build_phase

11.2.4 纯净的UVM环境

附录A SystemVerilog使用简介

A.1 结构体的使用

A.2 从结构体到类

A.3 类的封装

A.4 类的继承

A.5 类的多态

A.6 randomize与constraint

附录B DUT代码清单

附录C UVM命令行参数汇总

附录D UVM常用宏汇总

UVM实战是2014年由机械工业出版社华章分社出版,作者张强。

得书感谢您对《UVM实战》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

你可能喜欢