RTL Bench PRO Open RTL Bench →
◈ An independent open-core project

About RTL Bench

A browser-based EDA workbench that turns SystemVerilog, Verilog, and VHDL into interactive schematics, simulated waveforms, and gate-level timing — without installs, licenses, or terminal commands.

Why this exists

Learning digital design shouldn't require a 20 GB install, a $10,000 license, or a weekend spent fighting toolchain paths. Yet that's the reality for most students and hobbyists who want to see what their Verilog actually does.

RTL Bench was built to fix that. Paste your code, click a button, and watch it transform — from source, to elaborated netlist, to placed-and-routed schematic, to simulated waveform, to a static timing report. All in a browser tab. Small designs finish in seconds; large ones compile to native simulation code.

The goal isn't to replace commercial EDA tools. It's to make the first ten minutes of RTL design as frictionless as opening a text editor.

Why I built this

I was working on multiple projects at the same time and honestly kept forgetting the key details of my own circuits. Every time I had to revisit an older design, I was literally going line by line through the code just to remember how it worked.

I tried using AI, but it doesn't always tell you what’s actually there in the hardware. I looked into some well-known open source tools too, but none gave me what I wanted: just 3 to 5 minutes to glance at the schematic, trace paths, and refresh my memory without a heavy setup.

All I wanted was 3 to 5 minutes to glance at the schematic, trace paths, and refresh my memory without a heavy setup.

How it came together

So I went through documentation of open-source and commercial tools and built a minimal version of this just for myself.

I used it in my interviews and whenever I had to explain my projects to someone, and it worked really well. Then a friend of mine had the exact same issue, so I shared it with him and he found it super useful too.

That’s when I thought of just making it open and putting it out there. It’s not a finished product yet — still building and tweaking it every day, but it’s live in the browser.

The open-core model

RTL Bench is partially open source. The frontend — landing page, studio UI, waveform viewer, schematic renderer, STA report — is public on GitHub under the MIT license. The backend — Yosys orchestration, dynamic testbench generation, static timing analysis algorithms — is proprietary and closed.

This split isn't arbitrary. The frontend is where most learning happens: it's readable, forkable, and easy to reason about. The backend is where months of iteration produced the specific pass sequences, port-probing logic, and stimulus heuristics that make the tool robust against arbitrary user code. That work stays protected.

🌐

Open — MIT licensed

  • Landing page & About page
  • Studio UI shell & editor
  • Schematic renderer (ELK + SVG)
  • Waveform viewer (VCD → canvas)
  • STA report viewer
  • Vector SVG export
🔒

Proprietary

  • Yosys orchestration pipeline
  • Dynamic testbench generation
  • Port probing & clk/rst detection
  • SV→Verilog conversion logic
  • Dual-engine Icarus / Verilator routing
  • Gate-level STA algorithm
  • CDC + RDC structural analyzers

The tools that make it work

RTL Bench stands on the shoulders of excellent open-source projects. Here's what's running behind the scenes:

Yosys
Verilog/SystemVerilog synthesis & RTLIL elaboration
Icarus Verilog
Event-driven simulation & VCD generation
Verilator
C++-compiled simulation for large designs (auto-routed)
Eclipse Layout Kernel
Layered graph layout with orthogonal edge routing
GHDL
VHDL-2008 elaboration & dependency synthesis
nextpnr
Timing-driven FPGA Place & Route (Gowin & Lattice)
Vanilla JS + VCD parser
Zero-framework frontend & canvas waveform renderer

Every compile, in five stages

Whether you're pasting a single module or uploading a 30-file SoC, the flow is the same. Each stage runs in isolation, so a syntax error in one file doesn't cascade into a wall of confusing messages.

1. Upload — Drop a folder or paste a file. Top module is auto-detected or overridden from a dropdown.
2. Elaborate — Yosys parses SystemVerilog, runs proc, opt, and clean, then writes a JSON netlist.
3. Place & route — Eclipse Layout Kernel positions cells in a layered LEFT→RIGHT graph with clean orthogonal routing.
4. Simulate — A testbench is auto-generated from the probed port list; small designs run on Icarus Verilog, large ones route to Verilator for compiled speed. VCD output is identical either way.
5. Analyze — On-demand STA decomposes the design with techmap and reports gate depth, critical path, and per-node timing.

What's next

Shipped
Jan 9, 2026
Multi-file synthesis & hierarchy viewer
Folder uploads, SystemVerilog + VHDL-2008 support, and $readmemh path patching.
Shipped
Aug 5, 2026
Gate-level STA on real foundry PDKs
SkyWater 130nm, GF180MCU 180nm, and IHP SG13G2 per-cell Liberty delay traversal.
Shipped
Sep 18, 2026
Auto-generated testbenches & waveform cursors
Port probing, clk/rst toggling, VCD playback, dual A/B measurement cursors, and frequency readouts.
Shipped
Sep 30, 2026
FPGA bitstream compilation & WebSerial flasher
One-click bitstreams for Tang Nano 9K/20K and iCE40 UP5K with in-browser UART terminal.
Shipped
Oct 3, 2026
Structural Clock Domain Crossing (CDC) checks
Netlist clock tracing, synchronizer depth validation, and metastability hazard alerts.
Shipped
Oct 4, 2026
User testbenches & auto-generated stimulus
Detects tb_*.sv files by name or $dumpvars signature. Excludes them from synthesis, STA, and FPGA builds, but runs them in simulation. Generates a starter TB when none is supplied.
Shipped
Oct 5, 2026
Reset Domain Crossing (RDC) analysis
Structural reset-domain back-tracing, 2-FF reset synchronizer verification, and a full report page with interaction matrix and per-path remediation.
Shipped
Oct 15, 2026
Dual-engine simulation: Icarus + Verilator
Auto-routing between Icarus Verilog and Verilator based on design size. Small designs run instantly on Icarus; large sequential designs route to Verilator for C++-compiled speed. Persistent build cache, engine + mode badge in the waveform drawer, and automatic Icarus fallback when Verilator can't finish.
In progress
Verilator cycle-mode C++ harness
Replace the Verilog auto-testbench with a native C++ driver so Verilator skips re-parsing on every run. Targets 5–10× faster large-design simulation.
Planned
Waveform export & share links
Download the raw VCD, snapshot the current view as PNG, and encode designs into shareable permalinks.
Planned
Multi-corner STA (FF / TT / SS)
Fast-Fast and Slow-Slow corner traversal on sky130, GF180, and IHP for min/max timing verification.
Planned
Multi-clock STA
Automatic clock-domain detection from the netlist, with per-domain timing analysis and cross-domain path flagging.
Exploring
Live FPGA logic analyzer
Stream signal captures from the connected FPGA back into the waveform drawer over WebSerial — turning the flashing tool into a debugging tool.
Upcoming...

Built by

R

Raghavan S U

Hardware engineer & independent developer. RTL Bench is a personal project built on weekends and evenings out of a genuine frustration with how hard it is to see what Verilog is doing.

Try RTL Bench

No signup, no install, no credit card. Just open the studio and paste your first module.