A process sensitivity list tells VHDL which signals to watch. When any signal in the list changes, the process runs. This helps the circuit react only when needed.
Process sensitivity list in VHDL
process (signal1, signal2, ...)
begin
-- sequential statements
end process;The signals inside the parentheses form the sensitivity list.
The process runs only when any signal in the list changes value.
a or b changes, updating c.process (a, b)
begin
c <= a and b;
end process;clk, typically a clock signal.process (clk)
begin
if rising_edge(clk) then
q <= d;
end if;
end process;reset changes, to reset q.process (reset)
begin
if reset = '1' then
q <= '0';
end if;
end process;process
begin
-- no sensitivity list means this process runs once at start
wait;
end process;This VHDL code defines a simple circuit where output c updates whenever inputs a or b change. The process sensitivity list contains a and b, so the process runs only when one of these signals changes.
library ieee; use ieee.std_logic_1164.all; entity sensitivity_example is port ( a : in std_logic; b : in std_logic; c : out std_logic ); end sensitivity_example; architecture behavior of sensitivity_example is begin process (a, b) begin c <= a or b; end process; end behavior;
Time complexity is not applicable as this is hardware description, but simulation efficiency improves by limiting sensitivity list to needed signals.
Common mistake: forgetting to include all signals that affect outputs in the sensitivity list, causing simulation mismatches.
Use sensitivity lists for combinational logic. For clocked logic, use only the clock (and reset if needed) in the sensitivity list.
A process sensitivity list controls when the process runs by listing signals to watch.
Include all signals that affect the process outputs to avoid simulation errors.
Use sensitivity lists to model combinational or clocked logic efficiently.
Practice
Solution
Step 1: Understand the role of sensitivity list
The sensitivity list tells VHDL which signals to watch for changes.Step 2: Identify what triggers the process
The process runs only when a signal in the sensitivity list changes value.Final Answer:
Which signals trigger the process to run when they change -> Option AQuick Check:
Sensitivity list = triggers process run [OK]
- Thinking sensitivity list sets signal data types
- Confusing sensitivity list with signal assignment order
- Assuming sensitivity list controls clock frequency
Solution
Step 1: Recall VHDL process syntax
The sensitivity list is enclosed in parentheses after the keyword process.Step 2: Match correct syntax
Only the syntax with parentheses and comma-separated signals is correct: process(clk, reset)Final Answer:
process(clk, reset) -> Option DQuick Check:
Parentheses and commas = correct syntax [OK]
- Omitting parentheses around sensitivity list
- Using square or curly brackets instead of parentheses
- Separating signals with spaces instead of commas
process(a, b) begin c <= a and b; end process;
What happens if signal
b changes value?Solution
Step 1: Check sensitivity list signals
The process sensitivity list includes signalsaandb.Step 2: Understand process triggering
Whenbchanges, the process runs and updatescwitha and b.Final Answer:
The process runs and updatesc-> Option BQuick Check:
Signal in sensitivity list changed = process runs [OK]
- Thinking only first signal triggers process
- Assuming process runs but output doesn't update
- Confusing syntax error with normal behavior
process(clk)
begin
if reset = '1' then
q <= '0';
elsif rising_edge(clk) then
q <= d;
end if;
end process;Assuming
reset is a signal, what is the problem?Solution
Step 1: Check signals used inside process
The process usesresetandclksignals.Step 2: Verify sensitivity list completeness
Onlyclkis in the sensitivity list;resetis missing, which can cause simulation mismatches.Final Answer:
Reset signal is missing from the sensitivity list -> Option AQuick Check:
All input signals must be in sensitivity list [OK]
- Ignoring signals that affect outputs in sensitivity list
- Thinking clock should be removed from sensitivity list
- Confusing edge detection with sensitivity list content
a and b. Inside, you compute c <= a or b;. Later, you add a new signal enable that gates the output: if enable = '1' then c <= a or b; else c <= '0'; end if;What must you do to the sensitivity list to ensure correct simulation?
Solution
Step 1: Identify all signals affecting outputs
Nowenablecontrols outputcalong withaandb.Step 2: Update sensitivity list accordingly
To simulate correctly,enablemust be added to the sensitivity list withaandb.Final Answer:
Addenableto the sensitivity list -> Option CQuick Check:
All input signals in sensitivity list = correct simulation [OK]
- Forgetting to add new control signals to sensitivity list
- Removing original signals from sensitivity list incorrectly
- Assuming sensitivity list auto-updates with code changes
Ready to prove it?
Pass the test and this pattern moves unknown
