The process keyword defines a sequential process intended to model all or part of a design entity.

 

A process statement includes—in this order—an optional sensitivity list, a declarations section, a "begin" statement, the sequential statements describing the operation of the process, and an "end" statement.

 

The sensitivity list identifies signals to which the process is sensitive.  Whenever an event occurs on an item in the sensitivity list, the sequential instructions in the process are executed.  If no sensitivity list is provided, the process executes until suspended by a wait statement.

 

In addition to signal and variable assignments, the sequential statements in the body of the process can include the following: assertion, case, exit, if, loop, next, null, procedure, return, and wait.

 

Example

    reg: process(Rst,Clk)

            variable Qreg: std_ulogic_vector(0 to 7);

    begin

            if Rst = '1' then   -- Async reset

                Qreg := "00000000";

            elsif rising_edge(Clk) then

                if Load = '1' then

                    Qreg := Data;

                else

                    Qreg := Qreg(1 to 7) & Qreg(0);

                end if;

            end if;

            Q <= Qreg;

    end process;

 

LRM

    9.2

 

See also

image\diamond.gif  Architecture

image\diamond.gif  Assert

image\diamond.gif  Case

image\diamond.gif  Loop

image\diamond.gif  Procedure

image\diamond.gif  Wait

image\diamond.gif  Process Statement

image\diamond.gif  Sequential Statements