← All guides

Viewing Verilog and VHDL as a schematic

A schematic of HDL code is drawn from a netlist: a tool elaborates or synthesizes the code into cells and the wires between them, then lays the graph out as a diagram. Tools differ in which netlist they draw (generic RTL cells, logic gates, or the primitives of one FPGA family), which languages they read, and what they need installed.

This page lists the common options and compares them. For what the netlist looks like at each stage of synthesis, see what synthesis does to Verilog.

The options

ToolLanguagesRuns asDrawsCost
VivadoVerilog, SystemVerilog, VHDLdesktop installelaborated design (generic RTL cells), synthesized design (Xilinx primitives)free Standard edition
Quartus PrimeVerilog, SystemVerilog, VHDLdesktop installRTL Viewer (generic cells), Technology Map Viewer (Intel primitives), state machinesfree Lite edition
Yosys showVerilog, part of SystemVerilog; VHDL with the GHDL plugincommand linethe netlist after any pass, as a Graphviz graphfree, open source
netlistsvgwhatever Yosys readscommand line (Node.js)a Yosys netlist as a schematic with gate symbolsfree, open source
DigitalJSVerilog, SystemVerilogbrowser, VS Code extensionthe synthesized circuit, simulated interactivelyfree, open source
EDA PlaygroundVerilog, SystemVerilog (Yosys flow)browser, free accounta circuit diagram from the Yosys flow, one top modulefree
TerosHDLVerilog, SystemVerilog (schematic)VS Code extensiona schematic, state machines, the hierarchyfree, GPL-3.0
Sigasi Visual HDLVerilog, SystemVerilog, VHDLVS Code extensionblock diagrams of the code’s structure and state machines, not gatesCommunity Edition free for non-commercial use, paid editions
RapidRTLVerilog, SystemVerilog, VHDLbrowser, VS Code extensionthe synthesized netlist as written, optimised, as gates, or mapped to an FPGA familyweb editor free with a daily limit; extension free, Pro $39 once

RapidRTL is the tool this site belongs to.

Vivado and Quartus

The vendor tools draw the netlist for one device, so they show exactly which primitives a design uses on that part. Both need a project with a device selected.

Both installs are large, and the schematic is one view among many in a full FPGA flow.

Yosys from the command line

Yosys is an open-source synthesis tool. Its show command draws the netlist after any pass with Graphviz, which must be installed:

yosys -p "read_verilog counter.v; proc; opt; show -format svg -prefix counter"

netlistsvg draws a Yosys netlist with gate and flip-flop symbols instead of Graphviz boxes. Yosys writes the netlist as JSON first:

yosys -p "read_verilog counter.v; prep -top counter; write_json counter.json"
netlistsvg counter.json -o counter.svg

For VHDL, the GHDL plugin reads the code into Yosys:

yosys -m ghdl -p "ghdl counter.vhd -e counter; prep -top counter; write_json counter.json"

This route can be scripted, for documentation or for a check in CI. Each tool is installed separately.

In the browser

$sdffe CLK D EN SRST Q clk rst en count 1
A 4-bit counter with reset and enable, drawn by RapidRTL.

In VS Code

Choosing one

SituationUse
A design already in a Vivado or Quartus projectthe vendor viewer: it shows the real primitives for that device
A snippet or a homework module, with nothing installeda browser tool: RapidRTL for VHDL or snippets, DigitalJS to simulate
Diagrams generated by a script or in CIYosys with netlistsvg
Seeing the circuit while editinga VS Code extension: Sigasi for structure, TerosHDL or RapidRTL for the synthesized circuit