UVM学习笔记——工厂机制1

6 篇文章 5 订阅

一、工厂的优点
因为在大多数时候验证工程师很多环境,这些环境很多在大体上是相似的,但又有一些方面有不同,因此就需要使用共通部分,而定制不同环境的独特部分,而UVM的factory机制提供了一个方法,可以更为方便在不改变环境结构层次的前提下的定制个环境的独特部分,即替换验证环境中已注册的类或者实例,这也就要求我们定义的类都要经过工厂来产生,在工厂注册。
二、使用工厂模式的步骤
1、注册
UVM提供了多个工厂机制的注册宏,下面给出一种我常用的注册宏。
`uvm_{component,object}_utils(class_type_name),
在工厂注册的类一般分为两大类型,即 uvm_componet 和 uvm_object。

1 uvm_object类型:
   class obj extends uvm_object;
   `uvm_object_utlis(obj)
   function new(string name='obj');
   	 super.new(name);
   	 $display($sfortmatf("%s is ceated",name));
  endfunction:new

例2 uvm_componet类型:
    class comp extends uvm_componet;
   `uvm_componet_utlis(obj)
   function new(string name='comp',uvm_componet parent=null);
    super.new(name,parent);
    $display($sfortmatf("%s is ceated",name));
    endfunction:new
 注:以上两个代码的注册宏和new()函数是范式,结构和参数都不可更改。

2、实例化对象

1)创建uvm_object类
com_type::type_id::creat(string name)

2)创建uvm_componet
com_type::type_id::creat(string name,uvm_componet parent)

注:
1、string_name为实例的类名,uvm_parent 为父类 
2、如果直接使用new()来创建对象没有使用工厂来创建对象,使得不能用工厂带来的优势,UVM要求用工厂方式
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值