aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/synth/psl01
diff options
context:
space:
mode:
authorT. Meissner <programming@goodcleanfun.de>2019-09-19 06:30:22 +0200
committertgingold <tgingold@users.noreply.github.com>2019-09-19 06:30:22 +0200
commitacac3f18888c0989ae4d7d8a4fb20a90edc2a38c (patch)
treee0d9dc9f6186f0002c8c7b4ac6cea6980577bf9a /testsuite/synth/psl01
parent4a04f914b836c21a6d036f72846f8698d907cf43 (diff)
downloadghdl-acac3f18888c0989ae4d7d8a4fb20a90edc2a38c.tar.gz
ghdl-acac3f18888c0989ae4d7d8a4fb20a90edc2a38c.tar.bz2
ghdl-acac3f18888c0989ae4d7d8a4fb20a90edc2a38c.zip
synth: Add support for PSL cover directive (#930)
* synth: Add support for PSL cover directive * testsuite/synth: Add tests for PSL cover directives
Diffstat (limited to 'testsuite/synth/psl01')
-rw-r--r--testsuite/synth/psl01/cover1.vhdl27
-rw-r--r--testsuite/synth/psl01/cover2.vhdl27
-rw-r--r--testsuite/synth/psl01/hello.vhdl1
-rwxr-xr-xtestsuite/synth/psl01/testsuite.sh2
4 files changed, 56 insertions, 1 deletions
diff --git a/testsuite/synth/psl01/cover1.vhdl b/testsuite/synth/psl01/cover1.vhdl
new file mode 100644
index 000000000..8512b3b18
--- /dev/null
+++ b/testsuite/synth/psl01/cover1.vhdl
@@ -0,0 +1,27 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity cover1 is
+ port (clk, rst: std_logic;
+ cnt : out unsigned(3 downto 0));
+end cover1;
+
+architecture behav of cover1 is
+ signal val : unsigned (3 downto 0);
+begin
+ process(clk)
+ begin
+ if rising_edge(clk) then
+ if rst = '1' then
+ val <= (others => '0');
+ else
+ val <= val + 1;
+ end if;
+ end if;
+ end process;
+ cnt <= val;
+
+ --psl default clock is rising_edge(clk);
+ --psl cover {val = 10};
+end behav;
diff --git a/testsuite/synth/psl01/cover2.vhdl b/testsuite/synth/psl01/cover2.vhdl
new file mode 100644
index 000000000..d04757694
--- /dev/null
+++ b/testsuite/synth/psl01/cover2.vhdl
@@ -0,0 +1,27 @@
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+entity cover2 is
+ port (clk, rst: std_logic;
+ cnt : out unsigned(3 downto 0));
+end cover2;
+
+architecture behav of cover2 is
+ signal val : unsigned (3 downto 0);
+ default clock is rising_edge(clk);
+begin
+ process(clk)
+ begin
+ if rising_edge(clk) then
+ if rst = '1' then
+ val <= (others => '0');
+ else
+ val <= val + 1;
+ end if;
+ end if;
+ end process;
+ cnt <= val;
+
+ cover {val = 10};
+end behav;
diff --git a/testsuite/synth/psl01/hello.vhdl b/testsuite/synth/psl01/hello.vhdl
index 6676b883a..325f7f078 100644
--- a/testsuite/synth/psl01/hello.vhdl
+++ b/testsuite/synth/psl01/hello.vhdl
@@ -26,4 +26,5 @@ begin
--psl restrict {rst; (not rst)[*]};
--psl assert always val /= 5 abort rst;
--psl assume always val < 10;
+ --psl cover {val = 10};
end behav;
diff --git a/testsuite/synth/psl01/testsuite.sh b/testsuite/synth/psl01/testsuite.sh
index 7fd87887f..7707566f7 100755
--- a/testsuite/synth/psl01/testsuite.sh
+++ b/testsuite/synth/psl01/testsuite.sh
@@ -4,7 +4,7 @@
GHDL_STD_FLAGS=--std=08
-for f in restrict1 restrict2 assume1 assume2 assert1; do
+for f in restrict1 restrict2 assume1 assume2 assert1 cover1 cover2; do
synth -fpsl $f.vhdl -e $f > syn_$f.vhdl
analyze syn_$f.vhdl
done