6

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?

e19293001
  • 2,783
  • 9
  • 42
  • 54

2 Answers2

21

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.

Community
  • 1
  • 1
dwikle
  • 6,820
  • 1
  • 28
  • 38
1

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