《UVM 实战(卷1)》 学习笔记 看了第1/2/3/4/5/6/8/9.1 这几个章节。 第一章是综述,第二章是一个具体的例子,学习笔记从第三章相关内容开始。 我个人觉得UVM 重要的部分(特点的部分): 1) factory 机制(override config_db) 2) TLM 传递 3) phase 机制 4) sequence-sequencer 以及virtual seq/sqr 内容中的截图基本来自于 UVM 源代码、书自带的例子和《uvm1.1 应用指南及源代码分析》这个PDF 里的。 需要结合书(《UVM 实战(卷1)》第1 版)来看这个笔记。 第3 章 UVM 基础 3.1 uvm_component和 uvm_object 常用的类名字: 这个图是从作者张强的《uvm1.1 应用指南及源代码分析》里截得,不如书上 3.1.1 里的图好。uvm_sequencer 也是代码里必须有的,所以我加了uvm_sequencer uvm_void 是一个空的虚类。在 src/base/uvm_misc.svh 中定义: 红框的是我们搭 testbench 的时候用的比较多的基类。 常用的uvm_object 派生类: sequencer 给 driver 的transaction 要 派 生 自 uvm_sequence_item , 不 要 派 生 自uvm_transaction 所有的sequence 要派生自 uvm_sequence 或者 uvm_sequence 的派生类,可以理解为sequence 是sequence_item 的组合(集合)。 driver 向 sequencer 索要 item,sequencer 检查是否有 sequence 要发送 item,当发现有 item 待发送时,就把这个item 发给 driver. 常用的uvm_component 派生类: 所有的driver 要派生自 uvm_driver. driver 用来把 sequence_item 中的信息驱动到DUT 端口上,从 transaction-level 向 signal-level 的转换。 uvm_driver 需要参数(REQ RSP),比uvm_component增 加 了 几 个成 员 。 重 要 的是seq_item_port和req/rsp. (src/comps/uvm_driver.svh) monitor/scoreboard 派生自 uvm_monitor 和uvm_scoreboard, 但是uvm_monitor 和uvm_scoreboard 并没有在uvm_component 基础上做扩展。 src/comps/uvm_monitor.svh sequencer 要派生自uvm_sequencer. sequencer 做了很多扩展,但是如果我们自己写的sequencer 里没有增加成员的话,可以直接写如下代码: 因为 sequencer 在agent 中例化,所以一般写在agent 类文件里。 reference_model 派生自uvm_component. agent 要派生自uvm_agent. uvm_agent 里多了一个 is_active 的成员。一般根...