aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-02-21 08:06:09 +0100
committerTristan Gingold <tgingold@free.fr>2022-02-21 08:06:09 +0100
commit81441654d58fd9f69c1ca694915ffbb40f7fc519 (patch)
tree97160897450a07f2c453689a76db41533ae75504 /testsuite
parent83a5f96469efc690da3e86e9983b3dfc84f4fa3c (diff)
downloadghdl-81441654d58fd9f69c1ca694915ffbb40f7fc519.tar.gz
ghdl-81441654d58fd9f69c1ca694915ffbb40f7fc519.tar.bz2
ghdl-81441654d58fd9f69c1ca694915ffbb40f7fc519.zip
testsuite/synth: add a reproducer for #1978
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/synth/issue1978/reproducer.vhdl45
-rwxr-xr-xtestsuite/synth/issue1978/testsuite.sh8
2 files changed, 53 insertions, 0 deletions
diff --git a/testsuite/synth/issue1978/reproducer.vhdl b/testsuite/synth/issue1978/reproducer.vhdl
new file mode 100644
index 000000000..38091541b
--- /dev/null
+++ b/testsuite/synth/issue1978/reproducer.vhdl
@@ -0,0 +1,45 @@
+--:file: Entity.vhd
+
+library IEEE;
+context IEEE.IEEE_std_context;
+
+entity Reproducer is
+ generic (
+ g_Precision : natural := 11;
+ g_PulsesPerRevolution : natural := 1000
+ );
+ port (
+ CLK : in std_logic;
+ RST : in std_logic;
+ EN : in std_logic;
+ Z : in std_logic;
+ POS : out unsigned(g_Precision-1 downto 0)
+ );
+end entity;
+
+architecture arch of Reproducer is
+
+ signal Position : unsigned(POS'range);
+
+ signal Direction : std_logic := '0';
+
+begin
+
+ PositionCounter: process(RST, Z, CLK)
+ constant CountLimit : unsigned(Position'range) := to_unsigned(4*g_PulsesPerRevolution-1, Position);
+ begin
+ if RST or Z then
+ Position <= (others => '0');
+ elsif rising_edge(CLK) and EN='1' then
+ Position <=
+ (others=>'0') when Position = CountLimit and Direction='1' else
+ CountLimit when Position = 0 and Direction='0' else
+ Position+1 when Direction else
+ Position-1;
+ end if;
+ end process;
+
+ pos <= position;
+ direction <= '0';
+
+end architecture;
diff --git a/testsuite/synth/issue1978/testsuite.sh b/testsuite/synth/issue1978/testsuite.sh
new file mode 100755
index 000000000..6755c8a4e
--- /dev/null
+++ b/testsuite/synth/issue1978/testsuite.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+GHDL_STD_FLAGS=--std=08
+synth_failure reproducer.vhdl -e
+
+echo "Test successful"