nickg / nvc

VHDL compiler and simulator
https://www.nickg.me.uk/nvc/
GNU General Public License v3.0
636 stars 80 forks source link

Issue with waveform of two-dimensional array of unsigned #1071

Closed yikkrubz closed 1 week ago

yikkrubz commented 2 weeks ago

The waveform of the signal E is rendered in gtkwave as e[0][0:1] when the file C.vhd is compiled by nvc. The signal values do not change. The waveform computed by Questa and ghdl shows the signal E of the form e[0][0][7:0] and e[0][1][7:0] (see waveforms).

nvc: F_nvc

Questa: f_questa

F.vhd

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

use std.env.finish;

entity F is
end F;

architecture sim of F is

  subtype A is unsigned(7 downto 0);
  type B is array (natural range <>) of A;
  signal C : B(0 to 1) := (others => (others => '0'));

  type D is array (0 to 0) of B(0 to 1);
  signal E : D := (others => (others => (others => '0')));

begin

  E(0) <= C;

  process
  begin
    wait for 10 ns;

    for i in C'range loop
      C(i) <= to_unsigned(C'length - i, A'length);
    end loop;

    wait for 10 ns;

    finish;
  end process;

end architecture;

nvc 1.15-devel (1.14.0.r123.gd7523ec9) (Using LLVM 19.1.3) macos 14.7.1 (intel)

yikkrubz commented 1 week ago

Thank you for fixing this issue.