Generators

hdltbgen can emit three artifact types from the same parsed entity model.

VHDL generator

The VHDL generator creates a testbench skeleton that includes:

  • a generated header block

  • standard IEEE library imports

  • optional VUnit imports

  • signal declarations for entity ports

  • constants for generics

  • DUT instantiation

  • a generated clock process

  • reset sequencing

  • CSV-driven stimulus application and response checking logic

When --simfile is enabled, the generator creates an additional wrapper file that instantiates both the DUT and the generated testbench entity.

The generated VHDL relies on a CSV test vector file named after the entity, so the CSV artifact is part of the expected workflow even if it is created or maintained later.

CSV generator

The CSV generator creates a structured text file for test vectors.

Its content includes:

  • a comment-like header section

  • a port information summary

  • separated input and output signal listings

  • placeholder space for user-defined test steps

Clock ports are intentionally excluded from the editable vector section.

Excel generator

The Excel generator creates a workbook intended for manual vector editing. It:

  • builds a worksheet named after the entity

  • writes the same header information used by the other generators

  • groups stimulus columns and response columns

  • freezes panes for easier editing

  • inserts highlighted placeholder sections for reset and test steps

  • attempts to embed VBA code for CSV export on save

The final target format is a macro-enabled workbook with the extension .xlsm.

Excel-specific requirement

The Excel path depends on local Microsoft Excel automation through xlwings.

Python dependencies for the Excel generator are optional and can be installed with:

pip install "hdltbgen[excel]"

If VBA insertion fails, hdltbgen prints guidance that Excel must allow access to the VBA project object model. On systems without a working Excel installation, the Excel generator is therefore the least portable option.