The testbench
A testbench is Verilog that exercises your design and checks the outputs. Vulkos expects a self-checking testbench in tb/ so you can verify logic before a costly physical run.
Why testbenches matter#
The RTL-to-GDS flow turns your design into a layout. If the logic is wrong, you still pay compute minutes for a build that does not match your intent. A passing testbench gives you confidence the behavior is correct first.
Self-checking pattern#
Template testbenches follow a common structure:
- Instantiate the design under test and generate a clock (and reset if needed).
- Drive stimulus: known inputs over time.
- Compare outputs against expected values and call
$finishon mismatch. - Print a clear PASS or ERROR message so logs are easy to read.
Open tb/counter_tb.v in the seeded counter project for a complete example with reset checks and increment verification.
Running verification#
Verification runs as part of the broader flow when configured, or you can simulate the testbench on its own depending on your project setup. A failure surfaces in the terminal with the assertion or mismatch that triggered it.
Fix logic before layout
If the testbench fails, fix the RTL and re-run verification before launching another full RTL-to-GDS build.