NELIX Silicon Lab Docs Launch Silicon Lab Launch Silicon Lab

Yosys

The synthesis tool: the script the Synthesize stage runs, step by step, and the two versions in use.

Engineer 2 min read · Updated 2026-10-24

On this page Two versionsThe scriptThe cell namesCommon messagesWhat its schematic looks like

Yosys is an open-source synthesis tool. It reads RTL and produces a netlist of gates.

Two versions#

WhereVersionMaps onto
The Synthesize stage0.33Generic gates
Inside Build the chip, SKY130 and GF180MCU0.46, as part of OpenLane 2.3.10The process's standard cells
Inside Build the chip, IHP SG13G20.62, as part of LibreLane 3.0.14The process's standard cells
Inside Build the chip, ASAP70.68+post, as part of the OpenROAD flow scriptsThe ASAP7 standard cells

A design must be accepted by the Synthesize stage and by the build. That is one reason the lab's coding standard is conservative.

The script#

The Synthesize stage runs yosys -l reports/synth.log synth.ys. This is the starter's synth.ys, with what each line does.

text
read_verilog -sv rtl/top.sv
hierarchy -check -top top
proc
opt
fsm
opt
memory
opt
write_verilog -noattr reports/top_synth.v
techmap
opt
stat
write_verilog -noattr reports/top_gates.v
CommandWhat it does
read_verilog -svReads the design as SystemVerilog
hierarchy -check -top topConfirms top exists and every module it uses is defined
procTurns always blocks into flip-flops and logic
optSimplifies: removes unused logic, merges duplicates
fsmRecognises and optimises state machines
memoryHandles arrays
write_verilog reports/top_synth.vWrites the block-level netlist. The schematic is drawn from this one
techmapBreaks blocks such as adders into simple gates
statPrints the cell count
write_verilog reports/top_gates.vWrites the gate-level netlist

The cell names#

NameIs
$_AND_, $_OR_, $_XOR_, $_NOT_, $_MUX_Simple gates
$_DFF_PN0_A flip-flop: rising clock edge, active-low reset to 0
$_DFFE_PN0P_The same, with an enable

Common messages#

MessageMeaning
Module \top not foundThere is no module named top in rtl/top.sv
Latch inferred for signalA combinational block does not assign that signal on every path
Multiple conflicting driversTwo blocks assign the same signal
syntax errorA construct Yosys 0.33 does not accept, or a real syntax error

A line reading No latch inferred for signal is good news: Yosys checked and found none.

What its schematic looks like#

The Blank starter as the synthesis tool draws it: one register with a clock, an asynchronous reset, an input and an output.

Related

  • SynthesisHow code becomes logic gates, and what to look for in the result.
  • Synthesis failuresThe design simulates and the Synthesize stage rejects it, or produces something unexpected.

Something unclear or missing? Send feedbackSign in and use Feedback to tell us.