Я хотел бы контролировать разные поддиапазоны векторов из разных процессов.
type t_regs is array (integer range <>) of std_logic_vector(15 downto 0);
...
signal regs : t_regs(NUM_REGS-1 downto 0);
...
process (clk, nreset)
begin
for i in 0 to NUM_REGS-1 loop
if (nreset = '0') then
regs(i)(15) <= '1';
elsif falling_edge(clk) then
-- set regs(i)(15)
end if;
end loop;
end process;
process (clk, nreset)
begin
for i in 0 to NUM_REGS-1 loop
if (nreset = '0') then
regs(i)(14 downto 10) <= (others => '0');
elsif falling_edge(clk) then
-- set regs(i)(14 downto 10)
end if;
end loop;
end process;
-- Set other bits of regs
...
Несмотря на то, что поддиапазоны векторов, устанавливаемых в каждом процессе, не перекрываются, при моделировании этого кода значения reg не определены. Я ожидал, что каждый бит регистра будет рассматриваться как независимый триггер.