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.