On Dec 30, 11:11 am, Michael Hermann <
ralvar...@googlemail.com> wrote:
> Hi Kevin and Paul,
<snip>
> The two file version does NOT fail in HDL 8.3!
>
> --- test bench (first file)
Seems to me the test bench should be the second file, not the first.
Inside the architecture you instantiate the entity 'raff' which hasn't
been compiled yet if you have a completely empty work library. That
is likely not contributing to your particular probllem, just a
comment.
Modelsim also had the following complaints when compiling your code
'as-is' (other than swapping the order so that 'raff' is compiled
first.
** Error: C:/Sim/Junk/Junk3.vhd(111): Unknown entity 'rsff'. Use
expanded name.
** Warning: [4] C:/Sim/Junk/Junk3.vhd(112): (vcom-1207) An abstract
literal and an identifier must have a separator between them.
The error has to do with the following line of code
UUT: entity rsff port map (i => i, q => q);
which should be
UUT: entity work.rsff port map (i => i, q => q);
The warning is to the following line of code
i <= '0', '1' after 1ns;
which should be
i <= '0', '1' after 1 ns;
Again, these most likely have nothing to do with your problem, so this
is just a comment but I believe in both cases Modelsim is correct to
the LRM which would mean that Active HDL 8.3 is not correctly
reporting non-compliant stuff that it should (unless you are disabling
or otherwise ignoring these complaints).
>
> If I wrap the signal assignments in the UUT again by the process (comments), then the two-file version fails again, i.e. shows the expected behaviour.
>
I'm still not clear just what you mean by 'expected behaviour'. What
I would expect for any model of an RS flip flop is an infinite loop
and the simulator to stop if 'R' and 'S' are set at exactly the same
time. I'm not sure if that's what you expect or not, but that would
be the correct 'response' in this situation.
In any case, when running the code you posted (both forms with and
without the process) Modelsim does stop with an infinite loop
reporting the following error:
** Error: (vsim-3601) Iteration limit reached at time 1 ns.
> Strange! Up to a better explanation I have to believe HDL 8.3 is incorrect here.
>
The fact that you are getting different end results would indicate
that Active HDL is not correct in one case. Does Active HDL ever
report an infinite loop and stop for you?
Kevin Jennings