Как создать массив интерфейса разного размера в системном verilog - PullRequest
0 голосов
/ 06 января 2020

У меня есть настраиваемый модуль, который содержит интерфейс для одного из портов. Я использую оператор Generate и a для l oop для создания различной конфигурации каждого экземпляра модуля, и я вывожу порты интерфейса в массиве. Моя проблема заключается в том, что отдельные интерфейсы различаются в зависимости от конфигурации каждого экземпляра модуля. Есть ли способ настроить каждый интерфейс в массиве индивидуально? Вот как я правильно настраиваю интерфейс

test_if    #(.NUM_CUTS(NUM_CUTS_WRITE_CLIENT),.AW(AW_WRITE_CLIENT),.DW(DW_WRITE_CLIENT)) mem_test_if [NUM_OF_MEMS-1:0]();

Возможно ли сделать что-то подобное с массивом интерфейсов

test_if    #(.NUM_CUTS(2),.AW(AW_WRITE_CLIENT),.DW(DW_WRITE_CLIENT)) mem_test_if [0]();
test_if    #(.NUM_CUTS(4),.AW(AW_WRITE_CLIENT),.DW(DW_WRITE_CLIENT)) mem_test_if [1]();
test_if    #(.NUM_CUTS(6),.AW(AW_WRITE_CLIENT),.DW(DW_WRITE_CLIENT)) mem_test_if [2]();

Я не хочу создавать экземпляр каждого модуля Экземпляр отдельно от оператора создания.

1 Ответ

2 голосов
/ 06 января 2020

Вы должны быть в состоянии сделать это вложенным в ваш генератор

for(genvar MEM=0;MEM<NO_OF_MEMS;MEM++) begin : ID
   test_if    #(.NUM_CUTS((MEM+1)*2),.AW(AW_WRITE_CLIENT),.DW(DW_WRITE_CLIENT)) mem_test_if();
end
...