Chapter 4
Formal & Structural Guarantees for FSM Correctness
๐ Official Links
| Language | GitHub Pages ๐ | GitHub ๐ป |
|---|---|---|
| ๐บ๐ธ English |
Chapter 1โ3 proved that the FSM works (simulation) and is buildable (synthesizable / ASIC-flow feasible). Chapter 4 moves to the next stage:
Prove that the FSM is correct by construction (structure) and by properties (formal thinking).
This chapter is tool-light. It is written to be human-readable and reviewable. You can later map these ideas to any formal tool (SVA + SymbiYosys, Jasper, VC Formal, etc.).
Goals
- Define spec-derived invariants (FSM must always satisfy them)
- Verify safety (no bad transition/output) and completeness (all expected transitions are covered)
- Define a method to check semantic equivalence between:
- Python reference FSM (Chapter 1)
- Verilog RTL FSM (Chapter 2โ3)
- Detect spec deviation / design bugs systematically
- Clarify the guarantee boundary to connect PID / LLM layers in AITL
Non-goals
- Full SoC integration
- Deep โhow to useโ for commercial formal tools
- PPA optimization or physical layout
- LLM implementation details
Reading order
- 01 Philosophy โ what correctness means in hardware FSMs
- 02 Invariants โ how to derive invariants from spec, and a working list template
- 03 Safety & Completeness โ property categories to ensure nothing is missing / nothing illegal exists
- 04 Equivalence โ Python โ Verilog semantic alignment
- 05 Boundary โ contract between PID, FSM, LLM
- 06 Checklist โ review checklist and acceptance criteria
Deliverables (what you should end up with)
- A written set of FSM invariants derived from spec
- A property checklist that can be implemented in assertions later
- A clear equivalence story (what โsame behaviorโ means)
- A boundary contract for integrating the 3-layer architecture (PID ร FSM ร LLM)