Help us improve
Share bugs, ideas, or general feedback.
From rtl-agent-team
Generates convention-compliant SystemVerilog wrapper modules for third-party IP (memory, PLL, PHY, DSP) from IP-XACT descriptors or datasheets.
npx claudepluginhub babyworm/rtl-agent-team --plugin rtl-agent-teamHow this skill is triggered — by the user, by Claude, or both
Slash command
/rtl-agent-team:rtl-ip-instantiate [ip-name | path/to/ip-descriptor.xml][ip-name | path/to/ip-descriptor.xml]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<Purpose>
Generates IEEE 1685-2014 IP-XACT XML descriptors from SystemVerilog RTL sources. Use for EDA tool integration (Vivado, Quartus, Genus) or automated SoC port connection.
Installs, lists, queries verified hardware IP blocks (FIFO, UART, SPI, AXI) with RTL, testbenches, formal properties into projects via 'add a FIFO' or /gf-ip add uart.
Guides full Xilinx/AMD FPGA/MPSoC workflows: Vivado hardware design/Block Design/IP/XDC/bitstream, Vitis HLS C/C++ IP synthesis, Vitis embedded software, PetaLinux Linux builds. Activates on vivado/fpga/zynq mentions.
Share bugs, ideas, or general feedback.
<Use_When>
<Do_Not_Use_When>
rtl-p5s-func-verify after this skill.
</Do_Not_Use_When><Why_This_Exists> IP instantiation is error-prone: wrong port widths, missing tie-offs, and parameter mismatches cause subtle bugs that survive lint. Automated wrapper generation from the authoritative IP descriptor eliminates transcription errors and documents every connection explicitly, making the mapping auditable. </Why_This_Exists>
docs/ip/{ip_name}.xml (IP-XACT) or equivalent datasheet.rtl/ip_wrappers/ (existing wrappers) or .claude/rules/rtl-coding-conventions.md.If missing: WARNING — halt and ask user for IP descriptor location before generating.
| Path | Role | |------|------| | `templates/ip-wrapper-template.sv` | SV wrapper scaffold with `u_` instance, `logic`-only ports, `// TIED:` and `// PARAM:` comment patterns. | | `scripts/.gitkeep` | (placeholder — deep-fill in follow-up PR) | | `references/ip-instantiate-conventions.md` | Port-prefix rules, vendor-to-project mapping table, tie-off/param comment format, anti-patterns. | | `examples/.gitkeep` | (placeholder — deep-fill in follow-up PR) |<Responsibility_Boundary>
// TIED: reason comment; no silent unconnected ports.
</Responsibility_Boundary>Apply steps 1-5 to every requested IP — do not stop after the first.
<Tool_Usage>
Task(subagent_type="rtl-agent-team:rtl-explorer",
prompt="Read rtl/ip_wrappers/ and docs/ for existing wrapper patterns. Summarise: "
"port naming convention (i_/o_/io_ prefixes), clock naming ({domain}_clk), "
"reset naming ({domain}_rst_n), instance naming (u_ prefix).")
Task(subagent_type="rtl-agent-team:rtl-architect",
prompt="Read IP descriptor at docs/ip/{ip_name}.xml (or datasheet). List all ports, "
"required tie-offs, and parameter settings. Design wrapper interface: map vendor "
"port names to project convention (i_/o_/io_ prefixes, {domain}_clk, {domain}_rst_n).")
Task(subagent_type="rtl-agent-team:rtl-coder",
prompt="Write rtl/ip_wrappers/{ip_name}_wrapper.sv. Instantiate {ip_name} as u_{ip_name} "
"with all ports connected per architect spec. Use logic only (no reg/wire). "
"Port prefixes: i_ input, o_ output, io_ bidirectional. "
"Clock: {domain}_clk, reset: {domain}_rst_n. "
"Tied ports: // TIED: reason. Parameters: // PARAM: description.")
</Tool_Usage>
SRAM IP with 32 vendor ports; IP-XACT at docs/ip/sram.xml; project uses AXI4-Lite. rtl-explorer confirms i_/o_ prefix style; rtl-architect maps vendor clk→sys_clk, rst_n→sys_rst_n, din→i_sram_din; rtl-coder writes wrapper with u_sram instance and logic types; lint passes. PLL IP with test-mode ports that must be tied off. All functional ports connected; test-mode ports tied to constants with `// TIED: unused test mode input` comments; parameter DATA_WIDTH documented with `// PARAM: AXI data bus width`. IP has port width mismatch — vendor provides 36-bit data bus, project interface is 32-bit. rtl-architect flags mismatch to user; wrapper generation halted pending user resolution decision; no auto-truncation performed.<Escalation_And_Stop_Conditions>
rtl/ip_wrappers/{ip_name}_wrapper.sv — convention-compliant wrapper module.<Final_Checklist>
// TIED: reason comments.i_/o_/io_ prefixes (NOT _i/_o suffix).clk or {domain}_clk naming (NOT clk_i).rst_n or {domain}_rst_n naming (NOT rst_ni).u_ prefix (e.g., u_{ip_name}).logic types only — no reg/wire.// PARAM: comments.rtl/ip_wrappers/{ip_name}_wrapper.sv.
</Final_Checklist>