Skip to content
STIMSMITH

Finite State Machine

Concept

A finite state machine (FSM) is a computational model that transitions among a finite set of states in response to inputs or events. FSMs are widely used to model digital hardware, communication protocols, processors, pipeline stages, FPGA control logic, and even specification languages for software testing. The model underpins techniques such as Interval Property Checking (IPC), CSR-transition coverage in processor fuzzing, and synchronization handshakes in SoC bus protocols.

First seen 5/26/2026
Last seen 7/16/2026
Evidence 36 chunks
Wiki v6

WIKI

Overview

A finite state machine (FSM) is a computational model that transitions among a finite set of states in response to inputs or events. FSMs are widely used to model digital hardware, communication protocols, processors, and other discrete-state systems. [C1][C2][C3]

Formal FSM model in hardware verification

READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

17 connections
register coverage ← uses 95% 5e
Register coverage aims to track FSM states in the processor by monitoring register values.
Interval Property Checking ← uses 100% 3e
IPC models synchronous circuits as finite state machines.
CSR-transition coverage ← uses 95% 2e
CSR-transition coverage tracks processor FSM state transitions through CSR changes.
privilege mode ← part of 85% 2e
Privilege mode is part of the processor FSM state tracked by CSR transitions.
Control Path Verification part of → 90% 2e
Control FSMs are the primary targets of control path verification in RISC-V processors.
ProcessorFuzz ← uses 90% 2e
ProcessorFuzz aims to explore different FSM states of the processor.
RTL part of → 90% 2e
FSMs are described in RTL hardware description languages.
DiFuzzRTL ← uses 95% 2e
DIFUZZRTL monitors FSM state transitions via register coverage.
CSR-transition coverage ← uses 95% 2e
CSR-transition coverage tracks FSM state transitions in the processor via CSR changes.
Ibex Core part of → 90% 1e
The Ibex Core controller uses a Finite State Machine to manage execution.
Next State Function ← part of 100% 1e
The next state function is a component of the finite state machine model.
Next State Function uses → 100% 1e
The FSM model uses a next state function to define transitions.
TheHuzz ← uses 90% 1e
TheHuzz uses FSM coverage among other metrics
Data Path Modeling ← uses 80% 1e
Multicycle instructions use an FSM in an early pipeline stage for dispatching.
Hard-to-Activate Regions part of → 90% 1e
Finite state machine synchronization requirements create hard-to-activate regions.
The paper provided efficient bug detection on finite traces in RISC-V ALUs and control FSMs.
specification language ← uses 95% 1e
The specification language incorporates finite state machines to model system behavior.

CITATIONS

15 sources
15 citations — click to expand
[1] FSMs are computational models that transition among a finite set of states in response to inputs, used for hardware, protocols, and discrete-state systems. Reachability problems for communicating finite state machines
[2] An FSM overlay on FPGAs uses memory decomposition on transitional logic and achieves 15-29% LUT reduction per FSM and 77-99% LUT reduction across different FSMs. A Scalable, Low-Overhead Finite-State Machine Overlay for Rapid FPGA Application Development
[3] A synchronous circuit is modeled as the FSM M = (I, S, S0, Δ, Λ, O) with transition relation T(s, s') = ∃x ∈ B^n : s' ≡ Δ(x, s). Reachability problems for communicating finite state machines
[4] Interval Property Checking unrolls the FSM transition relation T over [0, c] and conjoins it with [[f]]_t to search for counterexamples via SAT. Reachability problems for communicating finite state machines
[5] Mapping functions Data_R(s, i) and Valid_R(s, i) capture architectural register values across pipeline stages, gated by a forwarding FSM in an early pipeline stage. Reachability problems for communicating finite state machines
[6] A processor is described as a complex FSM, with CSRs exposing the current state and transitions in CSRs signifying a new FSM state. Reachability problems for communicating finite state machines
[7] DIFUZZRTL's register coverage monitors datapath registers to infer current FSM state, but only tracks current state and can miss transitions whose previous state matters. A Scalable, Low-Overhead Finite-State Machine Overlay for Rapid FPGA Application Development
[8] A Bug 2 RISC-V case shows that when a transition P1 from N1 to N2 has both endpoints covered individually, current-state coverage fails to drive P1 and the bug is missed. A Scalable, Low-Overhead Finite-State Machine Overlay for Rapid FPGA Application Development
[9] ProcessorFuzz proposes CSR-transition coverage analogous to edge coverage in software fuzzing, with selection criteria on status and configuration CSRs. A Scalable, Low-Overhead Finite-State Machine Overlay for Rapid FPGA Application Development
[10] ProcessorFuzz's transition map stores (Im, S0, S1) tuples, with Im included because different instructions can produce the same CSR-value transition (e.g., fflags from FP div/sqrt). A Scalable, Low-Overhead Finite-State Machine Overlay for Rapid FPGA Application Development
[11] Communicating FSMs over unbounded FIFO channels make reachability undecidable in general but decidable for the recognizable channel property; the rational channel case is open. Reachability problems for communicating finite state machines
[12] FuSS models SoC hardware designs as FSMs; the AXI-4 Lite write transaction uses two synchronized FSMs (master, slave) coordinating through awvalid/awready/wvalid/wready/bvalid/bready handshakes across IDLE, ADDR/ADDR_READY, WRITE/WR_READY, RESPOND, and DONE states. FuSS: Coverage-Directed Hardware Fuzzing with Selective Symbolic Execution
[13] In SoC hardware fuzzing, the complex interactions between multiple FSMs coupled with rare conditional dependencies create hard-to-activate regions and coverage plateaus. FuSS: Coverage-Directed Hardware Fuzzing with Selective Symbolic Execution
[14] TheHuzz classifies certain processor bugs as FSM-component bugs, e.g., mor1kx Bug B4 'Failure to detect cache coherency violation' is tagged as FSM in the cache controller (CWE-1202). TheHuzz: Instruction Fuzzing of Processors Using Golden Reference Models
[15] A contract-oriented specification language is extended with finite state machines to support symbolic animation and full test-scenario generation, including arbitrary-type CSP domains and a string type builder. A Constraint Logic Programming Approach to Automated Testing