brainstorming
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or planning anything new, in software or out of it (a talk, a business, a renovation).
soc-integrationSoC IP integration — IP procurement and qualification, IP configuration, bus fabric setup, top-level RTL integration, and chip-level simulation. Use when assembling a SoC from multiple IP blocks, configuring an AXI bus interconnect, integrating memory macros, or running chip-level tests.
Independent GitHub snapshot · Automated classification · Original documentation governs
When this skill is loaded and a user presents a SoC integration task, do not
execute stages directly. Immediately spawn the
digital-chip-design-agents:soc-integration-orchestrator agent and pass the full
user request and any available context to it. The orchestrator enforces the stage
sequence, loop-back rules, and sign-off criteria defined below.
Use the domain rules in this file only when the orchestrator reads this skill mid-flow for stage-specific guidance, or when the user asks a targeted reference question rather than requesting a full flow execution.
Before executing or advising on any stage, read the following files if they exist:
memory/soc/knowledge.md — known failure patterns, successful tool flags, PDK/tool quirks.
Incorporate its guidance into every stage decision. If absent, proceed without it.memory/soc/run_state.md — current run identity (run_id, design_name, tool,
last_stage). Use this to resume correctly after interruption. If absent, a new run
is starting; the orchestrator will create this file before the first stage.This pre-run read applies whether this skill is loaded by a user or called by the orchestrator mid-flow. It ensures the fix database is consulted before any diagnosis step.
Assemble a complete SoC from first-party RTL, licensed hard/soft IPs, and memory macros. Covers IP procurement, bus fabric configuration, top-level integration, and chip-level simulation sign-off.
verilator) — fast simulation of the integrated top-levelfusesoc) — IP package manager and build system for SoC integrationvcs, dialect synopsys) — chip-level simulation with coveragexrun, dialect cadence) — multi-language chip-level simulationvsim, dialect siemens) — chip-level simulation and protocol checking| Aspect | Hard IP (GDSII) | Soft IP (RTL) |
|---|---|---|
| Area | Fixed | Synthesis-dependent |
| Timing | Characterised libs only | Optimisable |
| PD effort | Place as macro | Full PD flow |
| Customisation | None | Parameterisable |
design_state.constraints.clock.clk_mhz MHz target frequency at worst-case corner| Fabric Type | Use Case | Bandwidth |
|---|---|---|
| AXI4 Crossbar | High-bandwidth data paths | High |
| AXI4-Lite | Low-bandwidth control registers | Low |
| APB3 | Peripheral register access | Low |
| NoC | Many-core topologies | Very High |
soc_top.sv in the context of the full SoC filelist, compiled as one unit. Linted
alone, every IP is an unknown module and port-width mismatches go unchecked.f lists run
plugins/rtl-design/skills/rtl-design/check_design_inputs.py <filelist.f> --rtl-dir <rtl> --list <name>=<file> ...sv2v <files> > out.v && yosys -q -p 'read_verilog out.v; hierarchy -check -top soc_top').
A construct legal in SystemVerilog and not in Verilog-2005 passes lint and chip-level
simulation and fails only there| Bug | Consequence |
|---|---|
| Wrong clock domain | Metastability in silicon |
| Reset polarity inversion | Block never exits reset |
| Unconnected valid/enable | Block runs freely or never |
| AXI address offset wrong | Peripheral at wrong base address |
| Module missing from the synthesis or PD source list | Silently black-boxed: wrong netlist behind a green simulation regression |
| SystemVerilog construct the converter cannot lower | Synthesis or PD front-end syntax error that lint and simulation never see |
See plugins/meta/skills/pipeline-orchestration/SKILL.md §Constraints Schema for the authoritative schema and stage-entry validation rule.
Required at entry (ip_procurement) — hard-fail if missing:
constraints.clock.clk_mhz — target SoC clock frequency; used to verify IP timing at ip_configurationOptional (schema defaults apply when absent):
constraints.timing.wns_ns_target (default: 0) — WNS sign-off threshold for chip-level timingconstraints.area.area_um2 — total SoC area budget (used to cross-check IP area estimates)constraints.power.power_mw — SoC power budgetAfter each stage completes (regardless of whether an orchestrator session is active),
write or overwrite one JSON record in memory/soc/experiences.jsonl keyed by
run_id. This ensures data is persisted even if the flow is interrupted or called
without full orchestrator context.
Use run_id = soc_<YYYYMMDD>_<HHMMSS> (set once at flow start; reuse on each
stage update). Set signoff_achieved: false until the final sign-off stage completes.
Write memory/soc/run_state.md as the first action before launching any tool:
run_id: soc_<YYYYMMDD>_<HHMMSS>
design_name: <design>
tool: <primary tool>
start_time: <ISO-8601>
last_stage: <first stage name>
Update last_stage after each stage completes. This file lets wakeup-loop prompts
and resumed sessions identify the correct run without relying on in-memory state.
Create the file and parent directories if they do not exist.
If mcp__plugin_ecc_memory__add_observations is available in this session, emit each
applied fix as an observation to entity chip-design-soc-fixes after writing to
experiences.jsonl. Skip silently if the tool is absent — JSONL is the canonical record.