У меня есть массив интерфейсов.Я знаю, что массив экземпляров и интерфейсов не похож на обычные массивы, которые могут быть проиндексированы с помощью переменной, здесь мы должны индексировать с помощью константы (или использовать блок генерации), и это именно проблема.
Яиспользование генерирующего блока для хранения идентификатора подчиненного получателя, которому ведущий отправляет пакеты в соответствии с предоставленным адресом. Здесь m_ahb - массив мастер-интерфейсов.Я также получил сохраненный идентификатор подчиненного устройства, т. Е. Для мастера 0 идентификатор назначения находится в dest_slave [0], для мастера 1 он находится в dest_slave [1] и т. Д.
Пока здесь все хорошо.
Затем, скажем, для master 0, я использую значение dest_slave [0] для индексации массива подчиненных интерфейсов (s_ahb) и выбираю соответствующий интерфейс назначения для проверки сигнала и использования его вутверждение.Но теперь я получаю сообщение об ошибке «индекс неконстантного массива в массиве экземпляров».
Любая помощь / совет по этому поводу будет принята с благодарностью.Спасибо.
int dest_slave[NUM_MASTERS];
generate
for (genvar i = 0; i < NUM_MASTERS; i++) begin
always_ff @(posedge clk, negedge resetn) begin
if (m_ahb[i].haddr >= 'h0000_0000 && m_ahb[i].haddr <= 'h0000_ffff) dest_slave[i] = 0;
if (m_ahb[i].haddr >= 'h1000_0000 && m_ahb[i].haddr <= 'h1000_ffff) dest_slave[i] = 1;
if (m_ahb[i].haddr >= 'h4000_0000 && m_ahb[i].haddr <= 'h4000_ffff) dest_slave[i] = 2;
end
end
endgenerate
generate
for (genvar i = 0; i < NUM_MASTERS; i++) begin
assert property my_proprty(m_ahb[i].hburst,s_ahb[dest_slave[i]]].hburst); //this line creates error it is not liking s_ahb[dest_slave[i]]
end
endgenerate