| @ -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; | |||