Slightly off topic here, but a little help would be very welcome...
I was working with variables, e.g.:
variable pulse_delay : unsigned(23 downto 0) := (others => '0');
Then I started running a simulation with Modelsim. However, I noticed a particular condition was not being activated when it happened, e.g:
pulse_cnt := pulse_cnt + 1;
if pulse_cnt = 2199 then
pulse_cnt := (others => '0');
end if;
Basically it was counting upwards from 2200. I then remembered from somewhere in the depths of my head that some programs were very succeptible to having all the correct variables in the process sensitivity list:
process pulse_counter : process(clk_in, rising_edge, reset, usec_pulse)
variable pulse_delay : unsigned(23 downto 0) := (others => '0');
But I did not have "pulse_delay" in the sensitivity list, as it was defined in the process.
Later I changed "pulse_delay" to signal, outside the process, included it in the list, and suddenly it works as expected...
How sensitive (pardon the pun) are compilers to signals in the sensitivity list? I'd heard that was a thing of the past kind of...
Cheers,
Alberto