У меня есть следующий код:
library IEEE;
use IEEE.std_logic_1164.all;
entity static_test is
end entity;
architecture sim of static_test is
type rec_t is record
sl : std_logic;
slv : std_logic_vector(6 downto 0);
end record;
type rec_ptr_t is access rec_t;
begin
process
variable ptr : rec_ptr_t;
begin
ptr := new rec_t;
(ptr.sl, ptr.slv) := std_logic_vector'(x"00");
wait;
end process;
end architecture sim;
И я получаю следующие ошибки от ActiveHDL:
Ошибка: COMP96_0309: static_test.vhd: (28, 6): Выражение в ассоциации элементов агрегата должно быть локально c именем, обозначающим переменную.
Ошибка: COMP96_0309: static_test.vhd: (28, 14): Выражение в ассоциации элементов агрегата должно быть локально stati c имя, которое обозначает переменную.
Я не могу найти раздел LRM, в котором указано, что совокупное назначение должно быть локально stati c, и я также не понимаю, почему ptr.sl
или ptr.slv
локально не считается c. Длина известна в типе. Просто ли такой тип доступа никогда не может считаться локально установленным c (для меня это имеет смысл).