Select

LRM §9.5.2.

Select is a concurrent signal assignment which assigns expressions depending on the value of the expression at the top.

Syntax:

[ label: ] with expression select
  target_signal <= [ options ] expression [ after time_expression ] when choices; 

options = guarded | transport | reject time_expression inertial
choices = choice | ...
choice = constant_expression | range | others   -- the last choice

Description:

Select is a concurrent statement which assigns one of several expressions to a signal, depending on the value of the expression at the top. Select is equivalent to a process containing a case statement.

Example:

with Addr select
  A <= '0' when 1,
  A <= '1' when 2,
  A <= '0' when 3,
  A <= '1' when others;

Notes:

See also:

Block, Case, Signal assignment