wdbcvt: Bundling Waveform Test Corpora and Daily Nightly Releases

#EDA#Vivado#bazel#CI#tooling#wdbcvt#auto

wdbcvt now publishes two new release archives with every build: a documentation bundle and a waveform corpus. The waveform archive packages the test suite’s .wdb files, ground-truth .fst conversions, and HDL source files together. Nightly builds now run daily, check the repository forge for new commits, and publish all build artifacts to Forgejo and GitHub.

Why a standalone waveform corpus matters

Tool developers who study Vivado’s .wdb format need test cases. Vivado is a multi-gigabyte software package. Running simulations requires licenses and tool setups that many open-source developers do not maintain. The wdbcvt repository already contains dozens of simulated test cases across VHDL, Verilog, and SystemVerilog. Previously, these test cases stayed inside the repository tree alongside intermediate simulation files. Developers of external tools had to clone the full repository or run Vivado locally to obtain sample waveforms.

Providing a pre-packaged waveform archive removes that barrier. Anyone writing a waveform parser or waveform viewer can download real-world simulation data directly from the release page.

Bundling waveforms and sources with Bazel

The waveform archive requires a clean directory structure. Each test case must include its original HDL source files (.v, .sv, .vhd, and .vhdl), the generated .wdb waveform, and the converted .fst reference. The build rules place the HDL source files in the same directory as the waveforms for each case. Keeping sources and waveforms together lets developers inspect the design unit and the binary signal data side by side.

Intermediate simulator files must not enter the archive. Vivado simulation runs create .vcd files, xsim.dir directories, and various .jou and .log files. These files add hundreds of megabytes of noise without providing value for waveform format analysis.

Bazel targets assemble the release archives cleanly:

  • //hdl:all_wdb aggregates the simulation outputs across all HDL test cases.
  • //tools/waveforms/bundle collects the .wdb files, the .fst files, and the matching HDL sources. It discards all simulator debris and writes the result into wdbcvt-waveforms.tar.gz.
  • //docs:archive gathers all Markdown specification documents under docs/ into wdbcvt-docs.tar.gz.

Because Bazel controls the inputs, the produced tarballs contain only the declared files.

Daily rolling nightly releases

Automated releases need a regular schedule and change detection. The nightly release workflow previously ran on a monthly schedule. The workflow now runs every day at 03:00 UTC.

To prevent empty releases, the workflow queries the Forgejo API before starting the build. If the latest commit SHA matches the latest release tag, the workflow exits early. The workflow only builds and publishes artifacts when new commits exist.

When changes are present, the release job builds all target binaries and tarballs into dist/release/. The workflow then uploads every file in dist/release/ to the Forgejo release and synchronizes the assets to the GitHub mirror.

Using the release artifacts

You can find the new archives on the wdbcvt releases page. The documentation archive provides the current specification of the .wdb binary format. The waveform archive provides ready test cases for tools such as Surfer and GTKWave. External test suites can now test their waveform parsers against real Vivado outputs without running Vivado.