VeriFlow - VS Code Extension
简体中文
Run a lightweight Verilog simulation flow inside VS Code: scan modules, analyze dependencies, compile, simulate, open waveforms, and generate testbenches.

Overview
VeriFlow is a VS Code extension for Verilog and SystemVerilog projects. It brings module scanning, dependency analysis, simulation execution, waveform opening, and Testbench generation into the VS Code sidebar.
The extension core is implemented in TypeScript, so the VS Code extension itself does not require a Python runtime.
Preview

Quick Start
Requirements
- VS Code 1.80+
- A Verilog simulator, such as:
- A waveform viewer (optional), such as:
- Built-in VeriFlow waveform viewer for
.vcd files
- Surfer - open source, recommended
- GTKWave
- A custom waveform viewer command
Installation
Install VeriFlow from the VS Code Marketplace, or install a local .vsix package manually.
Basic Flow
- Open a folder that contains
.v or .sv files.
- Open the VeriFlow view from the Activity Bar.
- VeriFlow scans modules automatically and groups them by directory.
- Click Select Top Module and choose the top module.
- Click Analyze Dependencies to resolve the compile order.
- Click Compile & Simulate to run simulation.
- Click Open Waveform to open the generated waveform file.
You can also open .vcd files directly in VS Code with VeriFlow Waveform Viewer.
Testbench Generator
The Testbench Generator view can generate a Verilog testbench from scanned modules.
Options
| Option |
Description |
Default |
| Name |
Testbench module name |
tb_top |
| Unit / Prec |
timescale time unit and precision |
1ns / 1ps |
| Clocks |
Clock frequency in MHz, up to 6 clocks |
100 |
| Reset |
Reset polarity and duration |
Active Low / 100 |
| DUT Modules |
Modules instantiated in the testbench, including repeated instances |
- |
| Ports |
Parsed module ports with editable signal names |
- |
| Parameters |
Parsed module parameters with editable values |
- |
| Waveform |
Waveform file name |
{name}.vcd |
| Timeout |
Simulation timeout in ns |
1000000 |
Usage
- Click
+ in DUT Modules and select the modules to instantiate.
- Select a DUT module and edit its port connections and parameter values.
- Configure clocks, reset, waveform, and timeout options.
- Click Generate Testbench to create and open the testbench file.
Generated testbenches are written to the workspace root by default. Set veriflow.testbenchOutputDir to write them into a workspace-relative subdirectory. VeriFlow creates the directory if it does not exist.
Extension Settings
| Setting |
Type |
Default |
Description |
veriflow.libDirs |
string[] |
[] |
Library directories used for module search and dependency resolution |
veriflow.simulator |
enum |
iverilog |
Simulator: iverilog / vcs / xsim / custom |
veriflow.waveViewer |
enum |
builtin |
Waveform viewer: builtin / surfer / gtkwave / custom |
veriflow.simulatorCompileCmd |
string |
"" |
Custom compile command template. Supports {files} {output} {top_module} |
veriflow.simulatorRunCmd |
string |
"" |
Custom run command template. Supports {output} |
veriflow.waveViewerCmd |
string |
"" |
Custom waveform viewer command template. Supports {wave_file} |
veriflow.waveFileTemplate |
string |
{top_module}.vcd |
Waveform file path template. Supports {top_module} |
veriflow.testbenchOutputDir |
string |
. |
Testbench output directory, resolved from the workspace root |
The sidebar contains two views.
VeriFlow
The title bar actions are:
- Select Top Module - choose the top module from scanned modules
- Analyze Dependencies - analyze dependencies and generate compile order
- Compile & Simulate - compile and run simulation
- Open Waveform - open the configured waveform viewer
- Scan Modules - rescan the workspace
The module list refreshes when the VeriFlow view is opened, when the Testbench Generator is opened, when a testbench is generated, and when workspace files or relevant settings change.
Testbench Generator
This view contains:
- Properties - testbench name and timescale
- Clocks - clock frequency configuration
- Reset - reset polarity and duration
- DUT Modules - module selection, port editing, and parameter editing
- Waveform - waveform file configuration
- Timeout - simulation timeout configuration
VeriFlow can preview .vcd files inside VS Code.
Ways to open it:
- Open a
.vcd file and choose VeriFlow Waveform Viewer.
- Right-click a
.vcd file and run Open VCD in VeriFlow Viewer.
- Set
veriflow.waveViewer to builtin, then use Open Waveform after simulation.
The current viewer is an early prototype. It supports signal search, time grid, cursor, zoom, pan, single-bit signals, bus signals, and dense waveform aggregation.
Output Panel
Simulation output is written to the VS Code Output panel under the VeriFlow channel.
Messages are grouped by level:
[INFO] - normal information
[OK] - successful operation
[WARN] - warning
[ERROR] - error message, including file and line references when available
Built-in Simulator Commands
| Simulator |
Compile command template |
Run command template |
| iverilog |
iverilog -o "{output}" {files} |
vvp "{output}" |
| vcs |
vcs -full64 -o "{output}" {files} |
./"{output}" |
| xsim |
xvlog {files} && xelab {top_module} -snapshot "{output}" |
xsim "{output}" --runall |
| custom |
User-defined |
User-defined |
Custom Simulator Example
{
"veriflow.simulator": "custom",
"veriflow.simulatorCompileCmd": "verilator --cc --exe --build -j -o {output} {files}",
"veriflow.simulatorRunCmd": "{output}",
"veriflow.waveViewer": "custom",
"veriflow.waveViewerCmd": "gtkwave {wave_file} &",
"veriflow.libDirs": [
"/path/to/shared/libs",
"/path/to/vip"
]
}
License
MIT
Feedback
Issues and suggestions are welcome on GitHub Issues.