Ваша проблема в том, что ваша симуляция выполняется, но никогда не останавливается; это просто продолжает работать вечно.
Любая симуляция VHDL (или Verilog) будет продолжаться, если еще есть чем заняться. Этот процесс:
clk_process : process
begin
C <= '0';
wait for clk_period/2;
C <= '1';
wait for clk_period/2;
end process;
генерирует событие (изменение) по сигналу C
каждые clk_period/2
. Навсегда. Чтобы вылечить это, вам нужно положить что-то, чтобы остановить это, например:
clk_process : process
begin
while not STOP loop
C <= '0';
wait for clk_period/2;
C <= '1';
wait for clk_period/2;
end loop;
wait;
end process;
wait;
в конце процесса ждет вечно. Сигнал STOP
является boolean
:
signal STOP : boolean := false;
Тогда вам нужно что-то вроде этого для подачи сигнала STOP
:
STOP <= false, true after 10 ns;