Start for free Book a free session

The answer is already in the project.
Stop looking it up by hand

Where is this type declared, which library does this resolve to, what does this block actually connect to, and did that port list change? Sigasi builds one model of your configured SystemVerilog, Verilog, VHDL and mixed-language project and answers those while you type, in VS Code, on your own machine. If you use a coding agent it gets the same answers. If you do not, nothing here depends on it.

Sigasi Visual HDL analyzing a mixed-language project in VS Code, with project hierarchy, diagnostics and a UVM diagram

SystemVerilog · Verilog · VHDL · Mixed-language · UVM, UVVM, OSVVM, VUnit · Runs in VS Code · Analyzed locally, on your own machine

What changes in your day

Speed.

Diagnostics while you type, not after the next run, while you still know what you were doing.

Navigation.

Jump to the declaration across files, libraries and language boundaries instead of grepping for it.

Understanding.

Block, state machine and hierarchy views generated from the source, so they cannot be out of date.

Refactoring.

Semantic rename with a preview, so cleaning up a name does not become a two-hour diff review.

Control.

Your coding agent gets the real project and its answers are checked. You decide what moves downstream.

The tool knows your project, not just your open file

It elaborates. It is still wrong.

SYSTEMVERILOG
// acquisition_pkg.sv   (changed last sprint)
package acquisition_pkg;
	typedef logic [11:0] status_t;
endpackage

// top.sv   (not changed)
logic [7:0] status;

acquisition u_acq (
	.clk    (clk),
	.status (status)
);

Nothing in top.sv is wrong on its own. The fact that makes it wrong lives in another file, and an editor that reads the open buffer cannot know it.

Sigasi builds a model of the configured project, so the width is checked against the declaration that is actually in scope, in the configuration that is actually selected, while you are still in the file.

Where is this declared, really

SYSTEMVERILOG
import acquisition_pkg::*;
import common_types_pkg::*;

mode_t mode;   // which package won?

Two wildcard imports, one name. Which one is visible depends on the compilation unit and the order the files are given to the tool, not on reading order, and it changes when somebody edits a project file you have never opened.

Go to declaration lands on the unit that this project resolves, across SystemVerilog, Verilog and VHDL. Find references returns the real references, not every string that happens to match.

The boundary is where it hurts

VHDL
-- VHDL architecture, SystemVerilog module
u_fifo : entity work.sync_fifo
	generic map (
		WIDTH => 32,
		DEPTH => 16        -- sync_fifo.sv declares DEPTH as int
	)
	port map (
		clk   => clk,
		rst_n => rst_n,
		wr_en => wr_en,
		din   => din,
		dout  => dout
	);

Legacy blocks in VHDL, a verification environment in SystemVerilog, purchased IP in whichever language it shipped in. The boundary between them is where project knowledge is thinnest and where a wrong assumption survives longest.

Both languages are in one model, so a cross-language instantiation is checked rather than taken on trust.

Rename what you meant, and nothing else

VHDL
process (clk)
	variable data_valid : boolean;     -- a local, same spelling
begin
	if rising_edge(clk) then
		data_valid <= din_valid;     -- the signal you are renaming
	end if;
end process;

A text replace hits both. A semantic rename updates the declaration and its real references, leaves the unrelated local alone, and shows you the preview before anything changes.

That is the difference between fixing a bad name and starting a two-hour diff review, which is why most bad names survive.

The testbench is a project too

SYSTEMVERILOG
class axi_agent extends uvm_agent;
	`uvm_component_utils(axi_agent)

	axi_driver                drv;
	axi_monitor               mon;
	uvm_sequencer #(axi_item) sqr;
endclass

When a test will not run, the question is whether the problem is the design, the environment or the configuration. UVM-specific checks and a view of component hierarchy and connections answer that in the same workspace you read the RTL in, instead of by bisecting a log.

What a coding agent is missing

An agent reads source text. It does not read your library mappings, compile order, include paths, reused IP or team rules, because none of that is in the file.

Give it the project through MCP or the command line and two things change. ➊ It stops treating every error as a code defect, so when the real problem is a missing library it fixes the project configuration instead of rewriting correct RTL. ➋ What it proposes is checked by the same engine you use, rather than graded by the model that wrote it.

You still review the change. Sigasi does not generate RTL and does not decide.

If you do not use AI at all

Nothing above depends on it. The project model, the diagnostics, the navigation, the rename and the diagrams work the same whether an agent is involved or not.

Where your code goes

Analysis runs locally, on your machine or inside your own network. Project files are not sent to Sigasi servers for semantic analysis. Telemetry is optional on a commercial license and does not transmit HDL source. A connected coding agent is a separate component with its own data handling, worth checking on its own terms.

What it does not do

It does not generate RTL. It does not replace your simulator, formal tools, synthesis or sign-off, and it does not catch everything: it runs the checks it documents, over the scope it is given.

It is also not a linter you have to appease. Rule severities are configurable per project, per folder and per file, so inherited and third-party source code can be treated differently from code you own.

Run it on your own code

The trial is free, runs the Enterprise Edition, and the license file arrives by email within the next business day. A field application engineer will set it up with you at no charge, on your own libraries, compile order and hierarchy rather than a demo design, because that is the only thing that tells you whether it holds up.

Community Edition unlocks the Enterprise feature set free of charge for academic and non-commercial work, with no project size limit.

Request a trial, or book a session if you would rather have someone walk you through it on your code.

One project model across every stage and every role

Sigasi parses the full project, not the open file: hierarchy, types, scopes, dependencies, interfaces and references across SystemVerilog, Verilog and VHDL. That shared model is what lets an engineer, a reviewer, a coding agent and your CI ask the same question and get the same answer.

  • Project-aware diagnostics while a change is still cheap to make
  • Block and state machine diagrams generated from the code, so a block you did not write can be read, not just inherited
  • The same project model applied to testbenches and verification code
  • Command-line analysis in CI, with configurable failure thresholds your pipeline can act on
  • Shared coding rules applied consistently across teams
Explore all features

Run it on your own project

The trial is free, runs the Enterprise Edition, and a field application engineer will set it up with you on your own libraries and hierarchy rather than a demo design. The first thing worth knowing is whether it holds up on your code.

Sigasi Visual HDL analyzing a mixed-language project in VS Code