Я пишу модуль подчиненного модуля SPI с несколькими интерфейсами SPI. Я использую Active-HDL 9.1. Я генерирую несколько блоков (spi slaves) в моем коде SystemVerilog. Я также записываю функции, в которых я читаю и сбрасываю данные в этих блоках. Это часть моего кода:SystemVerilog Индекс переменной в генерации элементов блока
module bfm_spi(itf_spi);
parameter C_NUM = 1;
parameter C_DATA_WIDTH = 32;
spi_interface itf_spi [C_NUM];
genvar i;
generate
for(i=0; i < C_NUM; i++) begin : bfm_spi_arr
bfm_spi_1 #(.C_DATA_WIDTH(C_DATA_WIDTH)) bfm_spi_1_i (itf_spi[i]);
end
endgenerate
/**
* Reset all input buffers
* */
task Reset;
integer i;
for(i = 0; i < C_NUM; i++) bfm_spi_arr[i].bfm_spi_1_i.Reset(); //Error this
endtask // Reset
Во время записи ошибки компилятора при компиляции для строки, в которой я отмечаю «Ошибка это».
Сообщение об ошибке: Сформировать выбор блока элемента с переменным индексом не поддерживается: я
Если я заменю я с постоянным числом, complile ОК.
module bfm_spi(itf_spi);
parameter C_NUM = 1;
parameter C_DATA_WIDTH = 32;
spi_interface itf_spi [C_NUM];
genvar i;
generate
for(i=0; i < C_NUM; i++) begin : bfm_spi_arr
bfm_spi_1 #(.C_DATA_WIDTH(C_DATA_WIDTH)) bfm_spi_1_i (itf_spi[i]);
end
endgenerate
/**
* Reset all input buffers
* */
task Reset;
integer i;
for(i = 0; i < C_NUM; i++) bfm_spi_arr[0].bfm_spi_1_i.Reset(); //OK
endtask // Reset
Как я могу выбрать несколько блоков bfm_spi_1_i в генерации в моей задаче Reset()? Этот модуль BFM используется только для моделирования, а не для implemantions