このコードをコンパイルできません:
function integer[$] get_register_name;
integer ret[$];
ret.push_back(1);
ret.push_back(2);
return ret;
endfunction
関数からキューを返すことは可能ですか?
このコードをコンパイルできません:
function integer[$] get_register_name;
integer ret[$];
ret.push_back(1);
ret.push_back(2);
return ret;
endfunction
関数からキューを返すことは可能ですか?
はい、関数からキューを返すことができます。ただし、これを行うには、を使用して新しい型を定義し、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では、[$]
は型名の後にあり、キュー要素の型は型名の前にあることに注意してください。
そこに私のために働いたコードの例があります...
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