VHDL-2008 Features

The VHDL-2008 standard (IEEE 1076-2008) introduced several significant improvements that make the language more concise, flexible, and powerful. Most modern synthesis and simulation tools (Vivado, Quartus, ModelSim) have strong support for VHDL-2008.

1. Simplified Sensitivity Lists

Instead of listing every signal in a combinational process, you can use the keyword all.

-- Before 2008
process (a, b, c, d, sel)
-- VHDL-2008
process (all)
begin
    -- ...
end process;

2. Enhanced Logic Operators

VHDL-2008 allows unary logical operators for reduction, similar to Verilog.

-- Returns '1' if any bit in the vector is '1'
any_bit_high <= or data_vector;

3. Better Generic Support

  • Generics in Packages: You can now define generics for entire packages.

  • Generic Types: You can pass a type as a generic parameter to a module.

4. External Names (Hierarchical References)

VHDL-2008 allows you to access signals deep within the design hierarchy from your testbench using external names. This is extremely useful for verification without adding extra ports to every module.

alias probe_sig : std_logic is << signal .tb.uut.sub_inst.internal_sig : std_logic >>;

5. Fixed and Floating Point Packages

VHDL-2008 includes standardized packages for fixed-point (fixed_pkg) and floating-point (float_pkg) arithmetic, which were previously vendor-specific or required external libraries.

6. Simplified I/O and Strings

Improvements to the textio package and the ability to use string expressions in port maps make testbench development much smoother.

7. Logical Operators for std_logic_vector

Previously, operators like and or or between two std_logic_vector signals required a loop or a conversion. In VHDL-2008, these work as expected.

res <= vec_a and vec_b; -- Bitwise AND

Enabling VHDL-2008

To use these features, you must tell your synthesis or simulation tool to use the VHDL-2008 standard. - Vivado: Set the file type to “VHDL 2008” in the file properties. - ModelSim: Use the -2008 flag with vcom. - GHDL: Use the –std=08 flag.

Further Reading

For more hardware design tutorials, visit Agus L. Setiawan at Technolati.com.