Skip to content

What the IDE does for your SystemVerilog and UVM code

SystemVerilog Studio turns IntelliJ IDEA (Community included) and other JetBrains IDEs into a SystemVerilog and UVM IDE. Each feature below links the guide page that describes it, with steps to try on the guide's sample project.

Editing and the slang compiler

Undeclared names, with the fix

SystemVerilog Studio underlines an undeclared name such as IDEL as you type. When a declared name is spelt almost the same, it suggests that name and replaces it for you (⌥⏎ / Alt+Enter). A typo that Verilog would quietly turn into a new 1-bit wire, an implicit net, is reported as a warning, because the file would still compile.

Compiler checks with slang

Some mistakes only show up when the whole design is compiled together. Once slang is installed (one click in Settings), SystemVerilog Studio compiles your design with it each time you save a file. Its messages start with slang: and appear in the editor next to the IDE's own checks.

The elaborated design hierarchy

The Design Hierarchy tool window shows the design elaborated: built from the top module down as a compiler builds it, with each parameter's actual value and generate loops unrolled. It comes from slang-server, the language server of the slang compiler, which starts in the background when you open the window. Without slang-server, the window shows the static hierarchy instead, with parameters as written.

verilog-mode AUTOs

Write /*AUTOINST*/ where an instance's port connections go. Code | Expand AUTOs connects each port to a signal of the same name, with vector ranges shown. This is Emacs verilog-mode's AUTO feature, so files written for it open and edit like any other.

Refactoring

Rename

Renaming with find-and-replace changes things that merely look alike. Rename changes only the names that refer to this declaration, in all files: the declaration and the usages Find Usages would list. Words in comments and strings stay as they are unless you tick Search in comments and strings.

Rename conflicts

Before it changes a file, Rename tries the new name with the same lookup rules the IDE uses to resolve names. If the new name would silently break or re-bind code, the Conflicts Detected dialog lists the problems and you can cancel. For example, renaming state to count in the sample project would make state <= IDLE assign to the output port count instead.

Running

Run Verilator and Icarus

SystemVerilog Studio runs Verilator and Icarus Verilog as run configurations, started with the Run button. The output appears in the Run tool window, and each file:line in it is a link to the source. You install the simulators; the IDE runs them.

Build and run a testbench with Verilator

A Verilator run configuration does one of three things with your design: Lint it, Build the simulation, or Build and run it. You set the action, the top module and Verilator's options in one dialog, and start it with the Run button. Verilator compiles the design into a C++ program, so it needs a C++ compiler and make next to it on your machine.

See the waves in Surfer

A Waveform Viewer run configuration opens a .vcd or .fst file in Surfer or GTKWave. You go from a run to its waves with one click instead of typing the viewer's command. The viewer is a separate application on your PATH.

Your coding agent asks the IDE too

Your coding agent (Claude Code, Codex, Cursor, Junie) gets the same project knowledge through its MCP tools: references, module interfaces, the elaborated hierarchy, a check of code before it is written, and a dry-run rename.

See what an agent can askCoding agents (MCP)

Start with a free 2-month code

Enter your email address and SystemVerilog Studio sends a 2-month code by email. No account or payment details needed.