aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna/issue1323/mydesign.vhdl
diff options
context:
space:
mode:
authorBen Reynwar <ben@reynwar.net>2020-05-19 23:05:17 -0700
committertgingold <tgingold@users.noreply.github.com>2021-04-23 05:34:09 +0200
commita73daf35f1ba5b5eeaddb05947ce9088c78ea6d2 (patch)
tree7f400949143560be363fce1c4ef512a0c9eb5059 /testsuite/gna/issue1323/mydesign.vhdl
parent8136add60a289d1195817b0ba4e002e38e7e7263 (diff)
downloadghdl-a73daf35f1ba5b5eeaddb05947ce9088c78ea6d2.tar.gz
ghdl-a73daf35f1ba5b5eeaddb05947ce9088c78ea6d2.tar.bz2
ghdl-a73daf35f1ba5b5eeaddb05947ce9088c78ea6d2.zip
Add a test that compares a ghw dump with a known previous dump to check for regression (#1323)
Diffstat (limited to 'testsuite/gna/issue1323/mydesign.vhdl')
-rw-r--r--testsuite/gna/issue1323/mydesign.vhdl155
1 files changed, 155 insertions, 0 deletions
diff --git a/testsuite/gna/issue1323/mydesign.vhdl b/testsuite/gna/issue1323/mydesign.vhdl
new file mode 100644
index 000000000..2a2db1d54
--- /dev/null
+++ b/testsuite/gna/issue1323/mydesign.vhdl
@@ -0,0 +1,155 @@
+package mypackage is
+ subtype constrained_bit_vector is bit_vector(4 downto 0);
+end mypackage;
+
+entity mysubentity is
+ generic (
+ genint: integer := 42;
+ genstring: string := "fish"
+ );
+end entity;
+
+architecture arch of mysubentity is
+
+ constant const_bit : bit := '1';
+ signal sig_bit : bit;
+
+ type enum is (FIRST, SECOND, THIRD);
+ constant const_enum : enum := SECOND;
+ signal sig_enum : enum;
+
+ constant const_bool : boolean := false;
+ signal sig_bool : boolean;
+
+ constant const_int : integer := 45;
+ signal sig_int : integer;
+
+ -- strings
+ constant const_cs : string := "staticlength";
+ constant const_gs : string := genstring;
+ signal sig_cs : string(const_cs'range);
+ signal sig_gs : string(const_gs'range);
+
+ -- arrays
+ subtype cbv is bit_vector(4 downto 0);
+ subtype gbv is bit_vector(genint-1 downto 0);
+
+ constant const_cbv : cbv := "01010";
+ constant const_gbv : gbv := (others => '0');
+
+ signal sig_cbv : cbv;
+ signal sig_gbv : gbv;
+
+ -- arrays of arrays
+ type array_of_cbv is array(integer range <>) of cbv;
+ type array_of_gbv is array(integer range <>) of gbv;
+ subtype ca_cbv is array_of_cbv(3 downto 0);
+ subtype ca_gbv is array_of_gbv(3 downto 0);
+ subtype ga_cbv is array_of_cbv(genint+1 downto 0);
+ subtype ga_gbv is array_of_gbv(genint+1 downto 0);
+
+ constant const_ca_cbv : ca_cbv := (0 => "01010",
+ 1 => "11111",
+ others => "00000");
+ constant const_ca_gbv : ga_gbv := (0 => (others => '0'),
+ others => (others => '1'));
+ constant const_ga_cbv : ga_cbv := (others => "01100");
+ constant const_ga_gbv : ga_gbv := (others => (others => '0'));
+
+ signal sig_ca_cbv : ca_cbv;
+ signal sig_ca_gbv : ga_gbv;
+ signal sig_ga_cbv : ga_cbv;
+ signal sig_ga_gbv : ga_gbv;
+
+ -- records of arrays.
+ type rcd is record
+ cbv : cbv;
+ gbv : gbv;
+ end record;
+
+ constant const_rcd : rcd := (cbv => "01110",
+ gbv => (others => '1'));
+ signal sig_rcd : rcd;
+
+ -- arrays of records of arrays.
+ type array_of_rcd is array(integer range <>) of rcd;
+ subtype ca_rcd is array_of_rcd(3 downto 0);
+ subtype ga_rcd is array_of_rcd(genint downto 0);
+
+ constant const_ca_rcd : ca_rcd := (0 => (cbv => "00111", gbv => (others => '1')),
+ 1 => (cbv => "11000", gbv => (others => '0')),
+ others => (others => (others => '0')));
+ constant const_ga_rcd : ga_rcd := (others => (cbv => "00111", gbv => (others => '1')));
+ signal sig_ca_rcd : ca_rcd;
+ signal sig_ga_rcd : ga_rcd;
+
+begin
+
+ -- Just here so we get a meaningful dump.
+ main_process: process
+ begin
+ wait for 10 ns;
+ wait;
+ end process;
+
+ sig_bit <= const_bit;
+ sig_enum <= const_enum;
+ sig_bool <= const_bool;
+ sig_int <= const_int;
+
+ sig_cs <= const_cs;
+ sig_gs <= const_gs;
+
+ sig_cbv <= const_cbv;
+ sig_gbv <= const_gbv;
+ sig_ca_cbv <= const_ca_cbv;
+ sig_ca_gbv <= const_ga_gbv;
+ sig_ga_cbv <= const_ga_cbv;
+ sig_ga_gbv <= const_ga_gbv;
+ sig_rcd <= const_rcd;
+ sig_ca_rcd <= const_ca_rcd;
+ sig_ga_rcd <= const_ga_rcd;
+end arch;
+
+
+entity myentity is
+ generic (
+ genint: integer := 3;
+ genstring: string := "fish"
+ );
+end myentity;
+
+architecture arch of myentity is
+begin
+
+ instance_one : entity work.mysubentity
+ generic map(
+ genint => genint,
+ genstring => genstring
+ );
+
+ genloop1: for mygenvar1 in 0 to 4 generate
+ instance_two : entity work.mysubentity
+ generic map(
+ genint => mygenvar1,
+ genstring => genstring
+ );
+ end generate;
+
+ genloop2: for mygenvar2 in 0 to genint generate
+ instance_three : entity work.mysubentity
+ generic map(
+ genint => mygenvar2,
+ genstring => genstring
+ );
+ genloop3: for mygenvar3 in 0 to mygenvar2 generate
+ instance_three : entity work.mysubentity
+ generic map(
+ genint => mygenvar3,
+ genstring => genstring
+ );
+ end generate;
+ end generate;
+
+
+end architecture;