target
0LUTs
0flip-flops
fmax est.
Source untitled.v
unparsed

          
        
Ctrl+Enter to run · ⌘S not bound
Waveform no signals
1.0×
cursor t=0
Signals toggle visibility
Compile + Run to populate.
verilog-sim · console · untitled.v
idle
$ Tutor: load an example or write your own module.
How synthesis estimates work From always to LUTs and flip-flops

A real synthesizer (Yosys, Quartus, Vivado) builds a netlist of generic gates from your Verilog, then maps that to the target FPGA's primitive cells: LUTs (Look-Up Tables, which are tiny ROMs holding any boolean function of K inputs), DFFs, dedicated DSP slices, and block RAM. The cell counts in the side rail come from a fast pattern-matching pass on the AST — not a real netlist — but they're calibrated against the same heuristics the toolchain uses.

The fmax estimate walks every combinational path between flip-flops, counts how many LUT levels deep it is, multiplies by the per-LUT delay for the chosen FPGA family. For an iCE40 that's ~1.5 ns; for a Series-7 it's ~0.4 ns. The slowest path sets the maximum clock.

Inferred latches (incomplete always @(*)) and multiple drivers turn into red warnings — these are the classes of bug that synth tools will compile but you almost never want.