Skip to content

Commit

Permalink
testsuite/gna: add a test for #1832
Browse files Browse the repository at this point in the history
  • Loading branch information
tgingold committed Aug 26, 2021
1 parent 8e84ebd commit 98b54bc
Show file tree
Hide file tree
Showing 2 changed files with 132 additions and 0 deletions.
121 changes: 121 additions & 0 deletions testsuite/gna/issue1832/issue.vhdl
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
library ieee;
use ieee.std_logic_1164.all;


entity sequencer is
generic (
seq : string
);
port (
clk : in std_logic;
data : out std_logic
);
end entity sequencer;


architecture rtl of sequencer is

signal index : natural := seq'low;

function to_bit (a : in character) return std_logic is
variable ret : std_logic;
begin
case a is
when '0' | '_' => ret := '0';
when '1' | '-' => ret := '1';
when others => ret := 'X';
end case;
return ret;
end function to_bit;

begin

process (clk) is
begin
if rising_edge(clk) then
if (index < seq'high) then
index <= index + 1;
end if;
end if;
end process;

data <= to_bit(seq(index));

end architecture rtl;


library ieee;
use ieee.std_logic_1164.all;


library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;


entity issue is
port (
clk : in std_logic
);
end entity issue;


architecture psl of issue is

signal a, b : std_logic;

begin


-- 012345678901
SEQ_A : entity work.sequencer generic map ("__-___-_____") port map (clk, a);
SEQ_B : entity work.sequencer generic map ("___-_____-__") port map (clk, b);


-- All is sensitive to rising edge of clk
default clock is rising_edge(clk);

-- This assertion should hold
INF_a : assert always {a} |=> {not b[*0 to inf]; b};

INF_b : assert always {a} |=> {not b[*]; b};


end architecture psl;


library ieee;
use ieee.std_logic_1164.all;

use std.env.all;


entity test_issue is
end entity test_issue;


architecture sim of test_issue is

signal clk : std_logic := '1';

begin


clk <= not clk after 500 ps;

DUT : entity work.issue(psl) port map (clk);

-- stop simulation after 30 cycles
process
variable index : natural := 29;
begin
loop
wait until rising_edge(clk);
index := index - 1;
exit when index = 0;
end loop;
stop(0);
end process;


end architecture sim;
11 changes: 11 additions & 0 deletions testsuite/gna/issue1832/testsuite.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#! /bin/sh

. ../../testenv.sh

export GHDL_STD_FLAGS=--std=08
analyze issue.vhdl
elab_simulate issue

clean

echo "Test successful"

0 comments on commit 98b54bc

Please sign in to comment.