Introduction

hdltbgen parses a VHDL entity declaration and generates testbench artifacts from the extracted interface.

The tool is designed for a simple, file-based workflow:

  1. Read a VHDL file containing an entity declaration.

  2. Extract generics, ports, and basic signal metadata.

  3. Classify clock and reset signals automatically or from CLI options.

  4. Generate one or more output artifacts for testbench creation.

Supported input

hdltbgen currently supports:

  • VHDL source files with the extension .vhd

  • One top-level entity per processed file

  • Entity generics and ports declared in a form the regular-expression based parser can interpret

Supported generators

  • VHDL testbench

  • CSV stimulus and response table

  • Excel workbook with optional VBA-assisted CSV export

What the tool produces

Depending on the selected generator type, hdltbgen can create these files in the output directory:

  • entity_tb.vhd for the generated testbench

  • entity_tb_sim.vhd for an optional simulation wrapper around the generated testbench

  • entity_tb.csv for editable stimulus and expected response vectors

  • entity_tb.xlsm for spreadsheet-driven editing of vectors and export to CSV

Core capabilities

The implementation includes the following behaviors that are important when using the tool in practice:

  • Automatic detection of clock signals from port names containing clk if no clock is provided explicitly

  • Automatic detection of active-low resets from names such as rstn, resetn, nreset, or nrst

  • Automatic detection of active-high resets from names containing rst or reset if no active-low reset was detected

  • Automatic insertion of a virtual input clock named clk_auto_gen when no clock can be found in the entity

  • Optional interactive prompting for generic values via the command line

  • Parallel generation of multiple artifact types from the same parsed interface

When to use hdltbgen

hdltbgen is a good fit when you want to create a repeatable starting point for testbench work from an entity interface instead of writing all boilerplate by hand.

Typical use cases are:

  • creating a first executable VHDL testbench skeleton

  • preparing CSV-based stimulus tables for simulation

  • handing signal-oriented test vectors to engineers who prefer spreadsheet editing

  • generating a VUnit-compatible testbench scaffold

For the exact command-line syntax, see Usage and the generated argument reference in Command-Line Interface.