gf-fusesoc

SkillFiles & storage

FuseSoC build system integration for GateFlow. Generates .core files and drives synthesis/simulation through Edalize backends (Vivado, Quartus, open-source tools). Use when the user needs to create a FuseSoC core file, build with Edalize, or integrate RTL into a FuseSoC project.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the gf-fusesoc skill

What this skill tells your AI

The instructions your AI receives, as published by codejunkie99/gateflow-plugin in skills/gf-fusesoc/SKILL.md and read by ahel’s review.

allowed-tools:

  • Bash
  • Read

GF-FuseSoC -- Build System Integration

Generate FuseSoC .core files and drive builds through Edalize backends.

.core File Template

CAPI=2:
name: ::my_project:1.0.0
filesets:
  rtl:
    files: [rtl/top.sv, rtl/fifo.sv]
    file_type: systemVerilogSource
  tb:
    files: [tb/tb_top.sv]
    file_type: systemVerilogSource
  constraints:
    files:
      - constraints/arty_a7.xdc: {file_type: xdc}
targets:
  sim:
    filesets: [rtl, tb]
    toplevel: tb_top
    default_tool: verilator
  synth:
    filesets: [rtl, constraints]
    toplevel: top
    default_tool: vivado
    tools:
      vivado:
        part: xc7a35ticsg324-1L

Complete .core Schema

CAPI=2
name: vendor:library:name:version    # VLNV identifier (required)
description: "Brief description"

filesets:
  rtl:
    file_type: systemVerilogSource
    files:
      - rtl/top.sv
      - rtl/core.sv
    depend:
      - ">=vendor:lib:dep:1.0"
  tb:
    files: [tb/tb_top.sv]
    file_type: systemVerilogSource
  constraints_ice40:
    files: [constraints/ice40.pcf]
    file_type: PCF
  constraints_ecp5:
    files: [constraints/ecp5.lpf]
    file_type: LPF

targets:
  default:
    filesets: [rtl]
    toplevel: top
  sim:
    default_tool: verilator
    filesets: [rtl, tb]
    toplevel: tb_top
    tools:
      verilator:
        mode: cc
        verilator_options: [--trace, --coverage]
      icarus:
        iverilog_options: [-g2012]
  synth_ice40:
    default_tool: icestorm
    filesets: [rtl, constraints_ice40]
    toplevel: top
    tools:
      icestorm:
        pnr: next
        nextpnr_options: [--hx8k, --package, ct256, --freq, "48"]
  synth_ecp5:
    default_tool: trellis
    filesets: [rtl, constraints_ecp5]
    toplevel: top
    tools:
      trellis:
        nextpnr_options: [--25k, --package, CABGA256]
  synth_vivado:
    default_tool: vivado
    filesets: [rtl]
    toplevel: top
    tools:
      vivado:
        part: xc7a35tcpg236-1
  lint:
    default_tool: verilator
    filesets: [rtl]
    toplevel: top
    tools:
      verilator:
        mode: lint-only

parameters:
  WIDTH:
    datatype: int
    paramtype: vlogparam
    default: 8
    description: "Data width"

File Types

TypeExtensions
verilogSource.v, .vh
systemVerilogSource.sv, .svh
vhdlSource.vhd, .vhdl
xdcVivado constraints
PCFiCE40 constraints
LPFECP5 constraints
CSTGowin constraints

Edalize Backends

BackendToolUse Case
verilatorVerilatorSimulation + lint
icarusIcarus VerilogSimulation
vivadoXilinx VivadoSynth + P&R
quartusIntel QuartusSynth + P&R
yosysYosysOpen-source synth

Dependency Management

depend:
  - vendor:lib:uart:1.0         # Exact
  - ">=vendor:lib:spi:2.0"     # Minimum
  - "^vendor:lib:i2c:1.2"      # Semver compatible
  - "~vendor:lib:fifo:1.2.3"   # Patch only
OperatorMeaning
= (default)Exact match
>=At least
^Semver compatible (>=X.Y.Z, <X+1.0.0)
~Patch only (>=X.Y.Z, <X.Y+1.0)

Running FuseSoC

fusesoc run --target=sim vendor:lib:design           # Simulate
fusesoc run --target=sim --tool=icarus vendor:lib:design  # Specific simulator
fusesoc run --target=synth_ice40 vendor:lib:design    # Synthesize
fusesoc run --target=lint vendor:lib:design           # Lint only
fusesoc core list                                      # List cores
fusesoc library add name https://github.com/org/repo  # Add library

Tool Backend Options

icestorm

  • pnr: next (nextpnr) or arachne
  • nextpnr_options: CLI args for nextpnr-ice40
  • yosys_synth_options: Extra synth_ice40 options

trellis (ECP5)

  • nextpnr_options: CLI args for nextpnr-ecp5
  • yosys_synth_options: Extra synth_ecp5 options

verilator

  • mode: binary, cc, lint-only
  • verilator_options: Extra CLI args

vivado

  • part: FPGA part number
  • synth: vivado or yosys

Auto-Generation

Scans project, reads .gateflow/project.yaml, generates .core file.

GATEFLOW-RESULT Integration

---GATEFLOW-RESULT---
STATUS: PASS | FAIL | ERROR
FILES: [generated .core file]
DETAILS: [summary]
---END-GATEFLOW-RESULT---

Signals

GitHub stars
112
Forks
14
Last commit
May 2026
Advanced
Catalog kind
skill
Gateway key
gf-fusesoc
Source
github.com/codejunkie99/gateflow-plugin