From 34666ab2dc542936871357d4fe6f54600c5aa325 Mon Sep 17 00:00:00 2001 From: Tristan Gingold <tgingold@free.fr> Date: Tue, 7 May 2019 20:05:57 +0200 Subject: Add reproducer for #816 --- testsuite/gna/issue816/test.vhdl | 74 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 testsuite/gna/issue816/test.vhdl (limited to 'testsuite/gna/issue816/test.vhdl') diff --git a/testsuite/gna/issue816/test.vhdl b/testsuite/gna/issue816/test.vhdl new file mode 100644 index 000000000..c7ed25851 --- /dev/null +++ b/testsuite/gna/issue816/test.vhdl @@ -0,0 +1,74 @@ +library ieee; +context ieee.ieee_std_context; + +library vunit_lib; +context vunit_lib.vunit_context; + +entity tb_test is + generic ( runner_cfg : string ); +end entity; + +architecture tb of tb_test is + + constant params: integer_vector_ptr_t := new_integer_vector_ptr(2, -1); + + constant clk_period : time := 20 ns; + + type time_t is array (natural range 0 to 1) of natural; + + procedure set_time(t: time_t) is begin + set(params, 0, t(0)); + set(params, 1, t(1)); + end; + + procedure get_time(variable t: inout time_t) is begin + t(0) := get(params, 0); + t(1) := get(params, 1); + end; + + impure function get_time return time_t is + variable t: time_t; + begin +-- t(0) := get(params, 0); +-- t(1) := get(params, 1); + return t; + end; + + constant null_time: time_t := (others => 0); + + impure function to_string(t: time_t) return string is begin + return to_string(t(0)) & " " & to_string(t(1)); + end; + + signal clk: std_logic; + +begin + + clk <= not clk after (clk_period/2); + + run: process(all) + variable r: time_t; + begin + if rising_edge(clk) then +-- info("Time: " & to_string(get_time)); +-- get_time(r); + end if; + end process; + + main: process + variable t: time_t; + begin + test_runner_setup(runner, runner_cfg); + get_time(t); + if t = null_time then + set_time((others=>natural'high)); + end if; + get_time(t); + info("Init test | time: " & to_string(t)); + info("Test done"); + test_runner_cleanup(runner); + wait; + end process; + test_runner_watchdog(runner, 500 ms); + +end architecture; -- cgit v1.2.3