SystemVerilog——类的基本概念

 

属性    ( property ):   也就是类中定义的数据(变量)成员。

方法 ( method) :也就是类中定义的函数或者任务。

句柄   (handle): 也就是指向对象的指针,即该对象的地址入口。

(1)定义类,例如下面定义的类就是提供了一个包对象的模板:
          class packet;

  ...

  endclass

  class long_packet;

  ...

  endclass

(2)在module或者program、class、funtion、task 等地方声明对象。

   下面声明了三个对象,两个是packet的对象,一个是 long_packet的对象。

packet my_packet; 

packet packet_array[32];

long_packet my_1_packet;
对象的标识符( my_packet/ packet_array/my_l_packet)是该例化对象的句柄。当该对象被创建的时候,该句柄才有效,默认情况下句柄将为空 ( null)。

(3)通过构造函数new创建对象的例化

   my_packet = new( 168);

   my_1_packet = new( ) ;


类、对象以及句柄和 new之间的关系如下图1所示,代码如下:
ether packet e1_pkt,e2_pkt;

initia1 begin
          el_pkt = new( 164);

 e2_pkt = new(88);

 end
 

图1 类、对象、句柄和构造函数

 

在验证平台中,类和对象对于激励的产生和数据的高层抽象很有帮助。类也可以用来封装一个通用的操作,从而在验证平台的不同地方重用。例如,以太网的媒体介入层有-个激励产生器在MII端和主机端。又如,在一个四个端口的以太网交换机中,验证平台需要四个事务处理器( transactor),全部都是一样的功能而且并行运行。我们可以定义一个xactor的类并且为每个端口例化一次。
       对象可以和其他数据类型一样被声明。SystemVerilog支持单个例化或者以数组的方式例化。下面就是一个包对象的动态数组:
                                                                                                             ether_pkt pkt_list[l;

创建了一个pkt_list的标识符(或成为句柄),在声明的过程中这个句柄是空的。

一个对象的例化是在它调用构造函数的时候被创建,构造函数为该对象分配内存控件和并给句柄赋予有效值。

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值