Main Content

Supported Synthesizable RTL Constructs and keywords in HDL Coder

Supported VHDL Constructs

The table lists the synthesizable VHDL® constructs in HDL Coder™ .

Entity and Architecture Declaration

VHDL ConstructsSupported?Comments
Entity declarationYes
Architecture declarationYes
Entity parameter port listYes
Entity signal declarationYes
Generic clauseYes

Package and Library Declaration

VHDL ConstructsSupported?Comments
Package declarationNo
Type declarationNo
Subtype declarationNo
Constant declarationYes
Variable declarationYes
Use clauseNo
Library declarationNo

Component and Configuration Declaration

VHDL ConstructsSupported?Comments
Configuration declarationNo
Configuration specificationNo
Component declarationYes
Component instantiationYesSupports ordered or named port map. Mixed and generic port mapping is not supported.
Generic clauseYes

Data Types and Vectors

VHDL ConstructsSupported?Comments
Integer declarationYes
Real declarationNo
String declarationNo
Bit_vectorYes
EnumeratedYes
Std_logicYesValues other than 0 and 1 (U, X, Z, W, L, H) are not supported.
Vector declarationYes

Identifiers and Comments

VHDL ConstructsSupported?Comments
Numbers (based, normal)YesBased literals support bases 2, 8, 10, and 16.
IdentifiersYes
Standard package functionsYesSupports signed, unsigned, to_std_logic_vector, resize, and to_integer.
Attribute instancesNo
Attribute declarationNo
RecordsNo
CommentsYes

Assignments

VHDL ConstructsSupported?Comments
Assignment statements (signal, variable)Yes
Selected signal assignmentYes

Operators

VHDL ConstructsSupported?Comments
Arithmetic operators (+,-,*, mod, rem)Yes
Relational operators (<, >, <<. >>)Yes
Unary operators (+,-)Yes
Logical operators (and, or, xor, nand, and nor)Yes
Absolute and exponential operators (abs, **) Yes
GatesYes

Conditional and Looping Statements

VHDL ConstructsSupported?Comments
If-else statementYes
Case statementYes
Conditional operators (?:)Yes
Assertion statementsNo
For loopNo
Loop statementsNo
Generate statementNo

Process Statements and Procedure Definitions

VHDL ConstructsSupported?Comments
Process statementYes
FunctionsNo
BlocksNo
Procedure definitionsNo
Function callsYesRecursive function calls are not supported.

Event Control Statements

VHDL ConstructsSupported?Comments
Event control statementsYes
Waveform conditionNo
Wait statementYes
Exit statementNo
Null statementNo
Return statementNo

Supported Verilog Constructs

The table lists the supported synthesizable Verilog® constructs in HDL Coder.

Module Definition and Instantiation

Verilog ConstructsSupported?Comments
Library declarationNo
Configuration declarationNo
Module declarationYes
Module parameter port listYes
Port declarationsYes
Module without portsNo
Local parameter declarationYes
Parameter declarationYes--
Module instatiationYes--

Data Types and Vectors

Verilog ConstructsSupported?Comments
Net declaration (Wire, Supply0, Supply1)Yes
Reg declarationYes
Integer declarationYes
Real declarationNo
String declarationNo
Vector declarationYes
Array supportYesArray indexing and multidimensional arrays are not supported.

Identifiers and Comments

Verilog ConstructsSupported?Comments
Lexical tokens (Whitespace, operator, comment)Yes
Numbers (Decimal, Binary, Hexadecimal, and Octal)YesDoes not support numbers such as x and z.
Identifiers (Simple, Escaped)No
Compiler directives (`define,`undef, `ifndef, `else if)Yes
System Functions ($signed, $unsigned)Yes
Attribute instancesNo
CommentsNo

Assignments

Verilog ConstructsSupported?Comments
Continuous assignmentYes
Procedural assignment (Always block)Yes
Blocking assignmentYes
Non-blocking assignmentYes

Operators

Verilog ConstructsSupported?Comments
Arithmetic operators (+, -, *, **, /, <<<, >>>)Yes
Reduction operators (&, ~&, |, ~|, ^, ~^, or ^~)Yes
Logical operators (<<, >>, !, &&, | |, ==, !=)Yes
Relational operators (>, <, >=, <=, ==, !=) Yes
Bitwise operators (~, &, |, ^, ~^, ^~)Yes
Unary operators (+, -)Yes
Conditional operators (?:)Yes
ConcatenationYes
Bit SelectYes

Conditional and Looping Statements

Verilog ConstructsSupported?Comments
If-else statementYes
Case statementYes
Conditional operators (?:)Yes
For loopNo
Loop Generate constructNo
Conditional Generate constructNo
Generate regionNo
Genvar declarationNo

Procedural Blocks and Events

Verilog ConstructsSupported?Comments
Initial construct (ROM modeling)No
Always constructYes
Task declarationNo
Function declarationNo
Sequential blocksYes
Block declarationsYes
Event control statementsYes
Function callsYesDoes not supports recursive function calls.
Task enableNo

Others

Verilog ConstructsSupported?Comments
Gate instantiationNo
Drive strengthNo
DelaysNo
SpecparamsNo
Specify blockNo
Semantic verification (unused ports, correct module instantiation)Yes
Clock bundle identificationYesMultiple sample rates and multiple clock signals are not supported.
Register inferenceYes
RAM inferenceYesSupports Simple Dual Port RAM. Other types of RAM are not supported.
ROM inferenceNo
Counter inferenceNo

Supported VHDL Keywords

The table lists the supported synthesizable VHDL keywords in HDL Coder.

absaccessafteraliasall
andarchitecturearray assertattribute
beginblockbodybufferbus
casecomponentconfiguration constantdisconnect
downtoelseelsifendentity
exitfileforfunctiongenerate
genericgroupguardedifimpure
ininertialinoutislabel
librarylinkageliteralloopmap
modnandnewnextnor
notnullofonopen
orothersoutpackageport
postponedprocedureprocesspurerange
recordregisterrejectremreport
returnrolrorselectseverity
signalsharedslasllsra
srlsubtypethentotransport
typeunaffectedunitsuntiluse
variablewaitwhenwhilewith
xnorxor   

Supported Verilog Keywords

The table lists the supported synthesizable Verilog keywords supported in HDL Coder.

alwaysandassignautomaticbegin
bufbufif0bufif1casecasex
casezcellcmosconfigdeassign
defaultdefparamdesigndisableedge
elseendendcaseendconfigendfunction
endgenerateendmoduleendprimitiveendspecifyendtable
endtaskeventforforceforever
forkfunctiongenerategenvarhighz0
highz1ififnoneincdirinclude
initialinoutinputinstanceinteger
joinlargeliblistlibrarylocalparam
macromodulemediummodulenandnegedge
nmosnornoshowcancellednotnotif0
notif1oroutputparameterpmos
posedgeprimitivepull0pull1pulldown
pulluppulsestyle_oneventpulsestyle_ondetectrcomsreal
realtimeregreleaserepeatrnmos
rpmosrtranrtranif0rtranif1scalared
showcancelledsignedsmallspecifyspecparam
strong0strong1supply0supply1table
tasktimetrantranif0tranif1
tritri0tri1triandtrior
triregunsignedusevectoredwait
wandweak0weak1whilewire
worxnorxor