aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2023-03-15 07:45:53 +0100
committerTristan Gingold <tgingold@free.fr>2023-03-15 07:46:27 +0100
commitdbd1c189a8fff1e7c322ffd7264ea339bf911115 (patch)
tree921c999eb78433f56fb0450f49b526e997592e14
parent952d0584b70eb85d24a70b646ccd8edfd9538b83 (diff)
downloadghdl-yosys-plugin-dbd1c189a8fff1e7c322ffd7264ea339bf911115.tar.gz
ghdl-yosys-plugin-dbd1c189a8fff1e7c322ffd7264ea339bf911115.tar.bz2
ghdl-yosys-plugin-dbd1c189a8fff1e7c322ffd7264ea339bf911115.zip
testsuite: add a test for #2392
-rw-r--r--testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.sby20
-rw-r--r--testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.vhdl77
-rw-r--r--testsuite/ghdl-issues/issue2392b/psl_p_plus.vhdl22
-rw-r--r--testsuite/ghdl-issues/issue2392b/psl_p_plus.ys12
-rwxr-xr-xtestsuite/ghdl-issues/issue2392b/testsuite.sh10
5 files changed, 141 insertions, 0 deletions
diff --git a/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.sby b/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.sby
new file mode 100644
index 0000000..44cf671
--- /dev/null
+++ b/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.sby
@@ -0,0 +1,20 @@
+[tasks]
+compare
+cover
+
+[options]
+compare: mode bmc
+cover: mode cover
+depth 100
+
+[engines]
+smtbmc z3
+
+[script]
+read_verilog synth_psl_p_plus.v
+ghdl --std=08 compare_psl_p_plus.vhdl -e compare_psl_p_plus
+prep -top compare_psl_p_plus
+
+[files]
+synth_psl_p_plus.v
+compare_psl_p_plus.vhdl
diff --git a/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.vhdl b/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.vhdl
new file mode 100644
index 0000000..90f9d3a
--- /dev/null
+++ b/testsuite/ghdl-issues/issue2392b/compare_psl_p_plus.vhdl
@@ -0,0 +1,77 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity compare_psl_p_plus is
+ port(
+ clk_in: in std_logic;
+ a_in: in std_logic;
+ b_in: in std_logic;
+ c_in: in std_logic
+ );
+end;
+
+architecture rtl of compare_psl_p_plus is
+ component psl_p_plus is
+ port(
+ clk_in: in std_logic;
+ a_in: in std_logic;
+ b_in: in std_logic;
+ c_in: in std_logic;
+ \p_plus_psl.A\: out std_logic;
+ \p_plus_psl.EN\: out std_logic
+ );
+ end component;
+
+ signal first_cycle: std_logic := '1';
+ signal nda_r0: std_logic := '0';
+ signal nda_res: std_logic;
+
+ signal p_plus_psl_a: std_logic;
+ signal p_plus_psl_en: std_logic;
+ signal p_plus_psl: std_logic;
+begin
+ dut: psl_p_plus
+ port map(
+ clk_in => clk_in,
+ a_in => a_in,
+ b_in => b_in,
+ c_in => c_in,
+ \p_plus_psl.A\ => p_plus_psl_a,
+ \p_plus_psl.EN\ => p_plus_psl_en
+ );
+
+ p_plus_psl <= p_plus_psl_en and p_plus_psl_a;
+
+ reference_model_sync_pr: process(clk_in)
+ begin
+ if rising_edge(clk_in) then
+ first_cycle <= '0';
+
+ nda_r0 <= '0';
+ if first_cycle = '1' and a_in = '1' then
+ nda_r0 <= '1';
+ end if;
+ if nda_r0 = '1' and a_in = '1' then
+ nda_r0 <= '1';
+ end if;
+ end if;
+ end process;
+
+ reference_model_async_pr: process(all)
+ begin
+ nda_res <= '1';
+ if nda_r0 = '1' and b_in = '1' and c_in = '0' then
+ nda_res <= '0';
+ end if;
+ end process;
+
+
+ default clock is rising_edge(clk_in);
+
+ comparison_assert: postponed assert nda_res = p_plus_psl;
+
+ cover_psl: cover {true; true; p_plus_psl = '0'};
+
+ cover_psl_first: cover {true; true; [*]; p_plus_psl = '0'};
+end;
+
diff --git a/testsuite/ghdl-issues/issue2392b/psl_p_plus.vhdl b/testsuite/ghdl-issues/issue2392b/psl_p_plus.vhdl
new file mode 100644
index 0000000..522ce86
--- /dev/null
+++ b/testsuite/ghdl-issues/issue2392b/psl_p_plus.vhdl
@@ -0,0 +1,22 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+entity psl_p_plus is
+ generic(
+ DATA_BITS: natural := 8
+ );
+ port(
+ clk_in: in std_logic;
+
+ a_in: in std_logic;
+ b_in: in std_logic;
+ c_in: in std_logic
+ );
+end;
+
+architecture psl of psl_p_plus is
+begin
+ default clock is rising_edge(clk_in);
+
+ p_plus_psl: assert {a_in[+]; b_in} |-> {c_in};
+end;
diff --git a/testsuite/ghdl-issues/issue2392b/psl_p_plus.ys b/testsuite/ghdl-issues/issue2392b/psl_p_plus.ys
new file mode 100644
index 0000000..d1a4972
--- /dev/null
+++ b/testsuite/ghdl-issues/issue2392b/psl_p_plus.ys
@@ -0,0 +1,12 @@
+ghdl --std=08 psl_p_plus.vhdl -e psl_p_plus
+
+flatten
+rename -enumerate -pattern unnamed_assert_% t:$assert
+rename -enumerate -pattern unnamed_assume_% t:$assume
+rename -enumerate -pattern unnamed_cover_% t:$cover
+
+expose -evert t:$assert t:$assume t:$cover
+
+opt
+
+write_verilog synth_psl_p_plus.v
diff --git a/testsuite/ghdl-issues/issue2392b/testsuite.sh b/testsuite/ghdl-issues/issue2392b/testsuite.sh
new file mode 100755
index 0000000..66e1f8c
--- /dev/null
+++ b/testsuite/ghdl-issues/issue2392b/testsuite.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+topdir=../..
+. $topdir/testenv.sh
+
+run_yosys psl_p_plus.ys
+
+run_symbiyosys -f compare_psl_p_plus.sby compare cover
+
+echo OK