Один из вариантов описания инерционного поведения вентиля AND2 с разными задержками фронта и среза
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity and2_tpLH_tpHL is
generic (tpLH : time := 15ns; tpHL : time := 20ns);
port( A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC :='0' -- нужна начальная инициализация
--Y : inout STD_LOGIC :='0' -- работает без Y'driving_value
--Y : buffer STD_LOGIC :='0' --работает без Y'driving_value );
end and2_tpLH_tpHL;
architecture and2_tpLH_tpHL of and2_tpLH_tpHL is
begin
PROCESS (A, B)
variable Y_INT : std_logic;
begin
Y_INT:=A and B; -- Вычисляем выход без задержки
if Y_INT='1' and Y'driving_value ='0' then --работает с --Y'driving_value
Y<='X','1' after tpLH; -- Выход имеет значение 'X', пока формируется фронт
elsif Y_INT='0' and Y'driving_value ='1' then
Y<='X','0' after tpHL; -- Выход имеет значение 'X', пока формируется срез
end if;
end process;
end and2_tpLH_tpHL;
Атрибут 'driving_value обеспечивает доступ к значению выходного сигнала

Во время переходных процессов формирования фронта или среза на выходе элемента устанавливается неизвестное значение ‘X’.
Генератор сигналов с периодом 200ns, который можно остановить по сигналу stop_gen из другого процесса.
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity gener is
port(
Y : out STD_LOGIC
);
end gener;
architecture gener of gener is
constant stop_gen : time :=1100ns;
signal done : std_logic;
begin
GEN_PR: process
begin
if NOW=0ns then Y<='0';
end if;
wait for 100ns;
Y<=not Y'driving_value;
if done='1' then wait;
end if;
end process;
STOP_PR: process
begin
done<='0';
wait for stop_gen;
done<='1';
wait;
end process;
end gener;

Инерционная и транспортная задержки. Резекция (порог)
Инерционная задержка предполагает, что элемент не реагирует на сигналы, длительность которых меньше порога, равного времени задержки элемента.
Транспортная модель передаёт на выход импульсы любой длительности, в том числе меньше времени задержки.
Модель инерционной задержки с резекцией (reject) обрезает (не пропускает) сигналы, длительность которых равна или меньше времени резекции. Это своеобразный компромисс между инерционной и транспортной задержками.
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity and2_I_T is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
Y_I, Y_T, Y_I_R : out STD_LOGIC);
end and2_I_T;
architecture and2_I_T of and2_I_T is
begin
Y_I <= inertial A and B after 10ns;
Y_T <= transport A and B after 10ns;
Y_I_R <= reject 7ns inertial A and B after 10ns;-- время резекции 5ns
end and2_I_T;

Отыскание иголок
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity and2_glitch is
port(
A : in STD_LOGIC;
B : in STD_LOGIC;
Y : out STD_LOGIC );
end and2_glitch;
architecture and2_glitch of and2_glitch is
signal Y_I, Y_T : std_logic;
begin
Y_I<= inertial A and B after 10ns;
Y_T<= transport A and B after 10ns;
assert Y_I = Y_T report "Glitch" severity ERROR;
Y<=Y_I;
end and2_glitch;

Контроль минимальной длительности импульса
Длительность импульса не должна быть меньше времени задержки элемента, на вход которого он поступает.
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity buffer_my is
port(A : in STD_LOGIC;
Y : out STD_LOGIC);
end buffer_my;
architecture model of buffer_my is
begin
PROCESS (A)
variable t_event : time :=0ns; -- Переменную типа время
-- инициализируем нулём
begin
if now > 8ns then
assert (now - t_event >= 8ns) -- вычисляется время
-- между соседними переключениями сигнала A
report "minimum" severity ERROR;
end if;
t_event:=now; -- в t_event заносится время последнего
-- переключения сигнала A
end process;
Y <= A after 8ns; -- задержка буфера 8ns
end model;
Сигналы длительностью больше или равной 8ns (задержка буфера) проходят на выход (первые два импульса в 10ns и 8ns). Импульсы короче 8ns на выходе не появляются (третий и четвёртый соответственно 7ns и 6ns). При этом программа моделирования сообщает о нарушении минимальной длительности импульса.

Контроль времени предустановки данных на входе D-триггера DFF_setup
library IEEE;
use IEEE. STD_LOGIC_1164.all;
entity DFF_setup is
port(
D : in STD_LOGIC;
C : in STD_LOGIC;
Q : out STD_LOGIC
);
end DFF_setup;
architecture DFF_setup of DFF_setup is
begin
process (C)
begin
if C='1' and C'EVENT then
if (D'last_event>=10ns) then Q<=D;
else assert false report "SetUp error"
severity error; Q<='X';
end if;
end if;
end process;
end DFF_setup;



