Closed smaslovski closed 8 months ago
To add more to this report, I can tell that the crash does not appear if the code of fft module is changed as follows:
architecture recursive of fft is
begin
stage_n :
if POW > 0 generate
subtype half_array is data_vector (0 to DIM/2-1);
signal x_e, x_o, even, odd : half_array;
alias w_b : half_array is w(0 to DIM/2-1);
alias w_t : half_array is w(DIM/2 to DIM-1);
begin
x_e <= even_elem(x);
even_fft :
entity fft
generic map (
POW => POW-1, w => even_elem(w))
port map (
x => x_e, y => even);
x_o <= odd_elem(x);
odd_fft :
entity fft
generic map (
POW => POW-1, w => even_elem(w))
port map (
x => x_o, y => odd);
butterfly:
process (all) is
begin
for i in half_array'range loop
y(i) <= even(i) + odd(i) * w_b(i);
y(i+DIM/2) <= even(i) + odd(i) * w_t(i);
end loop;
end process;
end generate stage_n;
stage_0 :
if POW = 0 generate
y <= x;
end generate stage_0;
end architecture recursive;
In principle, it should be possible to achieve the same result just by adding "inertial" keyword before the function calls in the port map association lists. However, it seems that NVC does not know about such syntax, although it is a part of VHDL 2008 stantard.
BR, Stanislav
I've fixed the crash above and also added support for inertial
in port maps.
Hi,
I've found that NVC crashes at elaboration stage with the vhdl code given futher below. Here is the complete crash report:
Here is the affected code:
BR, Stanislav