systemverilog 参数化类及与静态的关系

本文通过实例介绍了SystemVerilog中参数化类的使用以及静态变量的声明和作用。示例展示了不同参数化类实例对静态变量`counter`的影响,解释了静态变量在同一程序中的唯一性,以及当参数类参数不同时,它们被视为不同的类。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以两个例子说明参数化的类及声明静态变量时的情况:

eg:

program param_stack;
class stack #(type T = int);
  int m_cnt;
  static int counter = 2;
 
  function new;
    m_cnt = counter++;
  endfunction: new 
 
endclass: stack

class stacked extends stack #(real);
 
endclass: stacked


typedef stack #(byte) stack_byte;
typedef stack #() stact_int;


 stack_byte S1 = new();
  stack_byte S2 = new();
  stack S3 = new();
  stack #(bit) S4 = new();
  stacked S5 = new();


initial begin 
  $display ("Counter value of S1 instance = %0d", stack #(byte)::counter);
 $display ("Counter value of S2 instance = %0d", stack_byte:: counter);
 $display ("Counter value of S3 instance = %0d", stack #()::counter);
 $display ("Counter value of S4 instance = %0d", stack#(bit)::counter);
 $display ("Counter value of S5 instance = %0d", stacked::counter);
end
 
endprogram: param_stack

打印的值依次为:

3

4

3

3

3

解释:虽然静态变量只会存在一个副本。

由于S1和S2均由stack_byte创建,所以S1时counter的值为3,S2为4;

S3则是由默认参数类创建,等同于程序中的stack_int,counter值为3;

S4则是type为bit的类创建,counter同样为3;

S5亦然。

即当参数类的参数不同时,他们是不同的类。

注:

需要注意参数化类引用静态变量的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值