Why is this an issue?

VHDL signal is the object used to describe an electrical wire connection or a register. VHDL signal is the way to have a communication between VHDL processes, whereas variable were meant to store a value inside a VHDL process. A variable is assigned without any delay whereas signal assignment lead to an event after a delta delay. This difference can induce design errors or simulation and synthesis mismatch. Thus, variable should only be used in processes, functions and procedures.

How to fix it

Code examples

Noncompliant code example

entity e is -- Noncompliant: Variable v not declared in process or function or procedure
  variable v : std_logic;
begin
  ...
end;

Compliant solution

process -- Compliant: Variable v declared in process
  variable v : std_logic;
begin
  ...
end process;

Resources

Related rules