Back to Registry View Author Profile
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-designOr
Core Rules
Phase 1: Understand Requirements
- Ask clarifying questions if the design spec is incomplete
- Identify: clock/reset strategy, interface signals, functionality, timing constraints
- Confirm the target: synthesis (FPGA/ASIC) or simulation only
Phase 2: Write Design Spec
- Create a markdown spec document with:
- Module name and purpose
- Port list (direction, width, description)
- Functional description
- Timing diagram (if applicable)
- Test scenarios checklist
- Store spec in memory or as a file for reference
Phase 3: Implement Verilog
- 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
- Follow synthesizable coding guidelines:
- Use
always @(posedge clk)for sequential logic - Use
assignoralways @(*)for combinational logic - Avoid latches (ensure all branches assign in combinational blocks)
- Explicit reset strategy (sync/async)
- Use
- Include header comments with author, date, and revision (see Version Tracking below)
- 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:
- Fix all syntax errors before proceeding to simulation
- Pay attention to warnings about potential issues
- 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/casebranches assign in combinational blocks) - State machines have
defaultcase 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 -
timescaledirective present in all source files
Phase 4: Write Testbench
- 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
- Clock generator (typical:
- Save as
<module_name>_tb.v
Metadata
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.