Verification is reported to consume 60 to 70% of engineering effort in chip projects, per Wilson Research Group functional verification study data, and a respin is the most expensive outcome in the calendar. That effort is bounded by what simulation and coverage can establish, which is not the same as correctness.
Not all of signoff is empirical, and the parts that aren't are the parts that work. Logic equivalence checking proves that a netlist implements the RTL it came from, over every input. Formal property verification proves a stated property holds on every input. Both are ordinary practice, and both need something written down to check against: an earlier design, or a property somebody wrote.
Whether the RTL does what the specification meant has neither. Simulation, emulation, and coverage closure answer that question, and they answer a narrower one than the tapeout decision actually depends on. They establish that the design behaved correctly on the stimulus it was given. The decision needs to know it behaves correctly on stimulus nobody wrote.
The gap between those two statements is where respins come from, and it does not close by adding engineers or simulation hours. It's the same limit that model compilation runs into, met from the other end of the pipeline.
Verified against manufacturing rules
The same toolchain that proves a lowering also produces layouts that pass manufacturing checks, so the verification argument and the physical result come from one pipeline rather than two.
Clean manufacturing signoff on a real PDK: zero DRC, LVS, antenna and routing violations under Sky130 signoff parameters. Behavior is confirmed on physical silicon, on a Nexys A7-100T, Artix-7, flashed over JTAG and read back over UART.
One toolchain serves all four, one at each layer of the lowering. The specification is solved as logic, the interpreter's run is held against a separately written implementation, the sequential model is simulated as RTL, and the placement is executed on the fabric. The four methods share no failure mode, so agreement across them is evidence that no single method provides on its own.
LOGOS Supercompiler
one language, English. one tool, LOGOS.
Specify
One executable source
Compile
Placement onto the fabric
Prove
Obligations discharged
Check
Re-derived independently
Layer 01.
Source
LOGOS, the executable specification
checked by Formal SAT solving
Exhaustive across the primitive's input boundaries
from the toolchain: the specification parsed to logic, and the obligations the lowering opens
Layer 02.
Interpreter
Reference semantics, software
checked by Reference oracle
Continuous comparison, independent implementation
from the toolchain: the interpreter's run of the same source, held against a separately written implementation
Layer 03.
Register VM
Sequential execution model
checked by Soft core RTL
Simulated against the same reference
from the toolchain: the same program in its sequential form, and the reference to hold it to
Layer 04.
Dataflow tiles
Spatial placement, physical fabric
checked by Physical fabric
Executed on hardware, results read back over UART
from the toolchain: the placement onto the fabric, flashed over JTAG
one language, one toolThe specification is written in English. LOGOS carries it down through every layer, and the meaning does not change on the way. What every layer computes is the int8 quantized matmul primitive: the same program, in another form.
agreementFour layers, four independent readings of one primitive. The methods share no failure mode, so agreement across them is evidence that no single method establishes on its own.
Assertions are written by hand today, from a specification that is prose. The prose is where the ambiguity lives, and an assertion that faithfully encodes a sentence somebody misread is a passing check on the wrong property.
The toolchain parses the sentence itself. Below are three protocol properties, each one an English sentence from the compiler's hardware test corpus and the assertion it produced.
Specification, in LOGOS
SystemVerilog assertion
AXI write address stability, a strong until
assert property (@(posedge clk) Assert_AWVALID_ |-> (Assert_AWREADY_ || (Remain_AWVALID_ && s_eventually((Remain_AWVALID_ until Assert_AWREADY_)))));Specification, in LOGOS
SystemVerilog assertion
APB access phase
assert property (@(posedge clk) (psel && Assert_PENABLE_) |-> ##[0:1] Follow_PREADY_);Specification, in LOGOS
SystemVerilog assertion
APB protocol exclusion
assert property (@(posedge clk) !(Assert_PSEL_) |-> !(Assert_PENABLE_));Each assertion is derived from a formally parsed sentence, and the parse is the artifact a reviewer can check. The output is a set of properties to run against RTL in the tool the program already uses, so what changes is where they come from.
Source: The compiler and its hardware test corpus, on GitHub(opens in a new tab)
Buying the silicon rather than designing it? Model bring-up on new silicon
How is that established without relying on coverage?