0
我編寫了帶有多個SPI接口的SPI從站BFM模塊。我使用Active-HDL 9.1。我在我的SystemVerilog代碼中生成了幾個塊(spi奴隸)。我還編寫了在這些塊中讀取和重置數據的函數。這是我的代碼的一部分: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
在一個編譯器編譯器寫入錯誤的行,其中我注意到「錯誤this」。是 不支持生成塊項選擇具有可變指數::
錯誤消息我
如果我與恆定數目的取代我,請編譯是OK。
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
如何在我的任務Reset()中生成多個bfm_spi_1_i塊?這BFM模塊僅用於模擬,而不是implemantions