logo
分类于: 计算机基础 互联网 云计算&大数据

简介

UVM实战

UVM实战 9.0分

资源最后更新于 2020-03-29 01:11:21

作者:张强

出版社:出版社机械工业出版社

出版日期:2014-07

ISBN:9787111470199

文件格式: pdf

标签: 互联网 计算机 程序设计 UVM实战

简介· · · · · ·

张强编著的这本《UVM实战》主要介绍UVM 的使用。全书详尽介绍了UVM的factory机制、 sequence机制、phase机制、objection机制及寄存 器模型等的使用。此外,本书还试图引导读者思考 UVM为什么要引入这些机制,从而使读者知其然,更 知其所以然。本书以一个完整的示例开篇,使得读者一开始就 对如何使用UVM搭建验证平台有总体的概念。本书提 供大量示例代码,这些代码都经过实际的运行。全书 内容力求简单易懂,尽量将UVM中的概念与读者已有 的概念联系起来。在第11章还专门介绍了OVM与UVM的 区别,为那些从OVM迁移到UVM的用户提供很大帮助。本书主要面向UVM的初学者及想对UVM追根寻底的 中级用户。针对没有面向对象编程基础的用户,本书 在附录中简要介绍了面向对象的概念及 SystemVerilog中区别于其他编程语言的一些特殊语法。《UVM实战》系张强编著。

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 前言
  2. 第1章 与UVM的第一次接触
  3. 1.1 UVM是什么
  4. 1.1.1 验证在现代IC流程中的位置
  5. 1.1.2 验证的语言
  6. 1.1.3 何谓方法学
  7. 1.1.4 为什么是UVM
  8. 1.1.5 UVM的发展史
  9. 1.2 学了UVM之后能做什么
  10. 1.2.1 验证工程师
  11. 1.2.2 设计工程师
  12. 第2章 一个简单的UVM验证平台
  13. 2.1 验证平台的组成
  14. 2.2 只有driver的验证平台
  15. *2.2.1 最简单的验证平台
  16. *2.2.2 加入factory机制
  17. *2.2.3 加入objection机制
  18. *2.2.4 加入virtual interface
  19. 2.3 为验证平台加入各个组件
  20. *2.3.1 加入transaction
  21. *2.3.2 加入env
  22. *2.3.3 加入monitor
  23. *2.3.4 封装成agent
  24. *2.3.5 加入reference model
  25. *2.3.6 加入scoreboard
  26. *2.3.7 加入field_automation机制
  27. 2.4 UVM的终极大作:sequence
  28. *2.4.1 在验证平台中加入sequencer
  29. *2.4.2 sequence机制
  30. *2.4.3 default_sequence的使用
  31. 2.5 建造测试用例
  32. *2.5.1 加入base_test
  33. *2.5.2 UVM中测试用例的启动
  34. 第3章 UVM基础
  35. 3.1 uvm_component与uvm_object
  36. 3.1.1 uvm_component派生自uvm_object
  37. 3.1.2 常用的派生自uvm_object的类
  38. 3.1.3 常用的派生自uvm_component的类
  39. 3.1.4 与uvm_object相关的宏
  40. 3.1.5 与uvm_component相关的宏
  41. 3.1.6 uvm_component的限制
  42. 3.1.7 uvm_component与uvm_object的二元结构
  43. 3.2 UVM的树形结构
  44. 3.2.1 uvm_component中的parent参数
  45. 3.2.2 UVM树的根
  46. 3.2.3 层次结构相关函数
  47. 3.3 field automation机制
  48. 3.3.1 field automation机制相关的宏
  49. 3.3.2 field automation机制的常用函数
  50. *3.3.3 field automation机制中标志位的使用
  51. *3.3.4 field automation中宏与if的结合
  52. 3.4 UVM中打印信息的控制
  53. *3.4.1 设置打印信息的冗余度阈值
  54. *3.4.2 重载打印信息的严重性
  55. *3.4.3 UVM_ERROR到达一定数量结束仿真
  56. *3.4.4 设置计数的目标
  57. *3.4.5 UVM的断点功能
  58. *3.4.6 将输出信息导入文件中
  59. *3.4.7 控制打印信息的行为
  60. 3.5 config_db机制
  61. 3.5.1 UVM中的路径
  62. 3.5.2 set与get函数的参数
  63. *3.5.3 省略get语句
  64. *3.5.4 跨层次的多重设置
  65. *3.5.5 同一层次的多重设置
  66. *3.5.6 非直线的设置与获取
  67. *3.5.7 config_db机制对通配符的支持
  68. *3.5.8 check_config_usage
  69. 3.5.9 set_config与get_config
  70. 3.5.10 config_db的调试
  71. 第4章 UVM中的TLM1.0通信
  72. 4.1 TLM1.0
  73. 4.1.1 验证平台内部的通信
  74. 4.1.2 TLM的定义
  75. 4.1.3 UVM中的PORT与EXPORT
  76. 4.2 UVM中各种端口的互连
  77. *4.2.1 PORT与EXPORT的连接
  78. *4.2.2 UVM中的IMP
  79. *4.2.3 PORT与IMP的连接
  80. *4.2.4 EXPORT与IMP的连接
  81. *4.2.5 PORT与PORT的连接
  82. *4.2.6 EXPORT与EXPORT的连接
  83. *4.2.7 blocking_get端口的使用
  84. *4.2.8 blocking_transport端口的使用
  85. 4.2.9 nonblocking端口的使用
  86. 4.3 UVM中的通信方式
  87. *4.3.1 UVM中的analysis端口
  88. *4.3.2 一个component内有多个IMP
  89. *4.3.3 使用FIFO通信
  90. 4.3.4 FIFO上的端口及调试
  91. *4.3.5 用FIFO还是用IMP
  92. 第5章 UVM验证平台的运行
  93. 5.1 phase机制
  94. *5.1.1 task phase与function phase
  95. 5.1.2 动态运行phase
  96. *5.1.3 phase的执行顺序
  97. *5.1.4 UVM树的遍历
  98. 5.1.5 super.phase的内容
  99. *5.1.6 build阶段出现UVM_ERROR停止仿真
  100. *5.1.7 phase的跳转
  101. 5.1.8 phase机制的必要性
  102. 5.1.9 phase的调试
  103. 5.1.10 超时退出
  104. 5.2 objection机制
  105. *5.2.1 objection与task phase
  106. *5.2.2 参数phase的必要性
  107. 5.2.3 控制objection的最佳选择
  108. 5.2.4 set_drain_time的使用
  109. *5.2.5 objection的调试
  110. 5.3 domain的应用
  111. 5.3.1 domain简介
  112. *5.3.2 多domain的例子
  113. *5.3.3 多domain中phase的跳转
  114. 第6章 UVM中的sequence
  115. 6.1 sequence基础
  116. 6.1.1 从driver中剥离激励产生功能
  117. *6.1.2 sequence的启动与执行
  118. 6.2 sequence的仲裁机制
  119. *6.2.1 在同一sequencer上启动多个sequence
  120. *6.2.2 sequencer的lock操作
  121. *6.2.3 sequencer的grab操作
  122. 6.2.4 sequence的有效性
  123. 6.3 sequence相关宏及其实现
  124. 6.3.1 uvm_do系列宏
  125. *6.3.2 uvm_create与uvm_send
  126. *6.3.3 uvm_rand_send系列宏
  127. *6.3.4 start_item与finish_item
  128. *6.3.5 pre_do、mid_do与post_do
  129. 6.4 sequence进阶应用
  130. *6.4.1 嵌套的sequence
  131. *6.4.2 在sequence中使用rand类型变量
  132. *6.4.3 transaction类型的匹配
  133. *6.4.4 p_sequencer的使用
  134. *6.4.5 sequence的派生与继承
  135. 6.5 virtual sequence的使用
  136. *6.5.1 带双路输入输出端口的DUT
  137. *6.5.2 sequence之间的简单同步
  138. *6.5.3 sequence之间的复杂同步
  139. 6.5.4 仅在virtual sequence中控制objection
  140. *6.5.5 在sequence中慎用fork join_none
  141. 6.6 在sequence中使用config_db
  142. *6.6.1 在sequence中获取参数
  143. *6.6.2 在sequence中设置参数
  144. *6.6.3 wait_modified的使用
  145. 6.7 response的使用
  146. *6.7.1 put_response与get_response
  147. 6.7.2 response的数量问题
  148. *6.7.3 response handler与另类的response
  149. *6.7.4 rsp与req类型不同
  150. 6.8 sequence library
  151. 6.8.1 随机选择sequence
  152. 6.8.2 控制选择算法
  153. 6.8.3 控制执行次数
  154. 6.8.4 使用sequence_library_cfg
  155. 第7章 UVM中的寄存器模型
  156. 7.1 寄存器模型简介
  157. *7.1.1 带寄存器配置总线的DUT
  158. 7.1.2 需要寄存器模型才能做的事情
  159. 7.1.3 寄存器模型中的基本概念
  160. 7.2 简单的寄存器模型
  161. *7.2.1 只有一个寄存器的寄存器模型
  162. *7.2.2 将寄存器模型集成到验证平台中
  163. *7.2.3 在验证平台中使用寄存器模型
  164. 7.3 后门访问与前门访问
  165. *7.3.1 UVM中前门访问的实现
  166. 7.3.2 后门访问操作的定义
  167. *7.3.3 使用interface进行后门访问操作
  168. 7.3.4 UVM中后门访问操作的实现:DPI+VPI
  169. *7.3.5 UVM中后门访问操作接口
  170. 7.4 复杂的寄存器模型
  171. *7.4.1 层次化的寄存器模型
  172. *7.4.2 reg_file的作用
  173. *7.4.3 多个域的寄存器
  174. *7.4.4 多个地址的寄存器
  175. *7.4.5 加入存储器
  176. 7.5 寄存器模型对DUT的模拟
  177. 7.5.1 期望值与镜像值
  178. 7.5.2 常用操作及其对期望值和镜像值的影响
  179. 7.6 寄存器模型中一些内建的sequence
  180. *7.6.1 检查后门访问中hdl路径的sequence
  181. *7.6.2 检查默认值的sequence
  182. *7.6.3 检查读写功能的sequence
  183. 7.7 寄存器模型的高级用法
  184. *7.7.1 使用reg_predictor
  185. *7.7.2 使用UVM_PREDICT_DIRECT功能与mirror操作
  186. *7.7.3 寄存器模型的随机化与update
  187. 7.7.4 扩展位宽
  188. 7.8 寄存器模型的其他常用函数
  189. 7.8.1 get_root_blocks
  190. 7.8.2 get_reg_by_offset函数
  191. 第8章 UVM中的factory机制
  192. 8.1 SystemVerilog对重载的支持
  193. *8.1.1 任务与函数的重载
  194. *8.1.2 约束的重载
  195. 8.2 使用factory机制进行重载
  196. *8.2.1 factory机制式的重载
  197. *8.2.2 重载的方式及种类
  198. *8.2.3 复杂的重载
  199. *8.2.4 factory机制的调试
  200. 8.3 常用的重载
  201. *8.3.1 重载transaction
  202. *8.3.2 重载sequence
  203. *8.3.3 重载component
  204. 8.3.4 重载driver以实现所有的测试用例
  205. 8.4 factory机制的实现
  206. 8.4.1 创建一个类的实例的方法
  207. *8.4.2 根据字符串来创建一个类
  208. 8.4.3 用factory机制创建实例的接口
  209. 8.4.4 factory机制的本质
  210. 第9章 UVM中代码的可重用性
  211. 9.1 callback机制
  212. 9.1.1 广义的callback函数
  213. 9.1.2 callback机制的必要性
  214. 9.1.3 UVM中callback机制的原理
  215. *9.1.4 callback机制的使用
  216. *9.1.5 子类继承父类的callback机制
  217. 9.1.6 使用callback函数/任务来实现所有的测试用例
  218. 9.1.7 callback机制、sequence机制和factory机制
  219. 9.2 功能的模块化:小而美
  220. 9.2.1 Linux的设计哲学:小而美
  221. 9.2.2 小而美与factory机制的重载
  222. 9.2.3 放弃建造强大sequence的想法
  223. 9.3 参数化的类
  224. 9.3.1 参数化类的必要性
  225. *9.3.2 UVM对参数化类的支持
  226. 9.4 模块级到芯片级的代码重用
  227. *9.4.1 基于env的重用
  228. *9.4.2 寄存器模型的重用
  229. 9.4.3 virtual sequence与virtual sequencer
  230. 第10章 UVM高级应用
  231. 10.1 interface
  232. 10.1.1 interface实现driver的部分功能
  233. *10.1.2 可变时钟
  234. 10.2 layer sequence
  235. *10.2.1 复杂sequence的简单化
  236. *10.2.2 layer sequence的示例
  237. *10.2.3 layer sequence与try_next_item
  238. *10.2.4 错峰技术的使用
  239. 10.3 sequence的其他问题
  240. *10.3.1 心跳功能的实现
  241. 10.3.2 只将virtual_sequence设置为default_sequence
  242. 10.3.3 disable fork语句对原子操作的影响
  243. 10.4 DUT参数的随机化
  244. 10.4.1 使用寄存器模型随机化参数
  245. *10.4.2 使用单独的参数类
  246. 10.5 聚合参数
  247. 10.5.1 聚合参数的定义
  248. 10.5.2 聚合参数的优势与问题
  249. 10.6 config_db
  250. 10.6.1 换一个phase使用config_db
  251. *10.6.2 config_db的替代者
  252. *10.6.3 set函数的第二个参数的检查
  253. 第11章 OVM到UVM的迁移
  254. 11.1 对等的迁移
  255. 11.2 一些过时的用法
  256. *11.2.1 sequence与sequencer的factory机制实现
  257. 11.2.2 sequence的启动与uvm_test_done
  258. *11.2.3 手动调用build_phase
  259. 11.2.4 纯净的UVM环境
  260. 附录A SystemVerilog使用简介
  261. A.1 结构体的使用
  262. A.2 从结构体到类
  263. A.3 类的封装
  264. A.4 类的继承
  265. A.5 类的多态
  266. A.6 randomize与constraint
  267. 附录B DUT代码清单
  268. 附录C UVM命令行参数汇总
  269. 附录D UVM常用宏汇总