计算机
类型
7.8
豆瓣评分
可以朗读
语音朗读
381千字
字数
2018-04-01
发行日期
展开全部
主编推荐语
芯片验证全面指南:理论、SystemVerilog、UVM技术
内容简介
资深验证专家刘斌(路桑)向您全面介绍芯片验证,从验证的理论,到SystemVerilog语言和UVM验证方法学,再到高级验证项目话题。这本综合性、实用性的验证理论和编程方面的图书,针对芯片验证领域不同级别的验证工程师,给出由浅入深的技术指南:学习验证理论来认识验证流程和标准,学习SystemVerilog语言和UVM方法学来掌握目前主流的动态验证技术,了解高级验证话题在今后遇到相关问题时可以参考。
目录
- 版权信息
- 作者简介
- 内容简介
- 序(一)
- 序(二)
- 前言
- 行业人士评语
- 第1章 芯片验证全视
- 1.1 功能验证简介
- 1.2 验证的处境
- 1.2.1 验证语言的发展
- 1.2.2 验证面临的挑战
- 1.3 验证能力的5个维度
- 1.3.1 完备性
- 1.3.2 复用性
- 1.3.3 高效性
- 1.3.4 高产出
- 1.3.5 代码性能
- 1.4 验证的任务和目标
- 1.4.1 按时保质低耗
- 1.4.2 芯片研发与客户反馈
- 1.4.3 缺陷增长曲线
- 1.5 验证的周期
- 1.5.1 验证周期中的检查点
- 1.5.2 功能详述
- 1.5.3 制定验证计划
- 1.5.4 开发验证环境
- 1.5.5 调试环境和HDL文件
- 1.5.6 回归测试
- 1.5.7 芯片生产
- 1.5.8 硅后系统测试
- 1.5.9 逃逸分析
- 1.6 本章结束语
- 第2章 验证的策略
- 2.1 设计的流程
- 2.1.1 TLM模型的需求和ESL开发
- 2.1.2 传统的系统设计流程
- 2.1.3 ESL系统设计流程
- 2.1.4 语言的抽象级比较
- 2.1.5 传统的系统集成视角
- 2.1.6 ESL系统集成视角
- 2.2 验证的层次
- 2.2.1 模块级
- 2.2.2 子系统级
- 2.2.3 芯片系统级
- 2.2.4 硅后系统级
- 2.3 验证的透明度
- 2.3.1 黑盒验证
- 2.3.2 白盒验证
- 2.3.3 灰盒验证
- 2.4 激励的原则
- 2.4.1 接口类型
- 2.4.2 序列颗粒度
- 2.4.3 可控性
- 2.4.4 组件独立性
- 2.4.5 组合自由度
- 2.5 检查的方法
- 2.6 集成的环境
- 2.6.1 验证平台
- 2.6.2 待验设计
- 2.6.3 运行环境
- 2.6.4 验证管理
- 2.7 本章结束语
- 第3章 验证的方法
- 3.1 动态仿真
- 3.1.1 定向测试
- 3.1.2 随机测试
- 3.1.3 基于覆盖率驱动的随机验证
- 3.1.4 基于TLM的随机验证
- 3.1.5 断言检查
- 3.2 静态检查
- 3.2.1 语法检查
- 3.2.2 语义检查
- 3.2.3 跨时钟域检查
- 3.2.4 形式验证
- 3.3 开发环境
- 3.3.1 Vim开发环境
- 3.3.2 商业SV开发环境——DVT
- 3.4 虚拟模型
- 3.5 硬件加速
- 3.6 效能验证
- 3.6.1 功率和能量
- 3.6.2 静态功耗和动态功耗
- 3.6.3 节能技术
- 3.6.4 效能验证
- 3.6.5 功耗预测与优化
- 3.7 性能验证
- 3.7.1 设定目标
- 3.7.2 测试环境
- 3.7.3 验证方法
- 3.8 趋势展望
- 3.8.1 技术之间的横向跨越
- 3.8.2 层次之间的纵向复用
- 3.9 本章结束语
- 第4章 验证的计划
- 4.1 计划概述
- 4.2 计划的内容
- 4.2.1 技术的视角
- 4.2.2 项目的视角
- 4.3 计划的实现
- 4.3.1 邀请相关人员
- 4.3.2 开会讨论
- 4.3.3 确定测试场景
- 4.3.4 创建验证环境
- 4.4 计划的进程评估
- 4.4.1 回归测试通过率
- 4.4.2 代码覆盖率
- 4.4.3 断言覆盖率
- 4.4.4 功能覆盖率
- 4.4.5 缺陷曲线
- 4.5 本章结束语
- 第5章 验证的管理
- 5.1 验证周期的检查清单
- 5.2 验证管理的三要素
- 5.2.1 时间管理
- 5.2.2 人力资源安排
- 5.2.3 任务拆分和重组
- 5.3 验证的收敛
- 5.3.1 回归流程
- 5.3.2 回归质量
- 5.3.3 回归效率
- 5.4 让漏洞无处可逃
- 5.5 团队建设
- 5.6 验证师的培养
- 5.6.1 全硅能力
- 5.6.2 不做假设
- 5.6.3 专注力
- 5.6.4 逻辑性
- 5.6.5 “战鼓光环”
- 5.6.6 降低复杂度
- 5.7 验证的专业化
- 5.7.1 对验证的偏见
- 5.7.2 验证面临的现状
- 5.7.3 验证标准化
- 5.7.4 验证经验的积累和突破
- 5.8 本章结束语
- 第6章 验证的结构
- 6.1 测试平台概述
- 6.2 硬件设计描述
- 6.2.1 功能描述
- 6.2.2 设计结构
- 6.2.3 接口描述
- 6.2.4 接口时序
- 6.2.5 寄存器描述
- 6.3 激励发生器
- 6.4 监测器
- 6.5 比较器
- 6.6 验证结构
- 6.6.1 项目背景
- 6.6.2 MCDF验证进度安排
- 6.7 本章结束语
- 第7章 SV环境构建
- 7.1 数据类型
- 7.2 模块定义与例化
- 7.2.1 模块定义
- 7.2.2 模块例化
- 7.2.3 参数使用
- 7.2.4 参数修改
- 7.2.5 宏定义
- 7.3 接口
- 7.3.1 接口连接方式1
- 7.3.2 接口连接方式2
- 7.3.3 接口的其他应用
- 7.4 程序和模块
- 7.4.1 Verilog设计竞争问题
- 7.4.2 SV的仿真调度机制
- 7.4.3 module数据采样示例1
- 7.4.4 module数据采样示例2
- 7.4.5 program数据采样示例
- 7.5 测试的始终
- 7.5.1 系统函数调用方式结束
- 7.5.2 program隐式结束
- 7.5.3 program显式结束
- 7.6 本章结束语
- 第8章 SV组件实现
- 8.1 激励发生器的驱动
- 8.1.1 激励驱动的方法
- 8.1.2 任务和函数
- 8.1.3 数据生命周期
- 8.1.4 通过接口驱动
- 8.1.5 测试向量产生
- 8.1.6 仿真结束控制
- 8.2 激励发生器的封装
- 8.2.1 类的封装
- 8.2.2 类的继承
- 8.2.3 成员覆盖
- 8.2.4 虚方法
- 8.2.5 句柄使用
- 8.2.6 对象复制
- 8.2.7 对象回收
- 8.3 激励发生器的随机化
- 8.3.1 可随机的激励种类
- 8.3.2 约束求解器
- 8.3.3 随机变量和数组
- 8.3.4 约束块
- 8.3.5 随机化控制
- 8.3.6 随机化的稳定性
- 8.3.7 随机化的流程控制
- 8.3.8 随机化的系统函数
- 8.4 监测器的采样
- 8.4.1 Interface clocking简介
- 8.4.2 利用clocking事件同步
- 8.4.3 利用clocking采样数据
- 8.4.4 利用clocking产生激励
- 8.4.5 monitor的采样功能
- 8.5 组件间的通信
- 8.5.1 通知的需求
- 8.5.2 资源共享的需求
- 8.5.3 数据通信的需求
- 8.5.4 进程同步的需求
- 8.5.5 进程通信要素的比较和应用
- 8.6 比较器和参考模型
- 8.6.1 异常检查
- 8.6.2 常规检查
- 8.6.3 时序检查
- 8.6.4 组件连接
- 8.7 测试环境的报告规范
- 8.7.1 信息报告库
- 8.7.2 信息库使用场景
- 8.8 本章结束语
- 第9章 SV系统集成
- 9.1 包的意义
- 9.2 验证环境的组装
- 9.2.1 封装验证环境的方式
- 9.2.2 模块环境的复用考量
- 9.2.3 比较器的复用考量
- 9.2.4 顶层环境的实现
- 9.3 测试场景的生成
- 9.3.1 动态控制激励
- 9.3.2 调度多个激励器
- 9.3.3 线程的精细控制
- 9.3.4 动态测试向量
- 9.3.5 向量群落的并发控制
- 9.4 灵活化的配置
- 9.4.1 Agent的两面性
- 9.4.2 各个组件的模式配置
- 9.4.3 验证结构的集成顺序
- 9.5 初论环境的复用性
- 9.5.1 复用的策略
- 9.5.2 水平复用的应用
- 9.5.3 垂直复用的应用
- 9.6 本章结束语
- 第10章 UVM世界观
- 10.1 我们所处的验证时代
- 10.2 类库地图
- 10.3 工厂机制
- 10.3.1 工厂的意义
- 10.3.2 工厂提供的便利
- 10.3.3 覆盖方法
- 10.3.4 确保正确覆盖的代码要求
- 10.4 核心基类
- 10.4.1 域的自动化
- 10.4.2 复制
- 10.4.3 比较
- 10.4.4 打印
- 10.4.5 打包和解包
- 10.5 phase机制
- 10.5.1 phase执行机制
- 10.5.2 如何开始UVM仿真
- 10.5.3 如何结束UVM仿真
- 10.6 config机制
- 10.6.1 interface传递
- 10.6.2 变量设置
- 10.6.3 config object传递
- 10.6.4 config机制
- 10.6.5 其他配置方法
- 10.6.6 uvm_resource_db的使用
- 10.7 消息管理
- 10.7.1 消息方法
- 10.7.2 消息处理
- 10.7.3 消息机制
- 10.8 宏的优劣探讨
- 10.9 本章结束语
- 第11章 UVM结构
- 11.1 组件家族
- 11.1.1 uvm_driver
- 11.1.2 uvm_monitor
- 11.1.3 uvm_sequencer
- 11.1.4 uvm_agent
- 11.1.5 uvm_scoreboard
- 11.1.6 uvm_env
- 11.1.7 uvm_test
- 11.2 把DUT装进TB分几步
- 11.2.1 MCDF顶层验证环境方案1
- 11.2.2 MCDF顶层验证环境方案2
- 11.3 构建环境的内经
- 11.3.1 环境构建的四要素
- 11.3.2 环境元素分类
- 11.4 本章结束语
- 第12章 UVM通信
- 12.1 TLM通信概论
- 12.2 单向、双向及多向通信
- 12.2.1 单向通信
- 12.2.2 双向通信
- 12.2.3 多向通信
- 12.3 通信管道应用
- 12.3.1 TLM FIFO
- 12.3.2 Analysis Port
- 12.3.3 Analysis TLM FIFO
- 12.3.4 Request&Response通信管道
- 12.4 TLM2通信
- 12.4.1 接口实现
- 12.4.2 传送数据
- 12.4.3 时间标记
- 12.4.4 典型使用
- 12.5 同步通信元件
- 12.5.1 uvm_event应用
- 12.5.2 uvm_barrier应用
- 12.5.3 uvm_callback应用
- 12.6 本章结束语
- 第13章 UVM序列
- 13.1 新手上路
- 13.2 Sequence和Item
- 13.2.1 Sequence Item
- 13.2.2 Flat Sequence
- 13.2.3 Hierarchical Sequence
- 13.3 Sequencer和Driver
- 13.3.1 双方的TLM端口和方法
- 13.3.2 事务传输实例
- 13.3.3 通信时序
- 13.4 Sequencer和Sequence
- 13.4.1 发送sequence及item的方法和宏
- 13.4.2 sequencer的仲裁特性及应用
- 13.5 Sequence的层次化
- 13.5.1 Hierarchical Sequence
- 13.5.2 Virtual Sequence
- 13.5.3 Layering Sequence
- 13.6 本章结束语
- 第14章 UVM寄存器
- 14.1 寄存器模型概览
- 14.2 寄存器模型的集成
- 14.2.1 总线UVC的实现
- 14.2.2 MCDF寄存器模块代码
- 14.2.3 Adapter的实现
- 14.2.4 Adapter的集成
- 14.2.5 前门访问
- 14.2.6 后门访问
- 14.2.7 前门访问和后门访问的比较
- 14.3 寄存器模型的常规方法
- 14.3.1 mirrored、desired和actual value
- 14.3.2 prediction的分类
- 14.3.3 uvm_reg的访问方法
- 14.3.4 mem与reg的联系和差别
- 14.3.5 内建sequences
- 14.4 寄存器模型的场景应用
- 14.4.1 如何检查寄存器模型
- 14.4.2 功能覆盖率的实现
- 14.5 本章结束语
- 第15章 验证平台自动化
- 15.1 为什么需要一款代码生成器
- 15.2 UVM Framework
- 15.3 如何定制一款TB自动化工具
- 15.3.1 验证环境的自动化创建
- 15.3.2 测试框架和测试用例的垂直复用
- 15.3.3 中心化的功能覆盖率管理
- 15.4 本章结束语
- 第16章 跨平台移植复用
- 16.1 便携激励标准(PSS)
- 16.2 PSS工具集概览
- 16.2.1 inFact
- 16.2.2 Perspec
- 16.2.3 Breker Trek系列
- 16.3 跨平台的验证结构考量
- 16.3.1 virtual prototyping与simulation的混合仿真
- 16.3.2 virtual prototyping与FPGA prototyping的混合仿真
- 16.3.3 simulation与emulation的混合仿真
- 16.3.4 virtual prototyping与emulation的混合仿真
- 16.4 本章结束语
- 第17章 SV及UVM接口应用
- 17.1 DPI接口和C测试
- 17.1.1 总线接口的读写实现
- 17.1.2 virtual_core类的定义
- 17.1.3 DPI方法的实现
- 17.1.4 多核并行处理实现
- 17.1.5 中断响应的实现
- 17.2 SystemC与UVM的TLM2通信
- 17.2.1 UVMC连接
- 17.2.2 UVM指令API
- 17.3 MATLAB及Simulink模型与UVM的混合仿真
- 17.4 脚本语言与UVM的交互
- 17.4.1 线上控制和线下激励的交互应用
- 17.4.2 线上控制和线上激励的交互应用
- 17.5 本章结束语
- 第18章 SV及UVM高级话题
- 18.1 SystemVerilog开源公共库
- 18.1.1 SV开源库之一:svlib
- 18.1.2 SV开源库之二:cluelib
- 18.2 SV单元测试方法SVUnit
- 18.3 OVM到UVM的移植
- 18.3.1 OVM代码检视
- 18.3.2 OVM到UVM的代码自动转换
- 18.3.3 替换OVM phase方法
- 18.3.4 替换OVM objection方法
- 18.3.5 替换OVM configuration方法
- 18.3.6 添加UVM的新特性
- 18.4 OVM与UVM的混合仿真
- 18.4.1 UVM-ML验证框架
- 18.4.2 OVM兼容层
- 18.4.3 XVM
- 18.5 本章结束语
- 参考文献
展开全部
出版方
电子工业出版社
电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。