Reputation: 2901
I can't compile this code:
function integer[$] get_register_name;
integer ret[$];
ret.push_back(1);
ret.push_back(2);
return ret;
endfunction
Is it possible to return a queue from a function?
Upvotes: 6
Views: 23705
Reputation: 11
Down there is the example of code that worked for me....
typedef bit[31:0] bitQueue[$];
//Merges first and second queue, //with second queue being added to the end of first
function bitQueue mergeEnd(bit[31:0] queue_1[$], bit[31:0] queue_2[$]);
foreach (queue_2[i]) queue_1.push_back(queue_2[i]);
return queue_1;
endfunction
Upvotes: 1
Reputation: 6978
Yes, you can return a queue from a function. But to do so you must define a new type using typedef
and return that type.
typedef integer queue_of_int[$];
function queue_of_int get_register_name();
queue_of_int ret;
ret.push_back(1);
ret.push_back(2);
return ret;
endfunction
Note that in the typedef the [$]
comes after the type name, while the queue element type is before the type name.
Upvotes: 22