FVO — Formal Verification Online
Lesson 1.3 · Welcome to Formal Verification

Simulation and formal, side by side

Formal does not replace simulation. The two answer different questions, and mature teams plan which one owns which part of the verification job. The table below compares them on the points that matter most in practice.

SimulationFormal property verification
You write…Stimulus (tests, sequences) and checkersAssertions, assumptions and covers
Inputs exploredOnly the ones your tests generateAll legal input sequences
Result for a checkPassed in the tests runProven / failed with CEX / bounded to N cycles
Failure trace lengthOften thousands of cyclesUsually the shortest possible path
Design sizeWhole chip, with emulation for speedBest on blocks; full chip only for special apps
Good atLong scenarios, software interaction, performanceCorner cases, control logic, concurrency, protocols
Weak atRare corner cases, proving absence of bugsVery deep sequential behaviour, wide datapaths like multipliers

A mental model: depth versus breadth

Think of all behaviours of a design as a tree that starts at reset and branches on every cycle. Simulation follows a few very long branches deep into the tree. Formal looks at every branch, but the effort grows with how far from reset it must look. That is why formal shines on logic where interesting behaviour happens within tens of cycles — arbiters, FIFOs, FSMs, handshakes, schedulers — and why deep datapath pipelines often need help.

resetformal: all branches, up to some depthsimulation: a few deep pathstime →
Formal covers every branch near reset; simulation follows a few branches very deep. They are complementary.

When should a block get formal?

A quick rule of thumb used by many teams: a block is a good formal candidate when it is control-heavy (lots of decisions, concurrency and corner cases), has clear interface rules you can write as assumptions, and its interesting behaviour happens within a modest number of cycles of reset or of a transaction start. Arbiters, credit/flow control, cache controllers, interrupt logic, power-management sequencers, and bus bridges are classic examples.

Was this page helpful?

Tip: select any text on the page before clicking Report and it will be quoted in your report.