Back to ChipVerify AI

Learn / Concept

What "Tapeout-Ready" Means: A Staged Pre-Signoff Checklist

A design is tapeout-ready when there is no remaining engineering reason to delay submission, only a calendar reason. That is a stronger statement than "it works on my testbench." It means the RTL synthesizes cleanly, lints cleanly, simulates cleanly, crosses clock domains cleanly, agrees with its post-synthesis netlist, and matches the metadata the foundry or shuttle program actually consumes. This page lists the 12 gates that block a submission. Each gate has an objective pass criterion, a tool that produces the evidence, and a pointer to the deeper concept pages. The list is ordered roughly by how often each item bites. For Tiny Tapeout submissions the bottom three items have hard enforcement; for commercial flows they map to your foundry's submission package.

The 12 things that block a tapeout submission

1. Synthesis elaborates without errors

Synthesis must reach the elaborated netlist stage with zero errors and a zero exit code. A design that simulates but fails to elaborate is not a chip. Run Yosys early; do not wait until the last week of the project. See Yosys synthesis.

2. No unintended inferred latches

An incomplete if chain in a combinational always_comb or always @* block infers a latch. Latches in a synchronous design are almost always wrong: they create timing arcs the rest of the toolchain does not analyze, and they hold stale data when you expected zero. Use always_comb and assign a default at the top of every branch. See inferred latches in Verilog.

// Wrong: latch on out when sel == 2'b11
always_comb begin
  case (sel)
    2'b00: out = a;
    2'b01: out = b;
    2'b10: out = c;
  endcase
end

// Right: default before case
always_comb begin
  out = 8'h00;
  case (sel)
    2'b00: out = a;
    2'b01: out = b;
    2'b10: out = c;
  endcase
end

3. No inferred memories you did not ask for

A large array of registers may infer a memory macro that does not exist in your target library, or may inflate the gate count to unsubmittable size. Yosys reports inferred memories during the memory pass. If the memory is intended, instantiate the foundry-provided macro explicitly. If it is not intended, narrow the array, refactor to flops, or set an attribute that pins the inference behavior. For Tiny Tapeout, all storage must fit in flops within the tile budget.

4. Every output is driven from a known state

A top-level output that is never assigned is a tristate or a floating gate input on the chip, neither of which you want. Synthesis catches the obvious cases; subtler cases (output driven only inside a case branch that the testbench never hits) hide. See output never assigned. The defensive pattern is the same as for latches: assign a default at the top of every combinational block and a reset value for every flop.

5. Lint clean at the chosen severity

Lint is the cheapest check available; running it costs seconds. Treat warnings like errors for the categories that matter: incomplete sensitivity lists, blocking assignments in always_ff, width mismatches, multiple drivers, and unused signals. Document waivers; do not silence warnings globally. See Verible lint.

6. Simulation regression green with self-checking testbench

The regression has to fail when something is wrong. A green regression with a passive testbench (no checker, no scoreboard, no assertions) is meaningless. Set a coverage target appropriate to the block (commonly 95% line, 90% branch, 100% FSM-state) and close it. See Verilator simulation.

7. Reset is correct from cold and warm starts

Every flop must reach a known state from reset, and the post-reset behavior must match across simulation and silicon. The most common bugs here are an initial block in the design that simulators honor and silicon ignores; a reset that is asserted asynchronously and deasserted asynchronously, producing recovery violations; and a missing reset on a flop that happens to power up correctly in simulation but powers up at random on the chip. Run a regression that explicitly asserts reset mid-test and verifies the design recovers.

8. CDC clean

If the design has more than one clock domain, every crossing must have a recognizable synchronizer structure. Single-bit signals take a 2-flop synchronizer; multi-bit data takes either an asynchronous FIFO or a MUX-recirc with a synchronized valid; pulses take a toggle handshake; resets need a reset synchronizer per destination domain. Functional simulation will not catch missing synchronizers. See clock domain crossing.

9. Formal smoke on critical properties

A small set of properties usually covers the highest-impact residual risk: every FSM is deadlock-free and reachable, every arbiter is fair, no X propagates to a top-level output once reset deasserts, every assertion stated in the spec is provable (or has a documented bound). SymbiYosys with Yices, Boolector, or Z3 closes these in minutes for typical block sizes.

10. EQY post-synthesis equivalence

Run equivalence between the elaborated RTL and the synthesized netlist. A pass certifies that the synthesizer did not change functional behavior. A failure points at either a synthesis bug or, more often, a non-synthesizable construct in the RTL that the synthesizer interpreted differently from the simulator. Equivalence is mandatory for any commercial flow and a strong recommendation for hobbyist tapeouts.

11. Top-level pin map matches the platform

The top-level module name, port names, port widths, and port directions must match exactly what the shuttle expects. For Tiny Tapeout this means matching the tt_um_* template (8-bit ui_in and uo_out, 8-bit bidirectional uio_in / uio_out / uio_oe, plus ena, clk, rst_n). For commercial flows it means matching whatever pin list the package layout was committed against. Mismatches here are submission-blocking, not signoff-blocking.

12. info.yaml and project metadata are correct

For Tiny Tapeout the info.yaml file declares the top-level module name, the source file list, the clock frequency, and the project author. The submission pipeline reads it before reading the RTL. A mistyped module name or a source file omitted from the list causes the build to fail before lint or synthesis even runs. For commercial flows the equivalent is the foundry submission package: layer mapping, tile footprint, IP licenses, and the BOM of macro instances.

Summary table

#GateToolPass criterion
1Elaboration cleanYosysZero errors, exit 0
2No inferred latchesYosys, VeribleNo latch warnings
3No unintended memoriesYosysMemory pass clean or macro instantiated
4Outputs drivenYosys, VeribleNo floating output warnings
5Lint cleanVeribleNo unwaived warnings at the chosen severity
6Simulation regressionIcarus, Verilator, CocotbAll seeds pass, coverage closed
7Reset correctnessVerilator, SymbiYosysRecovery from reset proven
8CDC cleanStructural CDC, SymbiYosysEvery crossing recognized as a sync structure
9Formal smokeSymbiYosysCritical properties proved or bounded
10EQY equivalenceYosys EQYRTL and netlist equivalent
11Pin map matchesHand check, CITop-level signature byte-equal to template
12Metadata correctCI lint of info.yamlModule name and file list resolve

Tiny Tapeout specifics

Tiny Tapeout is a low-cost shuttle program that gives small designs a fixed pin interface and a tile-budgeted area. The submission pipeline runs an open flow (OpenLane / OpenROAD) on the RTL automatically. That means the bar is not a polished report; it is "does the open flow accept this RTL?"

  • The top module must be named tt_um_* and follow the standard 8-bit input, 8-bit output, 8-bit bidirectional, plus enable, clock, and active-low reset interface.
  • Drive every bit of uo_out; tie unused bits to 1'b0. Drive uio_oe consistently with uio_out; do not float bidirectional pins.
  • Storage must fit in flops within the tile budget. There is no SRAM macro available on the smallest tile sizes.
  • The clock frequency in info.yaml has to match what the design closes timing at. Aim conservative; the open flow's timing margin is small.
  • No latches. The submission flow rejects designs whose synthesis pass produces unintended latches.

A pragmatic reading order

If you are putting this list into practice for the first time, start with the cheap gates and work down: lint, then elaboration, then a self-checking simulation, then synthesis with latch detection, then CDC, then equivalence. The expensive gates (formal, EQY) are worthwhile but only after the cheap ones are green; running them on a still-leaky design wastes solver time on bugs lint would have caught in seconds. For more depth see the RTL verification guide and the CDC guide.

The staged readiness checklist

The 12 gates above are ordered by how often each one bites. The same work also maps onto five sequential stages, and it is worth seeing it that way because each stage is a prerequisite for the next: there is no point chasing timing closure on RTL that still infers latches, and no point proving equivalence against a netlist whose function the testbench never pinned down. Run the stages in order and treat a stage as done only when its gates are green.

Stage 1 — RTL clean (structural)

The cheapest, highest-yield stage. The RTL must lint clean, cross clock and reset domains through recognizable synchronizers, carry no unintended inferred latches, and assign every bit at the right width. Seconds to run; catches the largest population of bugs.

Gates: lint, CDC, RDC, width mismatch, inferred latches. Tools: Verible, Yosys, structural CDC/RDC.

Stage 2 — Functional (dynamic)

The function has to be verified, not just exercised. A self-checking regression with assertions and a scoreboard, run to a coverage target the block warrants, is the evidence that the design does what the spec says under the stimulus you applied.

Gates: simulation, coverage closure, SystemVerilog assertions. Tools: Verilator, Icarus, cocotb, SymbiYosys (assertion proofs).

Stage 3 — Equivalence

Once the RTL is stable, prove that synthesis did not change its behavior. Logical equivalence between the elaborated RTL and the synthesized netlist catches synthesis bugs and non-synthesizable constructs the simulator and synthesizer read differently.

Gates: logical equivalence checking. Tools: Yosys EQY.

Stage 4 — Implement (physical)

Run on the placed-and-routed design. Static timing analysis closes setup and hold across corners; physical verification (DRC, LVS) confirms the layout obeys the design rules and matches the schematic; DFT confirms the design is testable; power checks bound dynamic and leakage. On open PDKs such as sky130 this stage runs end-to-end on open tools and produces real reports.

Gates: STA, DRC, LVS, DFT / scan readiness, power / UPF. See RTL-to-GDSII on sky130. Tools: OpenROAD/OpenSTA, KLayout, Magic, netgen.

Stage 5 — Signoff

The final gate the foundry actually consumes. For a production node this is the commercial signoff flow on characterized libraries with the foundry’s qualified rule decks, plus the submission package (layer mapping, IP licenses, macro BOM). For Tiny Tapeout it is the shuttle’s automated open flow plus the correct pin map and info.yaml. The earlier stages exist so that this one finds nothing new.

Open-tool evidence vs a foundry signoff: what each covers

This is the honest center of the page, so it is worth being precise. Pre-signoff evidence on open tools is real and reproducible — but it is not a foundry signoff, and the two cover deliberately different ground. Knowing exactly where the line falls keeps you from either under-testing (skipping cheap evidence) or over-claiming (treating open-tool green as a tapeout guarantee).

ConcernOpen-tool pre-signoff evidenceWhat a foundry signoff additionally requires
RTL structureLint, structural CDC/RDC, latch and width checks on the sourceSame intent, run with the vendor’s qualified rule sets and waiver methodology
FunctionSelf-checking regression, measured coverage, formal property proofsSame in principle; the difference is methodology rigor, not tool class
EquivalenceRTL-to-netlist LEC over open formal modelsCommercial LEC qualified for the target library and flow
Timing (STA)OpenSTA on the implemented design; finite reported slackSignoff STA across all PVT corners on silicon-correlated, characterized libraries
Physical verificationDRC / LVS on open PDKs (sky130) with the open decksPV on the as-implemented layout with the foundry’s qualified decks for the actual node
LibrariesOpen standard-cell models; finite, reproducible metricsCharacterized, silicon-correlated standard-cell and IP libraries from the foundry

The short version: open-tool evidence proves the design is internally consistent and free of the structural and functional bugs that should never reach a foundry. A foundry signoff proves the implemented design meets the rules of the specific node on characterized libraries. The first is a precondition for the second; it is not a replacement for it, and nothing here is a certification or a guarantee of silicon success.

How ChipVerify AI accelerates this

ChipVerify AI runs the applicable automated checks among items 1 through 10 against uploaded RTL and reports the result with evidence, per-gate explanations, and links to the bug-level concept pages for any failures. The checks that need a tool, a testbench, or human judgment (and the manual or optional gates) are tracked separately rather than auto-run in a single pass. For Tiny Tapeout submissions, the public scanner at /tinytapeout checks pin-map and metadata gates (items 11 and 12) on top of the RTL readiness items. For broader pre-tapeout work, request access to the full product. ChipVerify AI does not replace foundry signoff; it eliminates the population of bugs that should never reach foundry signoff.

FAQ

What does 'tapeout-ready' actually mean?

It means there is no remaining engineering reason to delay submission, only a calendar reason. Concretely: the RTL is structurally clean (lint, CDC, RDC, no unintended latches, no width truncation), the function is verified against a self-checking testbench with closed coverage and assertions, the synthesized netlist is proven equivalent to the RTL, and — for a full flow — the implemented design passes timing (STA), physical verification (DRC, LVS), DFT, and power checks. 'It works on my testbench' is only the second of those stages.

In what order should I run the checks?

Stage them cheapest-first so each gate de-risks the next. Stage 1 RTL-clean (lint, CDC, RDC, width, latches) runs in seconds and catches the most bugs per minute. Stage 2 functional (simulation, coverage, assertions) needs a testbench and runs longer. Stage 3 equivalence (LEC) only makes sense once the RTL is stable. Stage 4 implement (STA, DRC, LVS, DFT, power) runs on a placed-and-routed design and is the slowest. Running formal or LEC on a still-leaky design wastes solver time on bugs lint would have caught.

What does pre-signoff evidence on open tools give me, and what does it not?

Open tools (Yosys, Verible, Verilator/Icarus, SymbiYosys, EQY, OpenROAD/OpenSTA, KLayout, Magic/netgen) produce real, reproducible evidence: clean elaboration, lint and structural CDC/RDC results, a green self-checking regression with measured coverage, RTL-to-netlist equivalence, and — on open PDKs like sky130 — timing, DRC and LVS reports on the implemented design. What they do not produce is a foundry signoff. A commercial signoff additionally requires physical verification with the foundry's qualified rule decks on the as-implemented layout, characterized (silicon-correlated) standard-cell and IP libraries, signoff-grade STA across all PVT corners, and the foundry's own submission package and sign-off criteria. Open-tool evidence eliminates the bugs that should never reach that flow; it does not replace it.

Is structural CDC or equivalence checking a substitute for a commercial signoff tool?

No. Structural CDC/RDC analysis and open-source LEC are pre-signoff evidence: they find missing synchronizers, reset-domain crossings, and synthesis-vs-RTL mismatches early and reproducibly. They are not a foundry signoff and do not carry a commercial vendor's qualification. For a production tapeout you still run the commercial signoff flow on characterized libraries; the open-tool checks make that flow find fewer surprises.

Do I need physical verification (DRC/LVS) for Tiny Tapeout?

Tiny Tapeout runs the open implementation flow (OpenLane / OpenROAD) for you and applies the sky130 DRC and LVS decks as part of the shuttle pipeline, so you do not run them by hand — but your RTL still has to pass the upstream gates (clean elaboration, no latches, driven outputs, correct pin map and info.yaml) for that flow to accept it. For a commercial node you own physical verification against the foundry's qualified decks on your implemented layout.

Does ChipVerify AI certify a design as tapeout-ready?

No. ChipVerify AI runs the applicable automated gates against your RTL and returns per-gate evidence with file-and-line detail. That is pre-signoff readiness evidence — it tells you which gates are green and which are not, and links the failures to the underlying concept. It does not certify a design, does not constitute a foundry signoff, and does not replace the commercial EDA signoff flow.

Related topics by stage

This page is the hub; each gate has a deeper concept page. Work the links in stage order to build the evidence a tapeout needs.

Stage 1 — RTL clean

Stage 2 — Functional

Stage 3 — Equivalence

Stage 4 — Implement

Across stages

Run the RTL readiness gates on your design

Sign in and ChipVerify AI runs the applicable automated gates (lint, synthesis, structural, CDC) against your RTL and returns a per-gate result with evidence — pre-signoff readiness checks, not foundry signoff.