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
end3. 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
| # | Gate | Tool | Pass criterion |
|---|---|---|---|
| 1 | Elaboration clean | Yosys | Zero errors, exit 0 |
| 2 | No inferred latches | Yosys, Verible | No latch warnings |
| 3 | No unintended memories | Yosys | Memory pass clean or macro instantiated |
| 4 | Outputs driven | Yosys, Verible | No floating output warnings |
| 5 | Lint clean | Verible | No unwaived warnings at the chosen severity |
| 6 | Simulation regression | Icarus, Verilator, Cocotb | All seeds pass, coverage closed |
| 7 | Reset correctness | Verilator, SymbiYosys | Recovery from reset proven |
| 8 | CDC clean | Structural CDC, SymbiYosys | Every crossing recognized as a sync structure |
| 9 | Formal smoke | SymbiYosys | Critical properties proved or bounded |
| 10 | EQY equivalence | Yosys EQY | RTL and netlist equivalent |
| 11 | Pin map matches | Hand check, CI | Top-level signature byte-equal to template |
| 12 | Metadata correct | CI lint of info.yaml | Module 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 to1'b0. Driveuio_oeconsistently withuio_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.yamlhas 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).
| Concern | Open-tool pre-signoff evidence | What a foundry signoff additionally requires |
|---|---|---|
| RTL structure | Lint, structural CDC/RDC, latch and width checks on the source | Same intent, run with the vendor’s qualified rule sets and waiver methodology |
| Function | Self-checking regression, measured coverage, formal property proofs | Same in principle; the difference is methodology rigor, not tool class |
| Equivalence | RTL-to-netlist LEC over open formal models | Commercial LEC qualified for the target library and flow |
| Timing (STA) | OpenSTA on the implemented design; finite reported slack | Signoff STA across all PVT corners on silicon-correlated, characterized libraries |
| Physical verification | DRC / LVS on open PDKs (sky130) with the open decks | PV on the as-implemented layout with the foundry’s qualified decks for the actual node |
| Libraries | Open standard-cell models; finite, reproducible metrics | Characterized, 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
- RTL lint checklist — the cheapest gate; categories worth treating as errors.
- Clock domain crossing — synchronizer structures simulation will not catch.
- Reset domain crossing — the reset-side crossing hazard, structurally similar to CDC.
- Metastability — why a 2-flop synchronizer is the structure CDC looks for.
- Width mismatch in Verilog — silent truncation and extension that lint flags early.
- Inferred latches in Verilog — the latch gate that submission flows enforce.
- FSM encoding — state encoding and reachability that feed the formal smoke.
Stage 2 — Functional
- Functional coverage closure — how to set and close a coverage target that means something.
- SystemVerilog assertions — the checkers that make a green regression mean something.
Stage 3 — Equivalence
- Logical equivalence checking — proving the synthesized netlist matches the RTL.
Stage 4 — Implement
- Setup, hold and STA basics — timing closure on the implemented design.
- DFT and scan readiness — making the design testable before it is fabricated.
- Low-power and UPF basics — isolation, retention and the power-aware crossing checks.
- RTL-to-GDSII on sky130 — the open implementation flow that produces STA, DRC and LVS.
Across stages
- RTL verification — the broader flow these gates sit inside.
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.