UVM - 4 (UVM验证平台)
Review
- this - 指的是当前的类
- 双冒号进行索引 - 静态方法或者是静态变量
- 在类之外写函数也可以使用双冒号进行索引,双冒号指定作用域
- 所有的phaze是UVM中已经定义好的,不需要显式调用
TLM - 事务级传输
- UVM中组件之间的通信使用的是TLM,不使用mailbox
uvm_sequence_item class
- 不属于uvm的组件,不会进行例化
- TLM相关的类也不是uvm组件
- 只有从uvm_component扩展出来的类才叫做组件,才会有phaze的概念
- 所有的uvm的class都必须添加宏,不同的宏有不同的含义
class transaction extends uvm_sequence_item;
// 将transaction,当前的类传递给factory的restry
`uvm_object_utils_begin(transaction)
// UVM_ALL_ON - 宏创建的内置方法,对变量都适用
`uvm_filed_int(addr,UVM_ALL_ON);
`uvm_filed_quene_int(data,UVM_ALL_ON);
`uvm_object_utils_end
endclass
// 宏创建了数据操作方法,copy(),print()等
// UVM_ALL_ON - 打开之后,可以使用tr.print()打印数据
uvm_sequence class
- sequence中的body产生事务
- run phaze中定义了很多task,会消耗仿真时间,其他的phaze都是function,不消耗仿真时间,run phaze执行完成之后,仿真就结束了
- objection机制用于同步时序
uvm_sequencer_class
uvm_driver class
uvm_agent class
uvm_env class
- env中不会选择sequence,只是例化
uvm_test class
test program
uvm消息服务
UVM消息的过滤
UVM默认的仿真过程控制
命令行处理器
在仿真时调用objection
UVM基类树
UVM基类树
VCS Makefile