aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-11-15 07:55:34 +0100
committerTristan Gingold <tgingold@free.fr>2021-11-15 18:23:39 +0100
commit5b688c3a7fc164800c95a2133c1aaa5cf80c84c0 (patch)
tree61d8797ae07025df83de8f01d4db6bc441e0f431
parent1a9e48e9d72bfd4c027ab2fb852f83c67ae9ce6c (diff)
downloadghdl-5b688c3a7fc164800c95a2133c1aaa5cf80c84c0.tar.gz
ghdl-5b688c3a7fc164800c95a2133c1aaa5cf80c84c0.tar.bz2
ghdl-5b688c3a7fc164800c95a2133c1aaa5cf80c84c0.zip
testsuite/gna: add a test for previous commit
-rwxr-xr-xtestsuite/gna/bug0125/gen.py33
-rw-r--r--testsuite/gna/bug0125/repro.vhdl17
-rw-r--r--testsuite/gna/bug0125/tb.vhdl23
-rwxr-xr-xtestsuite/gna/bug0125/testsuite.sh10
4 files changed, 83 insertions, 0 deletions
diff --git a/testsuite/gna/bug0125/gen.py b/testsuite/gna/bug0125/gen.py
new file mode 100755
index 000000000..c058f748b
--- /dev/null
+++ b/testsuite/gna/bug0125/gen.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+# Generate a big aggregate
+
+import sys
+import random
+
+out = sys.stdout
+
+
+depth = 1024
+width = 6
+
+out.write("""
+package repro is
+ type array2d is array(0 to {}, 0 to {}) of integer;
+
+ constant cst : array2d :=
+ (
+""".format(depth - 1, width - 1))
+
+for i in range(depth):
+ if i != 0:
+ out.write(',\n')
+ out.write (' (')
+ for j in range(width):
+ if j != 0:
+ out.write(', ')
+ out.write('{}'.format(random.randint(0, 1<<31)))
+ out.write(')')
+out.write("""
+ );
+end repro;
+""")
diff --git a/testsuite/gna/bug0125/repro.vhdl b/testsuite/gna/bug0125/repro.vhdl
new file mode 100644
index 000000000..c7a995553
--- /dev/null
+++ b/testsuite/gna/bug0125/repro.vhdl
@@ -0,0 +1,17 @@
+package repro is
+ type array2d is array( integer range 0 to 7, integer range 14 downto 1)
+ of natural;
+
+ constant cst : array2d :=
+ (
+ (1,1,1,1,1,1,1,1,1,1,1,1,1,1),
+ (2,3,5,9,17,33,65,129,257,513,1025,2049,4097,1),
+ (3,5,9,17,33,65,129,257,513,1025,2049,4097,1,1),
+ (4,7,13,25,49,97,193,385,769,1537,3073,6145,4097,1),
+ (5,9,17,33,65,129,257,513,1025,2049,4097,1,1,1),
+ (6,11,21,41,81,161,321,641,1281,2561,5121,2049,4097,1),
+ (7,13,25,49,97,193,385,769,1537,3073,6145,4097,1,1),
+ (8,15,29,57,113,225,449,897,1793,3585,7169,6145,4097,1)
+ );
+
+end repro;
diff --git a/testsuite/gna/bug0125/tb.vhdl b/testsuite/gna/bug0125/tb.vhdl
new file mode 100644
index 000000000..caa3ac0d4
--- /dev/null
+++ b/testsuite/gna/bug0125/tb.vhdl
@@ -0,0 +1,23 @@
+entity tb is
+end;
+
+use work.repro.all;
+
+architecture behav of tb
+is
+begin
+ process
+ variable sum : natural;
+ begin
+ sum := 0;
+
+ for i in cst'range(1) loop
+ for j in cst'range(2) loop
+ sum := (sum + cst(i, j)) mod 4096;
+ end loop;
+ end loop;
+
+ report "sum: " & natural'image(sum);
+ wait;
+ end process;
+end behav;
diff --git a/testsuite/gna/bug0125/testsuite.sh b/testsuite/gna/bug0125/testsuite.sh
new file mode 100755
index 000000000..ddb73a841
--- /dev/null
+++ b/testsuite/gna/bug0125/testsuite.sh
@@ -0,0 +1,10 @@
+#! /bin/sh
+
+. ../../testenv.sh
+
+analyze repro.vhdl tb.vhdl
+elab_simulate tb
+
+clean
+
+echo "Test successful"