To provide sequential logic in design with VHDL I have to use process statement, which has sensitivity_list
. From different sources I know, that sensitivity list is non-synthesizable construction, i.e., if I will synthesize this code:
...
process(c)
b <= a and c;
end process;
...
I would not have any latch by c
signal, it will just be a usual AND-gate. But, when I synthesize code without sensitivity list:
...
process
b <= a and c;
end process;
...
no matter what version of VHDL I choose, I get the same problem:
Error (10442): VHDL Process Statement error at process_test.vhd(79): Process Statement must contain either a sensitivity list or a Wait Statement
My question is: why does synthesizer care about sensitivity list? In my understanding, it is over-concerned about customers and this cannot be an error, but a critical warning, or even nothing, and warnings only when the simulation is on.
UPD. Here is full code and some images. I used Quartus Prime Standard 16.1
library ieee;
use ieee.std_logic_1164.all;
entity stck_ovflw is
port
(
a : in std_logic;
c : in std_logic;
b : out std_logic
);
end entity;
architecture rtl of stck_ovflw is
begin
process(c)
begin
b <= a AND c;
end process;
end rtl;
It is the job of a logic synthesiser to generate a circuit that behaves exactly the same as your RTL. A process without a sensitivity list or a wait if an infinite loop and so cannot be simulated. Therefore, given my first sentence, how can a logic synthesiser possibly generate a circuit that behaves exactly the same as your RTL?
This should never be a problem, because you should always simulate before you synthesise. So, you should have fixed this before the logic synthesiser ever sees your code.