Design reusability
• VHDL:
– Procedures and functions may be placed in a package
so that they are available to any design-unit that
wishes to use them
• Verilog:
– There is no concept of packages in Verilog.
– Functions and procedures used within a model must be
defined in the module.
– To make functions and procedures generally accessible
from different module statements the functions and
procedures must be placed in a separate system file
and included using the `include compiler directive.
High level constructs
• VHDL:
– There are more constructs and features for high-level
modeling in VHDL than there are in Verilog.
– Abstract data types can be used along with the
following statements:
• package statements for model reuse,
• configuration statements for configuring design structure,
• generate statements for replicating structure,
• generic statements for generic models that can be
individually characterized, for example, bit width.
– All these language statements are useful in
synthesizable models.
• Verilog:
– Except for being able to parameterize models by
overloading parameter constants, there is no
equivalent to the high-level VHDL modeling statements
in Verilog
Low level constructs
• VHDL:
– Simple two input logical operators are built into the
language, they are: NOT, AND, OR, NAND, NOR, XOR
and XNOR.
– Any timing must be separately specified using the after
clause.
– Separate constructs defined under the VITAL language
must be used to define the cell primitives of ASIC and
FPGA libraries.
• Verilog:
– The Verilog language was originally developed with
gate level modeling in mind, and so has very good
constructs for modeling at this level and for modeling
the cell primitives of ASIC and FPGA libraries.
– Examples include User Defined Primitives (UDP), truth
tables and the specify block for specifying timing delays
across a module.