メインコンテンツ

Supported Synthesizable RTL Constructs and Keywords in HDL Coder

R2026b

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 instantiationYes--

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 support 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