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


posted @ 2024-03-14 13:39  Icer_Newer  阅读(71)  评论(0编辑  收藏  举报