Names

Used In

  • Entity
  • Architecture
  • Package
  • Package Body
  • Configuration

Reference Manual

VHDL-93:
  • Section 13.3

Syntax

See reference manual.

Rules and Examples

Names (or identifiers) may consist of letters, numbers and underscore:

architecture RTL of UNIT_34 is
signal SOUND_ALARM : std_ulogic;

Case is not sensitive, so the following are all equivalent:

An_Example_Name
AN_EXAMPLE_NAME
an_example_name

Names must start with a letter:

signal 16_BIT_BUS : integer;   -- illegal
signal _BUS_16_BIT_ : integer; -- illegal
signal BUS_16_BIT : integer;   -- OK

Names may be of arbitrary length.

None of the following VHDL keywords may be reused as a name:

  • signal
  • bus
  • component
  • wait
  • group
  • impure
  • inertial
  • literal
  • postponed
  • pure
  • rol
  • ror
  • shared
  • sla
  • sll
  • sra
  • srl
  • unaffected
  • xnor

VHDL supports extended identifiers. An extended identifier is delimited by backslashes (\\), and may use any of the printing characters from the VHDL extended character set.

This allows the use of names which would otherwise be illegal in VHDL (e.g.where compatibility with a preexisting design database is required). Examples:

\Buffer\ -- would otherwise be a keyword
\Buff\
\BUFF\   -- these are now two distinct identifiers
\BUS_$8\ -- contains otherwise illegal character

Synthesis Issues

Legal names (identifiers) are supported for synthesis, but long names may be truncated in some tools, or when using certain output netlist formats.