Next: A Translation Example, Main: Supported Constructs, Previous: Sequential Statements The following is a comprehensive list of VHDL constructs translated by VHDL2Verilog version 2.6. - 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:
- Design with no architecture
- Architecture Declaration
Supported: - Multiple architectures for single entity declaration
Not supported: - Design with an architecture and no entity
- 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: Not supported: - Signals, Variables, Constants with base (sub)type CHARACTER
- Multidimentional arrays
- Unconstrained types
- Generics
Supported: 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 -
- *
- /
- REM
- =, /=, <,>, <=,>=
- SLL, SRL
- Qualified expressions
- Type conversions
- Function calls
Not supported: - ** (power) operator
- Aggregate primaries in an expression
- 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
- Concurrent signal assignments
- Component instantiation statements
- Generate statements
Not supported: - Concurrent procedure calls
- Concurrent assertion statements
- Block statements
- Declarative part:
Supported: - Type declaration
- Subtype declaration
- Constant declaration
- Signal declaration
- File declaration
- Component declaration
- Use clause (package)
- Statement part
Supported: - 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
- WAIT FOR
- WAIT UNTIL
- WAIT ON
- Process with an infinite wait at the end of a 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
- map-by-name
- map-by-order
- Scalar and vector OPENs
- 2D arrays as ports
- Instantiation of components residing in the same file
- Instantiation of components residing in a package
- Configuration specifications from WORK (entity /'93/, component)
- Configuration specifications from 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
|