vunit psl_vunit_vu (psl_vunit(beh)) {
|
|
|
|
|
|
-- All is sensitive to rising edge of clk
|
|
default clock is rising_edge(clk);
|
|
|
|
gen_0 : if FORMAL = "SERE_0" or formal = "ALL" generate
|
|
-- This assertion holds
|
|
SERE_0_a : assert {a};
|
|
end generate gen_0;
|
|
|
|
gen_1 : if FORMAL = "SERE_1" or formal = "ALL" generate
|
|
-- This assertion holds
|
|
SERE_1_a : assert {a; a};
|
|
end generate gen_1;
|
|
|
|
gen_2 : if FORMAL = "SERE_2" or formal = "ALL" generate
|
|
-- This assertion holds
|
|
SERE_2_a : assert {a; a and b};
|
|
end generate gen_2;
|
|
|
|
gen_3 : if FORMAL = "SERE_3" or formal = "ALL" generate
|
|
-- This assertion doesn't hold at cycle 2
|
|
SERE_3_a : assert always {a; a};
|
|
end generate gen_3;
|
|
|
|
-- A simple check for counter increasing
|
|
counter_check : for i in 0 to 14 generate
|
|
SERE_4_a : assert always
|
|
{c = std_logic_vector(to_unsigned(i, 4))}
|
|
|=>
|
|
{c = std_logic_vector(to_unsigned(i + 1, 4))};
|
|
end generate counter_check;
|
|
|
|
-- Using named sequences
|
|
sequence s_a is {a; a};
|
|
sequence s_b is {b};
|
|
|
|
SERE_5_a : assert always s_a |-> s_b;
|
|
|
|
-- Using named property
|
|
property p_a is always s_a |-> s_b;
|
|
|
|
PROP_0_a : assert p_a;
|
|
|
|
}
|