2016-12-18 2 views

答えて

1

[*]は、ダイナミックアレイの正しい構文ではありません。[]を使用してください。

配列はディメンションでのみ動的になります。したがって、bit [] mem_arrayを持つことはできませんが、bit mem_array[]が必要です。

最後に、参照渡しを使用する関数は静的な有効期間を持つことはできません。つまり、と自動と宣言する必要があります。

function automatic void foo_arr_bit (int seed, ref bit mem[], string mem_name); 
    for (int i=0; i< mem.size(); i++) 
    mem[i] = my_randomize_int(seed, mem[i], mem_name);  
endfunction: foo_arr_bit 

編集:しかし、これらの変更を行っても、大きな問題に直面します。参照を渡すと厳密な型指定が必要になります。キャストは許可されていませんので、タイプ変換に関する問題があると思います。

さらに、参照渡しは実際には必要ありません。代わりにinoutを使用してください。

+0

私の入力は、パックされていない配列です。 – sara8d

+0

Systemverilogには動的なパックド配列がありません。パラメータ化可能なクラスを使用して関数をカプセル化することは、解決策になります。それ以上のことをここで:http://forums.accellera.org/topic/1177-how-to-pass-variable-sized-packed-arguments-to-a-taskfunction/ またはSIZEを関数に渡して、十分に大きなパック配列。 – Hida

関連する問題