uvm里如何插入断点_UVM实战

UVM实战

作者:张强

出版日期:2014年08月

文件大小:6.20M

支持设备:

¥50.00在线试读

适用客户端:

言商书局

iPad/iPhone客户端:下载 Android客户端:下载PC客户端:下载更多详情:查看

?对图书下载、阅读卡购买有疑问:立即进入帮助中心>>

图书简介

目录

本书主要介绍uvm的使用。全书详尽介绍了uvm的factory机制、sequence机制、phase机制、objection机制及寄存器模型等的使用。此外,本书还试图引导读者思考uvm为什么要引入这些机制,从而使读者知其然,更知其所以然。本书以一个完整的示例开篇,使得读者一开始就对如何使用uvm搭建验证平台有总体的概念。本书提供大量示例代码,这些代码都经过实际的运行。全书内容力求简单易懂,尽量将uvm中的概念与读者已有的概念联系起来。在第11章还专门介绍了ovm与uvm的区别,为那些从ovm迁移到uvm的用户提供很大帮助。

前言

第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对参数化类的支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值