UVM的学习资料非常匮乏,能够参考的资料,一是《OVM Cookbook》(这本英文资料从来没有在国内出版过),另一个是OVM/UVM官方的英文参考文档。它们所采用的行文方式更是硬生生地不断引某些概念,并附加一定的代码来阐述这些概念。在这些前后引的概念之间。几乎没有什么逻辑关系。有时候看完了一整章都不知道该章介绍的东西有什么用处。*关键的是。整本书看完了也不知道如何搭建一个验证平台。这本《UVM实战(卷Ⅰ)》的作者张强围绕如何搭建一个基于UVM的验证平台,用丰富的案例和深浅出的语言,引导读者深理解UVM验证方法学的使用方法和设计理念。
售 价:¥
纸质售价:¥55.30购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
前言
第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 最简单的验证平台 [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常用宏汇总
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜