In reply to saritr:
Hi saritr,
Consider following sample example to understand issue.
In your code “my_randomize” operates on queue list ‘rand_int_list’ but not directly on passed ref arguments [mem_int, mem_int_a].
If you want randomized values to get reflected inside your foo() method.
Option1 : Perform randomization on class objects instead using queue of int/bit type.
Option2 : Do randomization directly on [mem_int, mem_int_a] variables instead
storing them first in queue and then randomizing queue elements.
typedef class test_ext;
class tets_c;
int a=6;
int int_q[$];
test_ext test_q[$];
function add_int(ref int val);
int_q.push_back(val);
endfunction
function randomize_int();
int_q[0]=$urandom_range(11,15);
endfunction
function add_obj(ref test_ext obj);
test_q.push_back(obj);
endfunction
function randomize_class();
test_q[0].a=$urandom_range(21,25);
endfunction
endclass
class test_ext extends tets_c;
function new() ;
this.a=8;
endfunction
function foo();
$display("int_q a %0d Actual a %0d",int_q[0], a);
$display("test_q a %0d Actual a %0d",test_q[0].a,a);
endfunction
endclass
module m;
test_ext t;
initial begin
t=new();
t.add_int(t.a);
t.add_obj(t);
t.foo();
t.randomize_int();
t.foo();
t.randomize_class();
t.foo();
end
endmodule