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
나는 "이 오류"주의하는 라인에 대한 컴파일 컴파일러 쓰기 오류, 중 : 이것은 내 코드의 일부이다.
오류 메시지 : 변수 인덱스 블록 항목 선택을 생성은 지원되지 않습니다 : 나는 일정한 수의 난을 교체 할 경우 내가
, 컴파일해야 확인합니다.
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 블록을 어떻게 선택할 수 있습니까? 이 BFM 모듈이없는 사용자가 생성 내부) 각 리셋 (호출하는 구현 인터페이스 또는 추상 클래스를 생성 할 수있는 일 implemantions