UVM系列——factory机制和field_automation机制

系列文章目录

待补充



前言

本节介绍factory机制和field_automation机制


一、factory机制和field_automation机制

1、factory机制

本质:factory机制实际上是对new函数的重载,原生new函数的功能过少,经过factory机制改良后多了许多功能,例如copy、compare、print

对于验证平台内的组件,实例化的方式可以通过new函数,也可以通过factory机制,组件定义时通过uvm_component_utils / uvm_object_utils等宏进行factory的注册,便能使用type_name::type_id::create的方式实例化:

env内:
drv = my_driver::type_id::create("my_drv",this)

另外,factory机制最伟大的地方在于其具有重载机制~(待刷新,尚未理解)可以在创建类的实例的时候根据是否有重载记录来决定是否创建原始的类,还是创建重载的类的实例。

2、field_automation机制

对于组件内的变量可以通过field_automation机制注册,注册后的变量便可以使用UVM的copy、compare、print等函数:

`uvm_component_utils_begin(my_transcation)
	`uvm_field_int(a,UVM_ALL_ON)
	if(condition)begin
	`uvm_field_array_int(b,UVM_ALL_ON)
	end
`uvm_component_utils_end

uvm_field系列宏包括:

bit、int 类型 -> `uvm_field_int(ARG,FLAG) //ARG:变量,FLAG:控制域(后续介绍)

实数类型 -> `uvm_field_real(ARG,FLAG)

枚举类型 -> `uvm_field_enum(ARG,FLAG)

object类型 -> `uvm_field_object(ARG,FLAG)

事件类型 -> `uvm_field_event(ARG,FLAG)

字符类型 -> `uvm_field_string(ARG,FLAG)

动态数组相关

`uvm_field_array_int(ARG,FLAG)

`uvm_field_array_enum(ARG,FLAG)

`uvm_field_array_object(ARG,FLAG)

`uvm_field_array_string(ARG,FLAG)

静态数组相关

`uvm_field_sarray_int(ARG,FLAG)

`uvm_field_sarray_enum(ARG,FLAG)

`uvm_field_sarray_object(ARG,FLAG)

`uvm_field_sarray_string(ARG,FLAG)

队列相关

`uvm_field_queue_int(ARG,FLAG)

`uvm_field_queue_enum(ARG,FLAG)

`uvm_field_queue_object(ARG,FLAG)

`uvm_field_queue_string(ARG,FLAG)

二、field_automation机制的常用函数

三、field_automation机制的控制域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值