From c969350770eac2f54cf86284c5d3fd95fdcd762c Mon Sep 17 00:00:00 2001
From: Tristan Gingold <tgingold@free.fr>
Date: Tue, 4 Aug 2020 18:51:44 +0200
Subject: testsuite/gna: add a test for #1420

---
 testsuite/gna/issue1420/repro4.vhdl | 68 +++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 testsuite/gna/issue1420/repro4.vhdl

(limited to 'testsuite/gna/issue1420/repro4.vhdl')

diff --git a/testsuite/gna/issue1420/repro4.vhdl b/testsuite/gna/issue1420/repro4.vhdl
new file mode 100644
index 000000000..2e9842eed
--- /dev/null
+++ b/testsuite/gna/issue1420/repro4.vhdl
@@ -0,0 +1,68 @@
+library ieee;
+use ieee.std_logic_1164.all;
+
+package repro4_pkg is
+   type t_av_st is record
+      data  : std_ulogic_vector;         -- src -> sink
+      valid : std_ulogic;                -- src -> sink
+      empty : std_ulogic_vector;         -- src -> sink
+   end record t_av_st;
+   type t_arr_av_st is array (NATURAL range <>) of t_av_st;
+end package repro4_pkg;
+
+library ieee;
+use ieee.std_logic_1164.all;
+use work.repro4_pkg.all;
+
+entity repro4_sub is
+   generic(
+      G_SINKS            : positive;
+      G_SOURCES          : positive
+   );
+   port(
+      avst_sink          : inout t_arr_av_st(G_SINKS   downto 1);
+      avst_source        : inout t_arr_av_st(G_SOURCES downto 1);
+      source_sel         : in std_ulogic_vector(G_SOURCES downto 1)
+   );
+end entity;
+
+architecture rtl of repro4_sub is
+--   signal avst_current_sink : t_av_st(data(avst_sink(avst_sink'low).data'range), empty(avst_sink(avst_sink'low).empty'range));
+begin
+
+--   sink_sel_gen: for i in sink_sel'range generate
+--      sink_sel_seq_proc: process(clk) is begin
+--         avst_current_sink.valid <= '0';
+--      end process;
+--   end generate;
+end architecture;
+
+
+library ieee;
+use ieee.std_logic_1164.all;
+use work.repro4_pkg.all;
+
+entity repro4 is
+end entity;
+
+architecture tb of repro4 is
+   constant C_VC_SOURCES : positive := 3;
+   constant C_VC_SINKS    : positive := 3;
+
+   subtype vc_sources_range is natural range C_VC_SOURCES downto 1;
+   subtype vc_sinks_range is natural range C_VC_SINKS downto 1;
+
+   signal avst_snk : t_arr_av_st(vc_sinks_range)(data(8 downto 0), empty(0 downto 0));
+   signal avst_src : t_arr_av_st(vc_sources_range)(data(8 downto 0), empty(0 downto 0));
+   signal source_sel : std_ulogic_vector(C_VC_SINKS downto 1);
+begin
+   dut_inst: entity work.repro4_sub
+   generic map (
+      G_SINKS => C_VC_SOURCES,
+      G_SOURCES => C_VC_SINKS)
+   port map (
+      avst_sink   => avst_src,
+      avst_source => avst_snk,
+      source_sel  => source_sel
+   );
+end architecture tb;
-- 
cgit v1.2.3