BugHunter Pro and the VeriLogger Simulators

9.10 Recommended Modeling Style VHDL

9.10 Recommended Modeling Style VHDL

Previous topic Next topic  

9.10 Recommended Modeling Style VHDL

Previous topic Next topic  

VHDL Supported and Unsupported Constructs

The following is a comprehensive list of VHDL constructs translated by VHDL2Verilog.

Entity Declaration

Supported:

Design with a single entity with architecture

Entity ports: IN , OUT , INOUT , BUFFER , LINKAGE

Interface element types:

BOOLEAN

BIT

BIT_VECTOR

STD_ULOGIC

STD_LOGIC

STD_ULOGIC_VECTOR

STD_LOGIC_VECTOR

INTEGER

Not supported:

Interface element types:

CHARACTER

STRING

REAL

Design with no architecture

Entity statements

Architecture Declaration

Supported:

Multiple architectures for single entity declaration

(Simple) Configuration declaration

Not supported:

Design with an architecture and no entity

Configuration specification

Packages and Package Bodies

Supported:

Signal, Variable, Constant declaration

Type declaration

Subtype declaration

Enumerated type declaration

Component declaration

Subprogram declaration

Subprogram body (requires additional manual translation)

NOTE: Packages are translated only when used in a design!

Data Types

Supported:

Signals/Variables/Constants of BASE subtype:

integer

real

bit

bit_vector

std_{u}logic

std_{u}logic_vector

character

string

alias declarations

Signal/Variable initialization

to bit

to vector

to hex

Subtype declarations with range constraint

Limited Support: 2D arrays of supported types

1D arrays of supported types equivalent to arrays of bits up to 2D

NOTE: for the above two cases, array types have to be CONSTRAINED.

Enumerated type declaration

Signal of enumerated type (state variable) translated to reg

Enumerated types declared in a:

Package

Architecture

Block

Process

Time types

Record types

Based literals (only base 2, 8, 10, 16)

Not supported:

Unconstrained types

Files

Generics

Supported:

Generics of base type as described in Data Types with default expression

integer

real

bit

bit_vector

std_{u}logic

std_{u}logic_vector

TIME

Not supported:

Generics without default expression

Expressions

Supported:

Expressions using signal and variables of types described in Data Types.

Expressions with all VHDL supported operators:

+, -, &

AND, OR, XOR, NAND, NOR, XNOR (93)

unary + and -

*

/

MOD

=, /=, <, >, <=, >=

SLL, SRL

** (power) operator (Only when used in a GENERATE statement)

Qualified expressions

Type conversions

Function calls

Aggregate primaries in an expression

Not supported:

* * (power) operator (Except in generates)

Allocator primaries

Sequential Statements

Supported:

Wait statement (only in a process sequential body)

Signal assignment

with INERTIAL delay

with TRANSPORT delay

NULL assignment

Variable assignment

Assignment to an aggregate

If statement

Case statement

Loop statement (FOR WHILE)

Null statement

ASSERT statement

Procedure call statement

Not supported:

REPORT statement

NEXT statement

EXIT statement

RETURN statement

Concurrent Statements

Supported:

Block statements

Process statements

Conditional signal assignments

Selected signal assignments

Component instantiation statements

Generate statements

Not supported:

Concurrent procedure calls

Concurrent assertion statements

Guarded signal assignments

Block statements

Supported:

Declarative part:

Type declaration

Subtype declaration

Constant declaration

Signal declaration

File declaration

Component declaration

Use clause (package)

Statement part

nested Blocks

Process

Concurrent assignment

Component instantiation

Generate

Not supported:

Ports and port maps

Generics and generic maps

Guard expressions

Process Statement

Supported:

Process variable declaration

Process with sensitivity list

Process without sensitivity list

Process with a WAIT as the first or last sequential statement

Process with an infinite wait at the end of a sequential body

Process with a WAIT UNTIL at any place in the sequential body

Edge-sensitive processes equivalent to Dffs

Dffs with/without reset

rising/falling_edge function

'EVENT attribute

'STABLE attribute

Concurrent Signal Assignments

Supported:

Concurrent assignment with delay

Concurrent assignment to an aggregate

Concurrent assignment to a target with simple expressions in the range NOTE: in Verilog, the expressions have to be CONSTANT

Conditional assignment

Selected signal assignment

Not supported:

Multiple waveform elements in a concurrent signal assignment

Component Instantiations

Supported:

Generic Maps

Generic mapping by ordered list

Generic mapping by using formals and actuals

Port Maps

Port mapping by ordered list

Port mapping by using formals and actuals

Port aspect of component declaration different from the entity

Scalar and vector OPENs

2D arrays as ports

Instantiation of components residing in the same file

Instantiation of components residing in a package

Generate Statement

Supported:

IF generate

FOR loop generate

Nested generates (FOR/IF)

Identical labels in generate block and in block enclosing generate

Component instantiations in generates

Concurrent assignments in generates

Processes in generates: regular, edge-sensitive (DFF-style)

Not supported:

Declarations local to generate (block declarative items)

Generates with loop parameters dependent on generics

Predefined Language Environment

Supported:

NOW function

Time type

'RANGE, 'LENGTH, 'LEFT, 'RIGHT, 'LOW, 'HIGH, 'EVENT, 'STABLE, 'LAST EVENT attributes

Not supported:

Other attributes

TextIO