The Process Block
The process block: sensitivity list, sequential statements, and combinational/sequential patterns.
What is a Process?
The process is the only place in VHDL where instructions execute sequentially (like a traditional programming language).
-- General structure
process(sensitivity_list)
-- local declarations (variables)
begin
-- sequential statements
end process;A process is a concurrent block relative to the rest of the architecture: multiple processes execute in parallel with each other, but the instructions inside a process are sequential.
The Sensitivity List
The process "wakes up" only when a signal in its sensitivity list changes.
Combinational Process
-- All signals read in the process must be in the list
process(i_a, i_b, i_sel)
begin
if i_sel = '0' then
w_mux <= i_a;
else
w_mux <= i_b;
end if;
end process;If a signal is forgotten in the sensitivity list of a combinational process, simulation may diverge from synthesis. A latch is mainly inferred when outputs are not assigned on every path.