| @ -0,0 +1,18 @@ | |||||
| [tasks] | |||||
| bmc | |||||
| [options] | |||||
| depth 25 | |||||
| bmc: mode bmc | |||||
| [engines] | |||||
| bmc: smtbmc z3 | |||||
| [script] | |||||
| bmc: ghdl --std=08 pkg.vhd sequencer.vhd yosys_anyconst.vhd -e yosys_anyconst | |||||
| prep -top yosys_anyconst | |||||
| [files] | |||||
| ../src/pkg.vhd | |||||
| ../src/sequencer.vhd | |||||
| ../src/yosys_anyconst.vhd | |||||
| @ -0,0 +1,18 @@ | |||||
| [tasks] | |||||
| bmc | |||||
| [options] | |||||
| depth 25 | |||||
| bmc: mode bmc | |||||
| [engines] | |||||
| bmc: smtbmc z3 | |||||
| [script] | |||||
| bmc: ghdl --std=08 pkg.vhd sequencer.vhd yosys_anyseq.vhd -e yosys_anyseq | |||||
| prep -top yosys_anyseq | |||||
| [files] | |||||
| ../src/pkg.vhd | |||||
| ../src/sequencer.vhd | |||||
| ../src/yosys_anyseq.vhd | |||||
| @ -0,0 +1,43 @@ | |||||
| library ieee; | |||||
| use ieee.std_logic_1164.all; | |||||
| use work.pkg.all; | |||||
| entity yosys_anyconst is | |||||
| port ( | |||||
| clk : in std_logic | |||||
| ); | |||||
| end entity yosys_anyconst; | |||||
| architecture psl of yosys_anyconst is | |||||
| attribute anyconst : boolean; | |||||
| signal a: std_logic; | |||||
| signal b: natural; | |||||
| attribute anyconst of a : signal is true; | |||||
| attribute anyconst of b : signal is true; | |||||
| begin | |||||
| -- All is sensitive to rising edge of clk | |||||
| default clock is rising_edge(clk); | |||||
| -- a should always be high | |||||
| ANY_ASSUME_0_a : assume always a; | |||||
| -- This assertion holds | |||||
| ANY_ASSERT_0_a : assert always a; | |||||
| -- a should always be high | |||||
| ANY_ASSUME_1_a : assume always b = 42; | |||||
| -- This assertion holds | |||||
| ANY_ASSERT_1_a : assert always b = 42; | |||||
| end architecture psl; | |||||
| @ -0,0 +1,47 @@ | |||||
| library ieee; | |||||
| use ieee.std_logic_1164.all; | |||||
| use work.pkg.all; | |||||
| entity yosys_anyseq is | |||||
| port ( | |||||
| clk : in std_logic | |||||
| ); | |||||
| end entity yosys_anyseq; | |||||
| architecture psl of yosys_anyseq is | |||||
| attribute anyseq : boolean; | |||||
| signal a: std_logic; | |||||
| signal b: natural; | |||||
| attribute anyseq of a : signal is true; | |||||
| attribute anyseq of b : signal is true; | |||||
| begin | |||||
| -- All is sensitive to rising edge of clk | |||||
| default clock is rising_edge(clk); | |||||
| -- a should always be high | |||||
| ANY_ASSUME_0_a : assume always a; | |||||
| -- This assertion holds | |||||
| ANY_ASSERT_0_a : assert always a; | |||||
| -- b should always be in range 23...42 | |||||
| ANY_ASSUME_1_a : assume always b >= 23 and b <= 42; | |||||
| -- This assertion holds | |||||
| ANY_ASSERT_1_a : assert always b >= 23 and b <= 42; | |||||
| -- This assertion fails in cycle 1 | |||||
| -- Solver chosen value can change from one to next cycle | |||||
| ANY_ASSERT_2_a : assert b >= 23 -> next b = prev(b); | |||||
| end architecture psl; | |||||