Инструменту linting не нравится следующий блок кода, потому что он думает, что сигналы, объявленные внутри for..generate scope, имеют несколько драйверов.Интуитивно понятно, что я ожидаю, что для каждого объявления сигнала будет существовать один экземпляр сигнала для каждой итерации цикла.
Не сломан ли линтер или сломан язык VHDL?
library IEEE;
use IEEE.std_logic_1164.all;
entity demo is
end demo;
architecture rtl of demo is
type i_arr_t is array(integer range <>) of integer;
signal results: i_arr_t(0 to 1);
signal dot : integer;
begin
g_gen : for ii in 0 to 1 generate
signal sig : integer;
begin
sig <= ii * 2;
results(ii) <= sig;
end generate;
dot <= results(0) + results(1);
end rtl;
Сообщение об ошибке: Non-resolved signal 'sig' has multiple drivers