概述
以两个例子说明参数化的类及声明静态变量时的情况:
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 参数化类及与静态的关系所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复