Skip to content

Add yavs simulator support - #1249

Closed
ru551n wants to merge 3 commits into
VUnit:masterfrom
ru551n:feature/yavs-upstream
Closed

ru551n wants to merge 3 commits into
VUnit:masterfrom
ru551n:feature/yavs-upstream

Conversation

@ru551n

@ru551n ru551n commented Oct 28, 2026

Copy link
Copy Markdown
Contributor

Adds experimental support for yavs, a VHDL-2008 and VHDL-2019 simulator. You select it with VUNIT_SIMULATOR=yavs. It is registered last, so it is never picked automatically when another simulator is found.

What it does

  • Libraries: each library is a directory that yavs creates on first analysis. --work/--map pass the project's libraries, and every file is analyzed with its own --std. 2008 and 2019 files can be mixed; other standards are rejected at setup.
  • Simulation: yavs run, or yavs elab for --elaborate, with lib.entity.arch or a configuration as the top and -g generics. Everything after the subcommand goes through a response file, which keeps long generics such as runner_cfg clear of command-line length and quoting limits. --exit-severity follows vhdl_assert_stop_level, and the simulator hooks' elab/run flags and environment are applied.
  • --gui: runs yavs run --gui with the arguments of the normal run, which opens it in yavs-gui.
  • Options and marker: yavs.global_flags, yavs.a_flags, yavs.elab_flags, yavs.sim_flags, and a yavs_version package marker.
  • Version check: yavs --version is checked at setup.

Needs a change in vunit-osvvm

As for JanusHDL (#1248), vunit_pkg.toml in vunit-osvvm picks a CoverageVendorApiPkg variant by simulator name, so yavs gets none, and random and verification_components fail to analyze. Adding simulator == "yavs" to the CoverageVendorApiPkg_default.vhd condition fixes it. I verified that locally.

Testing (yavs 0.8.0 release, Linux x86-64)

  • All vunit/vhdl/*/run.py suites except python pass: 1338 of 1338 (check, com, data_types, dictionary, logging, path, random, run, string_ops, verification_components). The random and verification_components results include the vunit-osvvm change above.
  • tests/acceptance/test_artificial.py, test_dependencies.py and the new test_yavs_fake.py (against a fake yavs script) pass, with one exception: lib.tb_ieee_warning.pass fails, because yavs 0.8.0 ignores --ieee-warnings=off (yavs#836). The interface passes the flag correctly.
  • New tests/unit/test_yavs_interface.py. The rest of tests/unit passes. pylint, pycodestyle, black and the license test are clean on the new files.

Left out for follow-ups

🤖 Generated with Claude Code

ru551n and others added 3 commits October 28, 2026 15:58
yavs is a VHDL-2008 and VHDL-2019 simulator. It is registered last, so it
is only used when selected with VUNIT_SIMULATOR=yavs. Simulation arguments
go through a response file, which keeps long generics such as runner_cfg
clear of command line length and quoting limits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ru551n

ru551n commented Oct 28, 2026

Copy link
Copy Markdown
Contributor Author

Closing: simulators are now added through packages instead of being built into VUnit, see #1250. (Comment written by Claude on behalf of ru551n.)

@ru551n ru551n closed this Oct 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant