This is from an example that comes with VUnit inside the array_axis_vcs fifo.vhd file.
PslChecks : block is
constant dx : std_logic_vector(d'left downto 0) := (others => 'X');
constant du : std_logic_vector(d'left downto 0) := (others => 'U');
begin
assert always (not rst and wr -> not (d ?= dx or d ?= du))@rising_edge(clkw)
report "wrote X|U to FIFO";
assert always (not rst and f -> not wr)@rising_edge(clkw)
report "Wrote to FIFO while full";
assert always (not rst and e -> not rd)@rising_edge(clkr)
report "Read from FIFO while empty";
end block PslChecks;
My simulator is not able to understand these assert statements.
What kind of VHDL is this? How can this be written in "normal VHDL" so it works with my ActiveHDL 11.1? I have never seen block and assert always in my life in VHDL before this. I can't find these in the VHDL 2008 LRM as well.