UVM系列—uvm_component&uvm_object

UVM系列



前言

很久没写文了,决定把之前学习的UVM白皮书做一个总结,系列会持续更新

本文主要介绍uvm_component 和 uvm_object的基本概念,以及区别和联系


一、派生基础类

1. uvm_object 是最基础的类,uvm_component 派生自uvm_object

那么说明uvm_component 拥有的特性比 uvm_object 来得丰富。其中有两大特性是 uvm_object 所没有的:

  • 通过new的时候指定parent参数形成树形结构
  • phase自动执行

但是uvm_component 作为UVM树形结构的节点,因此失去了一些uvm_object 的特性:

  • 无法使用clone函数(分配内存空间并把另一个实例复制到新的内存空间),因为新clone出来的类无法指定parent。但是可以使用copy()函数(clone=new+copy)

经典平台中,除 uvm_transcation\ uvm_sequence_item\ uvm_sequence \ uvm_phase,其他基本都是派生自 uvm_component:

请添加图片描述

2. 派生自uvm_object

  • uvm_sequence_item: 平台的transcation派生于uvm_sequence_item,而不是uvm_transcation
  • uvm_sequence: 所有的 sequence 要派生自uvm_sequence
  • config: 用于平台参数整合控制
  • uvm_reg_item: 派生自uvm_sequence_item,用于寄存器模型
  • uvm_reg_map、uvm_reg_field、uvm_reg、uvm_reg_block等寄存器模型的其他类派生自uvm_object
  • uvm_phase: 派生自uvm_object,用于控制平台行为

3. 派生自uvm_component

  • uvm_driver: 所有的driver派生自uvm_driver,相较uvm_component 没有过多拓展,多了几个成员变量
  • uvm_monitor:所有的monitor派生自uvm_monitor,相较uvm_component 几乎没有拓展
  • uvm_sequencer:所有的sequencer派生自uvm_sequencer,相较uvm_componen有拓展多
  • uvm_scoreboard:一般的scoreboard派生自uvm_scoreboard,相较uvm_componen拓展不多
  • rm: 直接派生自uvm_component,没有什么通用方法因此
  • uvm_agent: 所有的agent派生自uvm_agent
  • uvm_env: 所有的env派生自uvm_env
  • uvm_test: 所有的test派生自uvm_test或者其派生类(base_tc)

二、相关宏

1. uvm_object相关factory宏

  • `uvm_object_utils: 将一个直接或者间接派生自uvm_object的类注册到factory
  • `uvm_object_param_utils: 将一个直接或者间接派生自uvm_object的参数化的类注册到factory:class A #(int a) extends uvm_object

对于类中某些成员变量需要使用field_automation机制的类(下篇介绍),使用下述宏注册:

  • `uvm_object_utils_begin(myclass)
  • `uvm_object_utils_end
  • `uvm_object_param_utils_begin(myclass)
  • `uvm_object_param_utils_end

1. uvm_component相关factory宏

  • `uvm_component_utils: 将一个直接或者间接派生自uvm_component的类注册到factory
  • `uvm_component_param_utils: 将一个直接或者间接派生自uvm_component的参数化的类注册到factory

对于类中某些成员变量需要使用field_automation机制的类(下篇介绍),使用下述宏注册:

  • `uvm_component_utils_begin(myclass)
  • `uvm_component_utils_end
  • `uvm_component_param_utils_begin(myclass)
  • `uvm_component_param_utils_end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值