Странная ошибка при запуске тестового стенда, я никогда раньше такого не видел. Я пытаюсь смоделировать 8-битный калькулятор с 4 регистрами. Калькулятор имеет 8-битные инструкции для сложения, вычитания, ветвления на равных, немедленной загрузки и печати на монитор. Я проверил, чтобы убедиться, что я не нахожусь в любых бесконечных циклах. Я проводил исследования в Интернете, и, похоже, нет особых причин, по которым у меня может быть эта ошибка.
Я трижды проверил наличие циклов, утечек памяти, а также попытался увеличить кадр стека. Никто еще не удался. Использование команд ghdl -a, -e и -r для анализа, компиляции и запуска.
'' '
architecture structural of calculator_tb is
component calculator is
port(
I : in std_logic_vector(7 downto 0); --instruction input
clk : in std_logic
);
end component calculator;
signal I : std_logic_vector(7 downto 0);
signal clk : std_logic;
begin
calculator_0 : calculator port map(I, clk);
process
file instruction_file : text is in "instructions.txt"; --Instructions in text(ASCII) file.
variable instruction_line : line;
variable intruction_vector : bit_vector(7 downto 0);
begin
while (not(endfile(instruction_file))) loop --Loop to the end of the text file.
wait for 1 ns;
clk <= '0';
readline(instruction_file, instruction_line); --Read in instruction line
read(instruction_line, intruction_vector); --merge instruction to bit vector
I <= to_stdlogicvector(intruction_vector); --Convert bit vector to std_logic_vector and pass instruction to the calculator input.
--Create a rising edge for the clock.
wait for 1 ns;
clk <= '1';
end loop;
assert false report "end of test" severity note;
end process;
end architecture structural;
''''
The runtime error I receive is:
недопустимый доступ к памяти (свисающие обращения или слишком маленький стек)