0去购物车结算
购物车中还没有商品,赶紧选购吧!
当前位置: > SystemVerilog验证

相同语种的商品

相同作者的商品

浏览历史

SystemVerilog验证


联系编辑
 
标题:
 
内容:
 
联系方式:
 
  
SystemVerilog验证
  • 书号:9787030253064
    作者:张春
  • 外文书名:
  • 装帧:平装
    开本:B5
  • 页数:392
    字数:541000
    语种:中文
  • 出版社:科学出版社
    出版时间:2009-09
  • 所属分类:
  • 定价: ¥70.00元
    售价: ¥55.30元
  • 图书介质:
    按需印刷

  • 购买数量: 件  可供
  • 商品总价:

相同系列
全选

内容介绍

样章试读

用户评论

全部咨询

  本书讲解了SystemVerilog语言的工作原理,介绍了类、随机化和功能覆盖率等测试手段和概念,并且在创建测试平台方面提供了很多引导性的建议。本书借助大量的实例说明SystemVerilog的各种验证方法,以及如何根据实际的应用情况选择最优的方法达到尽可能高的覆盖率。而且,重点演示了如何使用面向对象编程(OOP)的方法建立由覆盖率驱动并且受约束的基本的随机分层测试平台,此外,还论述了SystemVerilog与C语言的接口技术。
  本书可供具有一定Verilog编程基础的电路工程技术人员使用,也可作为高等院校电子类、自动化类、计算机类的学生参考书。
样章试读
  • 暂时还没有任何用户评论
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页

全部咨询(共0条问答)

  • 暂时还没有任何用户咨询内容
总计 0 个记录,共 1 页。 第一页 上一页 下一页 最末页
用户名: 匿名用户
E-mail:
咨询内容:

目录

  • 第1章 验证导论
    1.1 验证流程
    1.1.1 不同层次上的测试
    1.1.2 验证计划
    1.2 验证方法学
    1.3 基本测试平台的功能
    1.4 定向测试
    1.5 方法学基础
    1.6 受约束的随机激励
    1.7 你的随机化对象是什么
    1.7.1 设备和环境配置
    1.7.2 输入数据
    1.7.3 协议异常、错误和违例
    1.7.4 时延和同步
    1.7.5 并行的随机测试
    1.8 功能覆盖率
    1.8.1 从功能覆盖率到激励的反馈
    1.9 测试平台的构件
    1.10 分层的测试平台
    1.10.1 不分层的测试平台
    1.10.2 信号和命令层
    1.10.3 功能层
    1.10.4 场景层
    1.10.5 测试的层次和功能覆盖率
    1.11 建立一个分层的测试平台
    1.11.1 创建一个简单的驱动器
    1.12 仿真环境的阶段
    1.13 最大限度的代码重用
    1.14 测试平台的性能
    1.15 结束语
    第2章 数据类型
    2.1 内建数据类型
    2.1.1 逻辑(logic)类型
    2.1.2 双状态数据类型
    2.2 定宽数组
    2.2.1 定宽数组的声明和初始化
    2.2.2 常量数组
    2.2.3 基本的数组操作——for和foreach
    2.2.4 基本的数组操作——复制和比较
    2.2.5 同时使用位下标和数组下标
    2.2.6 合并数组
    2.2.7 合并数组的例子
    2.2.8 合并数组和非合并数组的选择
    2.3 动态数组
    2.4 队列
    2.5 关联数组
    2.6 链表
    2.7 数组的方法
    2.7.1 数组缩减方法
    2.7.2 数组定位方法
    2.7.3 数组的排序
    2.7.4 使用数组定位方法建立记分板
    2.8 选择存储类型
    2.8.1 灵活性
    2.8.2 存储器用量
    2.8.3 速度
    2.8.4 排序
    2.8.5 选择最优的数据结构
    2.9 使用typedef创建新的类型
    2.10 创建用户自定义结构
    2.10.1 使用struct创建新类型
    2.10.2 对结构进行初始化
    2.10.3 创建可容纳不同类型的联合
    2.10.4 合并结构
    2.10.5 在合并结构和非合并结构之间进行选择
    2.11 类型转换
    2.11.1 静态转换
    2.11.2 动态转换
    2.11.3 流操作符
    2.12 枚举类型
    2.12.1 定义枚举值
    2.12.2 枚举类型的子程序
    2.12.3 枚举类型的转换
    2.13 常量
    2.14 字符串
    2.15 表达式的位宽
    2.16 结束语
    第3章 过程语句和子程序
    3.1 过程语句
    3.2 任务、函数以及void函数
    3.3 任务和函数概述
    3.3.1 在子程序中去掉begin...end
    3.4 子程序参数
    3.4.1 C语言风格的子程序参数
    3.4.2 参数的方向
    3.4.3 高级的参数类型
    3.4.4 参数的缺省值
    3.4.5 采用名字进行参数传递
    3.4.6 常见的代码错误
    3.5 子程序的返回
    3.5.1 返回(return)语句
    3.5.2 从函数中返回一个数组
    3.6 局部数据存储
    3.6.1 自动存储
    3.6.2 变量的初始化
    3.7 时间值
    3.7.1 时间单位和精度
    3.7.2 时间参数
    3.7.3 时间和变量
    3.7.4 $time与$realtime的对比
    3.8 结束语
    第4章 连接设计和测试平台
    4.1 将测试平台和设计分开
    4.1.1 测试平台和DUT之间的通信
    4.1.2 与端口的通信
    4.2 接口
    4.2.1 使用接口来简化连接
    4.2.2 连接接口和端口
    4.2.3 使用modport将接口中的信号分组
    4.2.4 在总线设计中使用modport
    4.2.5 创建接口监视模块
    4.2.6 接口的优缺点
    4.2.7 更多例子和信息
    4.3 激励时序
    4.3.1 使用时钟块控制同步信号的时序
    4.3.2 接口中的logic和wire对比
    4.3.3 Verilog的时序问题
    4.3.4 测试平台—设计间的竞争状态
    4.4.4 程序块(Program Block)和时序区域(Timing Region)
    4.3.6 仿真的结束
    4.3.7 指定设计和测试平台之间的延时
    4.4 接口的驱动和采样
    4.4.1 接口同步
    4.4.2 接口信号采样
    4.4.3 接口信号驱动
    4.4.4 通过时钟块驱动接口信号
    4.4.5 接口中的双向信号
    4.4.6 为什么在程序(program)中不允许使用always块
    4.4.7 时钟发生器
    4.5 将这些模块都连接起来
    4.5.1 端口列表中的接口必须连接
    4.6 顶层作用域
    4.7 程序——模块交互
    4.8 SystemVerilog断言
    4.8.1 立即断言(Immediate Assertion)
    4.8.2 定制断言行为
    4.8.3 并发断言
    4.8.4 断言的进一步探讨
    4.9 四端口的ATM路由器
    4.9.1 使用端口的ATM路由器
    4.9.2 使用端口的ATM顶层网单
    4.9.3 使用接口简化连接
    4.9.4 ATM接口
    4.9.5 使用接口的ATM路由器模型
    4.9.6 使用接口的ATM顶层网单
    4.9.7 使用接口的ATM测试平台
    4.10 ref端口的方向
    4.11 仿真的结束
    4.12 LC3取指模块的定向测试(directed test)
    4.13 结论
    第5章 面向对象编程基础
    5.1 概述
    5.2 考虑名词,而非动词
    5.3 编写第一个类(Class)
    5.4 在哪里定义类
    5.5 OOP术语
    5.6 创建新对象
    5.6.1 没有消息就是好消息
    5.6.2 定制构造函数(Constructor)
    5.6.3 将声明和创建分开
    5.6.4 new()和new[]的区别
    5.6.5 为对象创建一个句柄
    5.7 对象的解除分配(deallocation)
    5.8 使用对象
    5.9 静态变量和全局变量
    5.9.1 简单的静态变量
    5.9.2 通过类名访问静态变量
    5.9.3 静态变量的初始化
    5.9.4 静态方法
    5.10 类的方法
    5.11 在类之外定义方法
    5.12 作用域规则
    5.12.1 this是什么
    5.13 在一个类内使用另一个类
    5.13.1 我的类该做成多大
    5.13.2 编译顺序的问题
    5.14 理解动态对象
    5.14.1 将对象传递给方法
    5.14.2 在任务中修改句柄
    5.14.3 在程序中修改对象
    5.14.4 句柄数组
    5.15 对象的复制
    5.15.1 使用new操作符复制一个对象
    5.15.2 编写自己的简单复制函数
    5.15.3 编写自己的深层复制函数
    5.15.4 使用流操作符从数组到打包对象,或者从打包对象到数组
    5.16 公有和私有
    5.17 题外话
    5.18 建立一个测试平台
    5.19 结论
    第6章 随机化
    6.1 介绍
    6.2 什么需要随机化
    6.2.1 器件配置
    6.2.2 环境配置
    6.2.3 原始输入数据
    6.2.4 封装后的输入数据
    6.2.5 协议异常、错误(error)和违规(violation)
    6.2.6 延时
    6.3 System Verilog中的随机化
    6.3.1 带有随机变量的简单类
    6.3.2 检查随机化(randomize)的结果
    6.3.3 约束求解
    6.3.4 什么可以被随机化
    6.4 约束
    6.4.1 什么是约束
    6.4.2 简单表达式
    6.4.3 等效表达式
    6.4.4 权重分布
    6.4.5 集合(set)成员和inside运算符
    6.4.6 在集合里使用数组
    6.4.7 条件约束
    6.4.8 双向约束
    6.4.9 使用合适的数学运算来提高效率
    6.5 解的概率
    6.5.1 没有约束的类
    6.5.2 关系操作
    6.5.3 关系操作和双向约束
    6.5.4 使用solve...before约束引导概率分布
    6.6 控制多个约束块
    6.7 有效性约束
    6.8 内嵌约束
    6.9 pre_randomize和post_randomize函数
    6.9.1 构造浴缸型分布
    6.9.2 关于void函数
    6.10 随机数函数
    6.11 约束的技巧和技术
    6.11.1 使用变量的约束
    6.11.2 使用非随机值
    6.11.3 用约束检查值的有效性
    6.11.4 随机化个别变量
    6.11.5 打开或关闭约束
    6.11.6 在测试过程中使用内嵌约束
    6.11.7 在测试过程中使用外部约束
    6.11.8 扩展类
    6.12 随机化的常见错误
    6.12.1 小心使用有符号变量
    6.12.2 提高求解器性能的技巧
    6.13 迭代和数组约束
    6.13.1 数组的大小
    6.13.2 元素的和
    6.13.3 数组约束的问题
    6.13.4 约束数组和队列的每一个元素
    6.13.5 产生具有唯一元素值的数组
    6.13.6 随机化句柄数组
    6.14 产生原子激励和场景
    6.14.1 和历史相关的原子发生器
    6.14.2 随机序列
    6.14.3 随机对象数组
    6.14.4 组合序列
    6.15 随机控制
    6.15.1 用randcase建立决策树
    6.16 随机数发生器
    6.16.1 伪随机数发生器
    6.16.2 随机稳定性——多个随机发生器
    6.16.3 随机稳定性和层次化种子
    6.17 随机器件配置
    6.18 结论
    第7章 线程以及线程间的通信
    7.1 线程的使用
    7.1.1 使用fork...join和begin...end
    7.1.2 使用fork...join_none来产生线程
    7.1.3 使用fork...join_any实现线程同步
    7.1.4 在类中创建线程
    7.1.5 动态线程
    7.1.6 线程中的自动变量
    7.1.7 等待所有衍生线程
    7.1.8 在线程间共享变量
    7.2 停止线程
    7.2.1 停止单个线程
    7.2.2 停止多个线程
    7.2.3 禁止被多次调用的任务
    7.3 线程间的通信
    7.4 事件
    7.4.1 在事件的边沿阻塞
    7.4.2 等待事件的触发
    7.4.3 在循环中使用事件
    7.4.4 传递事件
    7.4.5 等待多个事件
    7.5 旗语
    7.5.1 旗语的操作
    7.5.2 带多个钥匙的旗语
    7.6 信箱
    7.6.1 测试平台里的信箱
    7.6.2 定容信箱
    7.6.3 在异步线程间使用信箱通信
    7.6.4 使用定容信箱和探视(peek)来实现线程的同步
    7.6.5 使用信箱和事件来实现线程的同步
    7.6.6 使用两个信箱来实现线程的同步
    7.6.7 其他的同步技术
    7.7 构筑带线程并可实现线程间通信的测试程序
    7.7.1 基本的事务处理器
    7.7.2 配置类
    7.7.3 环境类
    7.7.4 测试程序
    7.8 结束语
    第8章 面向对象编程的高级技巧指南
    8.1 继承简介
    8.1.1 事务基类
    8.1.2 Transaction类的扩展
    8.1.3 更多的OOP术语
    8.1.4 扩展类的构造函数
    8.1.5 驱动类
    8.1.6 简单的发生器类
    8.2 蓝图(Blueprint)模式
    8.2.1 environment类
    8.2.2 一个简单的测试平台
    8.2.3 使用扩展的Transaction类
    8.2.4 使用扩展类改变随机约束
    8.3 类型向下转换(downcasting)和虚方法
    8.3.1 使用$cast作类型向下转换
    8.3.2 虚方法
    8.3.3 签名
    8.4 合成、继承和其他替代的方法
    8.4.1 在合成和继承之间取舍
    8.4.2 合成的问题
    8.4.3 继承的问题
    8.4.4 现实世界中的其他方法
    8.5 对象的复制
    8.5.1 copy_data方法
    8.5.2 指定复制的目标
    8.6 抽象类和纯虚方法
    8.7 回调
    8.7.1 创建一个回调任务
    8.7.2 使用回调来注入干扰
    8.7.3 记分板简介
    8.7.4 与使用回调的记分板进行连接
    8.7.5 使用回调来调试事务处理器
    8.8 参数化的类
    8.8.1 一个简单的堆栈(stack)
    8.8.2 关于参数化类的建议
    8.9 结论
    第9章 功能覆盖率
    9.1 覆盖率的类型
    9.1.1 代码覆盖率
    9.1.2 功能覆盖率
    9.1.3 漏洞率
    9.1.4 断言覆盖率
    9.2 功能覆盖策略
    9.2.1 收集信息而非数据
    9.2.2 只测量你将会使用到的内容
    9.2.3 测量的完备性
    9.3 功能覆盖率的简单例子
    9.4 覆盖组详解
    9.4.1 在类里定义覆盖组
    9.5 覆盖组的触发
    9.5.1 使用回调函数进行采样
    9.5.2 使用事件触发的覆盖组
    9.5.3 使用SystemVerilog断言进行触发
    9.6 数据采样
    9.6.1 个体仓和总体覆盖率
    9.6.2 自动创建仓
    9.6.3 限制自动创建仓的数目
    9.6.4 对表达式进行采样
    9.6.5 使用用户自定义的仓发现漏洞
    9.6.6 命名覆盖点的仓
    9.6.7 条件覆盖率
    9.6.8 为枚举类型创建仓
    9.6.9 翻转覆盖率
    9.6.10 在状态和翻转中使用通配符
    9.6.11 忽略数值
    9.6.12 不合法的仓
    9.6.13 状态机的覆盖率
    9.7 交叉覆盖率
    9.7.1 基本的交叉覆盖率的例子
    9.7.2 对交叉覆盖仓进行标号
    9.7.3 排除掉部分交叉覆盖仓
    9.7.4 从总体覆盖率的度量中排除掉部分覆盖点
    9.7.5 从多个值域中合并数据
    9.7.6 交叉覆盖的替代方式
    9.8 通用的覆盖组
    9.8.1 通过数值传递覆盖组参数
    9.8.2 通过引用传递覆盖组参数
    9.9 覆盖选项
    9.9.1 单个实例的覆盖率
    9.9.2 覆盖组的注释
    9.9.3 覆盖阈值
    9.9.4 打印空仓
    9.9.5 覆盖率目标
    9.10 覆盖率数据的分析
    9.11 在仿真过程中进行覆盖率统计
    9.12 结束语
    第10章 高级接口
    10.1 ATM路由器的虚接口
    10.1.1 只含有物理接口的测试平台
    10.1.2 使用虚接口的测试平台
    10.1.3 将测试平台连接到端口列表中的接口
    10.1.4 使用XMR(跨模块引用)连接接口和测试程序
    10.2 连接到多个不同的设计配置
    10.2.1 网格(Mesh)设计案例
    10.2.2 对虚接口使用typedef
    10.2.3 使用端口传递虚接口数组
    10.3 接口中的过程代码
    10.3.1 并行协议接口
    10.3.2 串行协议接口
    10.3.3 接口代码的局限性
    10.4 结论
    第11章 完整的SystemVerilog测试平台
    11.1 设计单元
    11.2 测试平台的模块
    11.3 修改测试
    11.3.1 第一个测试——只有一个信元的测试
    11.3.2 随机丢弃信元
    11.4 结论
    第12章 SystemVerilog与C语言的接口
    12.1 传递简单的数值
    12.1.1 传递整数和实数类型
    12.1.2 导入(import)声明
    12.1.3 参数方向
    12.1.4 参数类型
    12.1.5 导入数学库函数
    12.2 连接简单的C子程序
    12.2.1 使用静态变量的计数器
    12.2.2 chandle数据类型
    12.2.3 值的压缩(packed)
    12.2.4 四状态数值
    12.2.5 从双状态数值转换到四状态数值
    12.3 调用C++程序
    12.3.1 C++中的计数器
    12.3.2 静态方法
    12.3.3 和事务级(Transaction Level)C++模型通信
    12.4 共享简单数组
    12.4.1 一维数组——双状态
    12.4.2 一维数组——四状态
    12.5 开放数组(open array)
    12.5.1 基本的开放数组
    12.5.2 开放数组的方法
    12.5.3 传递大小未定义的开放数组
    12.5.4 DPI中压缩(packed)的开放数组
    12.6 共享复合类型
    12.6.1 在SystemVerilog和C之间传递结构
    12.6.2 在SystemVerilog和C之间传递字符串
    12.7 纯导入方法和关联导入方法
    12.8 在C中与SystemVerilog通信
    12.8.1 一个简单的导出方法
    12.8.2 调用SystemVerilog函数的C函数
    12.8.3 调用SystemVerilog任务的C任务
    12.8.4 调用对象中的方法
    12.8.5 上下文(context)的含义
    12.8.6 设置导入函数的作用域
    12.9 与其他语言交互
    12.10 结论
帮助中心
公司简介
联系我们
常见问题
新手上路
发票制度
积分说明
购物指南
配送方式
配送时间及费用
配送查询说明
配送范围
快递查询
售后服务
退换货说明
退换货流程
投诉或建议
版权声明
经营资质
营业执照
出版社经营许可证