fsm-design

Design and review Verilog/SystemVerilog FSMs with three-process structure and SVA assertions.

1|1|Updated Jan 29, 2026
One-click install
npx skills add https://github.com/KishoreDamam/VLSI-agkit --skill fsm-design
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: fsm-design
Source: https://github.com/KishoreDamam/VLSI-agkit/tree/main/.agent/skills/fsm-design
Command: npx skills add https://github.com/KishoreDamam/VLSI-agkit --skill fsm-design

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill helps you write and review Verilog/SystemVerilog FSMs that synthesize cleanly without unintended latches, illegal states, or broken handshakes.

Core Features & Use Cases

  • Three-process FSM guidance: Separate state register, next-state logic, and output logic to improve linting, reviewability, and correctness.
  • Latch and reset correctness: Prevent incomplete case assignments with default-before-case patterns, and ensure deterministic reset behavior.
  • Timeout + assertions: Add separate programmable timeout counters and SVA properties (legal-state, liveness, no-deadlock, handshake invariants) to catch issues early in sim and formal.

Quick Start

Use the fsm-design skill when you are implementing or reviewing a SystemVerilog FSM and you want the pattern that prevents latches, handles all states, and includes a practical timeout and SVA assertions.

Frequently Asked Questions about fsm-design

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I prevent latch inference in SystemVerilog FSMs?▼

Prevent latch inference in SystemVerilog FSMs by using default assignments before the `case` statement and adopting a three-process structure to separate state registers, next-state logic, and outputs.

What is the best way to handle illegal states in Verilog finite state machines?▼

Handle illegal states in Verilog finite state machines by implementing deterministic reset behavior and defining safe default transitions within your state encoding logic to ensure robust recovery.

How do I add SVA assertions to verify FSM handshake protocols?▼

Add SVA assertions to verify FSM handshake protocols by writing properties for legal-state checks, liveness, no-deadlock conditions, and handshake invariants to catch issues early in simulation and formal verification.

Can I use a three-process FSM structure with one-hot state encoding?▼

Yes, a three-process FSM structure supports one-hot, binary, and gray state encoding choices, improving linting and reviewability while maintaining correct next-state and output logic separation.

How do I implement timeout counters for FSM wait states?▼

Implement timeout counters for FSM wait states by integrating a separate programmable timeout counter module that safely transitions the state machine out of stalled handshake conditions.

Why does my FSM have incomplete case assignments during linting?▼

Incomplete case assignments during linting usually indicate missing default branches; using default-before-case patterns ensures all states are handled and prevents unintended latch synthesis.