@ -0,0 +1,28 @@ | |||
[tasks] | |||
sere_0 bmc | |||
sere_1 bmc | |||
sere_2 bmc | |||
sere_3 bmc | |||
all bmc | |||
bmc all | |||
[options] | |||
depth 25 | |||
bmc: mode bmc | |||
[engines] | |||
bmc: smtbmc z3 | |||
[script] | |||
sere_0: ghdl --std=08 -gformal=SERE_0 pkg.vhd sequencer.vhd psl_vunit.vhd psl_vunit.psl -e psl_vunit | |||
sere_1: ghdl --std=08 -gformal=SERE_1 pkg.vhd sequencer.vhd psl_vunit.vhd psl_vunit.psl -e psl_vunit | |||
sere_2: ghdl --std=08 -gformal=SERE_2 pkg.vhd sequencer.vhd psl_vunit.vhd psl_vunit.psl -e psl_vunit | |||
sere_3: ghdl --std=08 -gformal=SERE_3 pkg.vhd sequencer.vhd psl_vunit.vhd psl_vunit.psl -e psl_vunit | |||
all: ghdl --std=08 -gformal=ALL pkg.vhd sequencer.vhd psl_vunit.vhd psl_vunit.psl -e psl_vunit | |||
prep -top psl_vunit | |||
[files] | |||
../src/pkg.vhd | |||
../src/sequencer.vhd | |||
../src/psl_vunit.vhd | |||
../src/psl_vunit.psl |
@ -0,0 +1,28 @@ | |||
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; | |||
} |
@ -0,0 +1,36 @@ | |||
library ieee; | |||
use ieee.std_logic_1164.all; | |||
use work.pkg.all; | |||
entity psl_vunit is | |||
generic ( | |||
formal : string := "ALL" | |||
); | |||
port ( | |||
clk : in std_logic | |||
); | |||
end entity psl_vunit; | |||
architecture beh of psl_vunit is | |||
signal a, b : std_logic; | |||
begin | |||
-- 012345 | |||
SEQ_A : sequencer generic map ("--____") port map (clk, a); | |||
SEQ_B : sequencer generic map ("_-____") port map (clk, b); | |||
-- Stop simulation after longest running sequencer is finished | |||
-- Simulation only code by using pragmas | |||
-- synthesis translate_off | |||
stop_sim(clk, 6); | |||
-- synthesis translate_on | |||
end architecture beh; |