ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

Verilog Design Flow

Design, implement, and verify Verilog/SystemVerilog modules with spec-driven development, self-checking testbenches, and automated simulation workflows. Supports Synopsys VCS, Cadence Xrun, Icarus Verilog simulators, and slang static syntax checker. Use when the user needs to write Verilog modules, design digital circuits, create counters/FSMs/interfaces, simulate and verify designs, or analyze VCD waveforms.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/billchen1020/verilog-design
Or

Core Rules

Phase 1: Understand Requirements

  1. Ask clarifying questions if the design spec is incomplete
  2. Identify: clock/reset strategy, interface signals, functionality, timing constraints
  3. Confirm the target: synthesis (FPGA/ASIC) or simulation only

Phase 2: Write Design Spec

  1. Create a markdown spec document with:
    • Module name and purpose
    • Port list (direction, width, description)
    • Functional description
    • Timing diagram (if applicable)
    • Test scenarios checklist
  2. Store spec in memory or as a file for reference

Phase 3: Implement Verilog

  1. One-always-one-signal coding style: Each signal should be assigned in exactly one always block
    • Separate sequential (posedge clk) and combinational (@*) logic
    • Declare intermediate signals for complex logic
    • Avoid mixing blocking (=) and non-blocking (<=) assignments in the same always block
  2. Follow synthesizable coding guidelines:
    • Use always @(posedge clk) for sequential logic
    • Use assign or always @(*) for combinational logic
    • Avoid latches (ensure all branches assign in combinational blocks)
    • Explicit reset strategy (sync/async)
  3. Include header comments with author, date, and revision (see Version Tracking below)
  4. Use descriptive signal names, avoid single-letter variables

Phase 3b: Static Syntax Check with Slang

Before simulation, run static syntax checking using slang:

# Check Verilog/SystemVerilog syntax
slang <module_name>.v

# Or for SystemVerilog files
slang <module_name>.sv

What slang checks:

  • Syntax errors and parsing issues
  • Type mismatches
  • Undefined references
  • Port connection errors
  • SystemVerilog compliance

If slang reports errors:

  1. Fix all syntax errors before proceeding to simulation
  2. Pay attention to warnings about potential issues
  3. Re-run slang until "Build succeeded: 0 errors"

Phase 3c: Design Review Checklist

Before simulation, verify:

  • Slang syntax check passes (0 errors)
  • All sequential signals have explicit reset values
  • No combinational logic loops (synthesis will error)
  • No unintentional latches (all if/case branches assign in combinational blocks)
  • State machines have default case branch
  • Clock domain crossing signals are properly synchronized
  • Vector widths match between assignment source and destination
  • Array indices are within declared bounds
  • No blocking assignments (=) in sequential always blocks
  • No non-blocking assignments (<=) in combinational always blocks
  • timescale directive present in all source files

Phase 4: Write Testbench

  1. Create self-checking testbench using:
    • Clock generator (typical: always #5 clk = ~clk; for 10ns period)
    • Reset stimulus
    • Input stimulus generation
    • Expected output generation/comparison
    • $display() or $monitor() for pass/fail reporting
    • $finish() after all tests complete
  2. Save as <module_name>_tb.v

Metadata

Stars4473
Views0
Updated2026-05-01
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-billchen1020-verilog-design": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.