6

このコードをコンパイルできません:

      function integer[$] get_register_name;
                integer ret[$];
                ret.push_back(1);
                ret.push_back(2);
                return ret;
      endfunction

関数からキューを返すことは可能ですか?

4

2 に答える 2

19

はい、関数からキューを返すことができます。ただし、これを行うには、を使用して新しい型を定義し、typedefその型を返す必要があります。

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

typedefでは、[$]は型名の後にあり、キュー要素の型は型名の前にあることに注意してください。

于 2012-12-20T02:42:22.507 に答える
1

そこに私のために働いたコードの例があります...

typedef bit[31:0] bitQueue[$];

// 1番目と2番目のキューをマージし、//2番目のキューを最初のキューの最後に追加します

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
于 2017-01-23T12:46:36.110 に答える