В стандарте VHDL-2008 добавлен новый пакет ENV в библиотеку STD, в котором вводятся несколько новых функций:
- STOP — процедура остановки моделирования
- FINISH — процедура остановки моделирования с выходом из симулятора (modelsim/qustasim)
- resolution_limit — функция возвращает значения точности моделирования (тип DELAY_LENGTH)
Декларация в пакете ENV:
procedure stop (STATUS : INTEGER := 0);
procedure finish (STATUS : INTEGER := 0);
function resolution_limit return DELAY_LENGTH; |
В зависимости от значения параметра STATUS, передаваемого процедурам STOP и FINISH предусмотрен разный вывод в лог (консоль):
- 0 — ничего не выводит;
- 1 — выводит время моделирование и путь к entity в котором выполнена процедура;
- 2 — выводит время, расположение и статистику о задейсвованной памяти и ресурсу CPU при моделировании;
- другие значения STATUS интерпретируются как 0.
Пример
Листинг файла std_sim.vhd для проверки функций пакета STD.ENV
Файл: std_sim.vhd |
library std;
use std.env.all;
entity std_sim is
end entity std_sim;
architecture beh of std_sim is
signal clk : bit := '0';
-- signal resolution: DELAY_LENGTH:= resolution_limit;
signal resolution : DELAY_LENGTH ;
begin -- architecture beh
p1: process is
begin -- process p1
while (now <= 100 ns) loop
wait for 10 ns;
clk <= not clk;
end loop;
-- finish;
-- finish(0);
-- finish(1);
finish(2);
-- finish(3);
-- stop(3);
-- stop(2);
-- stop(1);
-- stop(0);
-- stop;
end process p1;
end architecture beh; |
|
Далее показан вывод в терминал (транскрипт) при выполнении функций stop и finish с различными входными параметрами.
- Вызов функции
stop; или stop(0); или stop(3); (или с любым другим числом >2):
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 25
# ** Note: stop
# Time: 110 ns Iteration: 0 Instance: /std_sim
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 25
# ** Note: Data structure takes 16558720 bytes of memory
# Process time 0.00 seconds
# stop
# Time: 110 ns Iteration: 0 Instance: /std_sim
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 25
# 1
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 27
# ** Note: finish
# Time: 110 ns Iteration: 0 Instance: /std_sim
# 1
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 29
# ** Note: Data structure takes 16558720 bytes of memory
# Process time 0.00 seconds
# finish
# Time: 110 ns Iteration: 0 Instance: /std_sim
# 1
# Break in Process p1 at /home/sim/vhd/std_sim.vhd line 30
 |
В отличии от пакета STD.STANDARD декларацию пакета STD.ENV необходимо включать в VHDL-файл, чтобы его функции стали доступны:
library std;
use std.env.all; |
|
|