电子与嵌入式系统设计丛书:UVM实战
《电子与嵌入式系统设计丛书:UVM实战(卷1)》以一个完整的示例开篇,使得读者一开始就对如何使用UVM搭建验证平台有总体的概念。《电子与嵌入式系统设计丛书:UVM实战(卷1)》提供大量示例代码,这些代码都经过实际的运行。全书内容力求简单易懂,尽量将UVM中的概念与读者已有的概念联系起来。在第11章还专门介绍了OVM与UVM的区别,为那些从OVM迁移到UVM的用户提供很大帮助。《电子与嵌入式系统设计丛书:UVM实战(卷1)》主要面向UVM的初学者及想对UVM追根寻底的中级用户。针对没有面向对象编程基础的用户,《电子与嵌入式系统设计丛书:UVM实战(卷1)》在附录中简要介绍了面向对象的概念及SystemVerilog中区别于其他编程语言的一些特殊语法。
基本信息
- 书名
电子与嵌入式系统设计丛书:UVM实战
- 作者
张强
- 类型
计算机与互联网
- 出版社
机械工业出版社
- 出版日期
2014年7月1日
基本介绍
内容简介
《电子与嵌入式系统设计丛书:UVM实战(卷1)》主要介绍UVM的使用。全书详尽介绍了UVM的factory机制、sequence机制、phase机制、objection机制及寄存器模型等的使用。此外,《电子与嵌入式系统设计丛书:UVM实战(卷1)》还试图引导读者思考UVM为什么要引入这些机制,从而使读者知其然,更知其所以然。
作者简介
张强,资深验证工程师,毕业于浙江大学超大规模集成电路研究所,研究方向为模拟及数模混合集成电路,主要从事模拟电源管理芯片、运算放大器及应用于高性能CPU的SRAM的研究与设计,持有两个与SRAM相关的专利。毕业后一直从事数字集成电路的设计和验证工作,曾经参与过高速智能列车数据采集及通信系统、高性能智能投影仪芯片的研究与开发。目前主要从事手机等消费电子低功耗图形显示芯片的研究。2011年年底,在熟读UVM源代码的情况下,在网上发布了《UVM1.1应用指南及源代码解析》,深受读者肯定。
图书目录
前言 第1章与UVM的第一次接触 1.1UVM是什么 1.1.1验证在现代IC流程中的位置 1.1.2验证的语言 1.1.3何谓方法学 1.1.4为什么是UVM 1.1.5UVM的发展史 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加入virtualinterface 2.3为验证平台加入各个组件 2.3.1加入transaction 2.3.2加入env 2.3.3加入monitor 2.3.4封装成agent 2.3.5加入referencemodel 2.3.6加入scoreboard 2.3.7加入field_automation机制 2.4UVM的终极大作:sequence 2.4.1在验证平台中加入sequencer 2.4.2sequence机制 2.4.3default_sequence的使用 2.5建造测试用例 2.5.1加入base_test 2.5.2UVM中测试用例的启动 第3章UVM基础 3.1uvm_component与uvm_object 3.1.1uvm_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.6uvm_component的限制 3.1.7uvm_component与uvm_object的二元结构 3.2UVM的树形结构 3.2.1uvm_component中的parent参数 3.2.2UVM树的根 3.2.3层次结构相关函数 3.3fieldautomation机制 3.3.1fieldautomation机制相关的宏 3.3.2fieldautomation机制的常用函数 3.3.3fieldautomation机制中标志位的使用 3.3.4fieldautomation中宏与if的结会 3.4UVM中打印信息的控制 3.4.1设置打印信息的冗余度阈值 3.4.2重载打印信息的严重性 3.4.3UVM_ERROR到达一定数量结束仿真 3.4.4设置计数的目标 3.4.5UVM的断点功能 3.4.6将输出信息导入文件中 3.4.7控制打印信息的行为 3.5config_db机制 3.5.1UVM中的路径 3.5.2set与get函数的参数 3.5.3省略get语句 3.5.4跨层次的多重设置 3.5.5同一层次的多重设置 3.5.6非直线的设置与获取 3.5.7config_db机制对通配符的支持 3.5.8check_config_usage 3.5.9set_config与get_config 3.5.10config_db的调试 第4章UVM中的TLM1.0通信 4.1TLM1.0 4.1.1验证平台内部的通信 4.1.2TLM的定义 4.1.3UVM中的PORT与EXPORT 4.2UVM中各种端口的互连 4.2.1PORT与EXPORT的连接 4.2.2UVM中的IMP 4.2.3PORT与IMP的连接 4.2.4EXPORT与IMP的连接 4.2.5PORT与PORT的连接 4.2.6EXPORT与EXPORT的连接 4.2.7blocking_get端口的使用 4.2.8blocking_transport端口的使用 4.2.9nonblocking端口的使用 4.3UVM中的通信方式 4.3.1UVM中的analysis端口 4.3.2一个component内有多个IMP 4.3.3使用FIFO通信 4.3.4FIFO上的端口及调试 4.3.5用FIFO还是用IMP 第5章UVM验证平台的运行 5.1phase机制 5.1.1taskphase与functionphase 5.1.2动态运行phase 5.1.3phase的执行顺序 5.1.4UVM树的遍历 5.1.5super.phase的内容 5.1.6build阶段出现UVMERROR停止仿真 5.1.7phase的跳转 5.1.8phase机制的必要性 5.1.9phase的调试 5.1.10超时退出 5.2objection机制 5.2.1objection与taskphase 5.2.2参数phase的必要性 5.2.3控制objection的最佳选择 5.2.4set_drain_time的使用 5.2.5objection的调试 5.3domain的应用 5.3.1domain简介 5.3.2多domain的例子 5.3.3多domain中phase的跳转 第6章UVM中的sequence 6.1sequence基础 6.1.1从driver中剥离激励产生功能 6.1.2sequence的启动与执行 6.2sequence的仲裁机制 6.2.1在同一sequencer上启动多个sequence 6.2.2sequencer的lock操作 6.2.3sequencer的grab操作 6.2.4sequence的有效性 6.3sequence相关宏及其实现 6.3.1uvm_do系列宏 6.3.2uvm_create与uvm_send 6.3.3uvm_rand_send系列宏 6.3.4start_item与finish_item 6.3.5pre_do.mid_do与post_do 6.4sequence进阶应用 6.4.1嵌套的sequence 6.4.2在sequence中使用rand类型变量 6.4.3transaction类型的匹配 6.4.4p_sequencer的使用 6.4.5sequence的派生与继承 6.5virtualsequence的使用 6.5.1带双路输入输出端口的DUT 6.5.2sequence之间的简单同步 6.5.3sequence之间的复杂同步 6.5.4仅在virtualsequence中控制objection 6.5.5在sequence中慎用forkjoin_none 6.6在sequence中使用config_db 6.6.1在sequence中获取参数 6.6.2在sequence中设置参数 6.6.3wait_modified的使用 6.7response的使用 6.7.1put_response与get_response 6.7.2response的数量问题 6.7.3responsehandler与另类的response 6.7.4rsp与req类型不同 6.8sequencelibrary 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.1UVM中前门访问的实现 7.3.2后门访问操作的定义 7.3.3使用interface进行后门访问操作 7.3.4UVM中后门访问操作的实现:DPI+VPI 7.3.5UVM中后门访问操作接口 7.4复杂的寄存器模型 7.4.1层次化的寄存器模型 7.4.2reg_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_PREDICTDIRECT功能与mirror操作 7.7.3寄存器模型的随机化与update 7.7.4扩展位宽 7.8寄存器模型的其他常用函数 7.8.1get_root_blocks 7.8.2get_reg_by_offset函数 第8章UVM中的factory机制 8.1SystemVerilog对重载的支持 8.1.1任务与函数的重载 8.1.2约束的重载 8.2使用factory机制进行重载 8.2.1factory机制式的重载 8.2.2重载的方式及种类 8.2.3复杂的重载 8.2.4factory机制的调试 8.3常用的重载 8.3.1重载transaction 8.3.2重载sequence 8.3.3重载component 8.3.4重载driver以实现所有的测试用例 8.4factory机制的实现 8.4.1创建一个类的实例的方法 8.4.2根据字符串来创建一个类 8.4.3用factory机制创建实例的接口 8.4.4factory机制的本质 …… 第9章UVM中代码的可重用性 第10章UVM高级应用 第11章OVM到UVM的迁移 附录ASystemVerilog使用简介 附录BDUT代码清单 附录CUVM命令行参数汇总 附录DUVM常用宏汇总