Прошло много лет с тех пор, как я написал любой VHDL, поэтому ответ может быть очевиден.Modelsim фатальная ошибка при назначении постоянного значения сигналу в процедуре
Я делаю испытательный стенд для модуля я сделал, и он использует эту процедуру для записи в регистр по тестируемому:
procedure write_data_proc (
constant data_value : in std_logic_vector;
signal write_en : out std_logic;
signal data_in : out std_logic_vector;
signal clk : in std_logic
) is
begin
wait until falling_edge(clk);
write_en <= '1';
data_in <= data_value;
wait until falling_edge(clk);
write_en <= '0';
end procedure;
Он вызывается из этого основного процесса стимуляции:
stim_process: process
begin
mask <= "0000000011111111";
reset <= '1';
wait for 2 ns;
reset <= '0';
wait for 3 ns;
write_data_proc("0000000011110000",write_en,data_in,clk);
write_data_proc("0000000011001100",write_en, data_in,clk);
write_data_proc("0000000010001001",write_en,data_in,clk);
read_bytes(3,8,data_read, data_read_master, clk);
end process;
Modelsim дает мне "FATAL ERROR" на следующей строке в порядке:
data_in <= data_value;
у меня есть сбила с толку мою голову, и я нахожу очень мало, чтобы помочь мне на моем пути. Я надеюсь, что некоторые из вас, ребята, помогут мне понять, что здесь происходит. Если вам нужна дополнительная информация, я был бы рад предоставить больше кода.
Большое спасибо!
В дополнение к [MCVE] (http://stackoverflow.com/help/mcve) может быть полезно фактическое полное сообщение об ошибке и/или указание того, кто является симулятором. Поскольку ответ Брайана демонстрирует, что ваши фрагменты кода выглядят действительными, либо оставляя проблему с реализацией инструмента, либо проблему, внешнюю по отношению к вашим фрагментам кода (последнее, как правило, более вероятно). Создание MCVE для репликации проблемы имеет тенденцию раскрывать проблему. – user1155120