я следующую функцию:systemVeilog - передать массив неизвестного размера
function 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
Я вызвать функцию:
foo_arr_bit(seed, data_bit, "data_bit");
Где data_bit может быть: бит [1: 0]/бит [2: 0]/бит [3: 0]/бит [4: 0]/бит [5: 0] и т. Д.
При попытке скомпилировать я получил следующую ошибку: рядом с "[": ошибка синтаксиса, неожиданный [, ожидая IDENTIFIER или TYPE_IDENTIFIER или NETTYPE_IDENTIFIER.
мой вход упакованный массив, а не непечатан. – sara8d
В Systemverilog нет динамических упакованных массивов. Использование параметризуемого класса для инкапсулирования вашей функции может быть решением. Подробнее об этом здесь: http://forums.accellera.org/topic/1177-how-to-pass-variable-sized-packed-arguments-to-a-taskfunction/ Или просто передайте SIZE функции и у вас есть достаточно большой упакованной решеткой. – Hida