Return to previous page Advance to next page
VHDL Reference Guide
Chapter 11: VHDL Constructs

VHDL Construct Support

A construct can be fully supported, ignored, or unsupported. Ignored and unsupported constructs are defined as follows.

Constructs are listed in the following order.

Design Units

Default values for parameters are unsupported. Assigning subprograms to indexes and slices of unconstrained out parameters is unsupported, unless the actual parameter is an identifier.

Subprogram recursion is unsupported if the recursion is not bounded by a static value.

Resolution functions are supported for wired-logic and three-state functions only.

Subprograms can only be declared in packages and in the declaration part of an architecture.

Data Types

Declarations

Attribute declarations are fully supported. However, the use of user-defined attributes is unsupported.

Specifications

Names

Identifiers and Extended Identifiers

An identifier in VHDL is a user-defined name for any of the following: constant, variable, function, signal, entity, port, subprogram, parameter, and instance.

Specifics of Identifiers

The characteristics of identifiers follow.

Specifics of Extended Identifiers

The characteristics of extended identifiers follow.

The following example shows some extended identifiers.

\a+b\       \3state\
\type\       \(a&b)|c\

For more information about identifiers and extended identifiers, see the “Identifiers” section of the “Expressions” chapter.

Operators

Shift and Rotate Operators

You can define shift and rotate operators for any one-dimensional array type whose element type is either of the predefined types, BIT or Boolean. The right operand is always of type integer. The type of the result of a shift operator is the same as the type of the left operand. The shift and rotate operators are included in the list of VHDL reserved words in the “VHDL Construct Support” section of this chapter. There is more information about the shift and rotate operators that numeric_std supports in the “Shift and Rotate Operators” section of the “Foundation Express Packages” chapter. The shift operators follow.

The rotate operators follow.

The following example illustrates the use of shift and rotate operators.

architecture arch of shft_op is
begin
   a <= "01101";
   q1 <= a sll 1;-- q1 = "11010"
   q2 <= a srl 3;-- q2 = "00001"
   q3 <= a rol 2;-- q3 = "10101"
   q4 <= a ror 1;-- q4 = "10110"
   q5 <= a sla 2;-- q5 = "10100"
   q6 <= a sra 1;-- q6 = "00110"
end;

xnor Operator

You can define the binary logical operator xnor for predefined types BIT and Boolean, as well as for any one-dimensional array type whose element type is BIT or Boolean. The operands must be the same type and length. The result also has the same type and length. The xnor operator is included in the list of VHDL reserved words in the “VHDL Reserved Words” section of this chapter.

a <= "10101";
b <= "11100";
c <= a xnor b; -- c = "10110"

Operands and Expressions

Sequential Statements

Concurrent Statements

Predefined Language Environment