2013-07-19 2 views
1

Мне нужно выполнить подключение к портам созданного интерфейса SystemVerilog. Но я не знаю, что такое имена экземпляров сгенерированных интерфейсов, поэтому я не могу понять, как подключиться к ним.Выполнение соединений с интерфейсами, сгенерированными SV

например, если я генерировать код как это:

generate 
    for (genvar abc_if_inst = 0; abc_if_inst < NUM_ABC; abc_if_inst++) 
    abc_if if_abc (.clk(clk), .resetn(resetn)); 
endgenerate 

Как ссылаться на сигналы интерфейса, например, Я предполагаю, что это что-то вроде этого:

.port_x (if_abc_GEN_INST_NUM.port_x), 
.port_y (if_abc_GEN_INST_NUM.port_y), 

ответ

1

Лучше поставить begin - end вокруг содержания для петли и применить ярлык. Если вы не используете метку, тогда будет добавлена ​​автоматическая метка, так как genblk с уникальным номером идентификатора. В Разделе 27.6 от IEEE Std 1800-2012 подробно объясняется работа генерации блоков. Раздел 27 посвящен созданию блоков. Одним из примеров о генерации для-петли на странице 753.

Для вашего кода при условии, попробуйте:

generate 
    for (genvar abc_if_inst=0; abc_if_inst<NUM_ABC; abc_if_inst++) begin : mygen 
    abc_if if_abc (.clk(clk), .resetn(resetn)); 
    end 
endgenerate 

Затем можно подключить с помощью как:

.port_x (mygen[0].if_abc.port_x), 
.port_y (mygen[0].if_abc.port_y), 
// ... 
.port_x (mygen[NUM_ABC-1].if_abc.port_x), 
.port_y (mygen[NUM_ABC-1].if_abc.port_y), 

Обратите внимание, что индекс mygen потребностей быть константой, такой как параметр, другое значение genvar или твердое кодирование.

+0

Отличный ответ, спасибо. Но не стоит ли упоминать имя экземпляра интерфейса? Возможно, что-то вроде: .port_x (mygen [0] .if_abc.port_x), – WestHamster

+0

@WestHamster хороший catch, fixed. – Greg

 Смежные вопросы

  • Нет связанных вопросов^_^