0
私は、いくつかのSPIインターフェイスを備えたSPIスレーブBFMモジュールを作成します。私はActive-HDL 9.1を使用します。私は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は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
私のタスクでいくつかのbfm_spi_1_iブロックを自分のタスクで選択できますか?Reset()?このBFMモジュールはありません、あなたが生成する内部で)各リセット(呼び出す実装とのインターフェイスや抽象クラスを作成する何ができるかimplemantions