我是靠谱客的博主 自由大神,最近开发中收集的这篇文章主要介绍systemverilog 参数化类及与静态的关系,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

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亦然。

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

注:

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

最后

以上就是自由大神为你收集整理的systemverilog 参数化类及与静态的关系的全部内容,希望文章能够帮你解决systemverilog 参数化类及与静态的关系所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部