hls-cpp-to-rtl

Expert skill for C/C++ to RTL conversion using High-Level Synthesis tools

509 stars

Best use case

hls-cpp-to-rtl is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Expert skill for C/C++ to RTL conversion using High-Level Synthesis tools

Teams using hls-cpp-to-rtl should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/hls-cpp-to-rtl/SKILL.md --create-dirs "https://raw.githubusercontent.com/a5c-ai/babysitter/main/library/specializations/fpga-programming/skills/hls-cpp-to-rtl/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/hls-cpp-to-rtl/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How hls-cpp-to-rtl Compares

Feature / Agenthls-cpp-to-rtlStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Expert skill for C/C++ to RTL conversion using High-Level Synthesis tools

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# HLS C/C++ to RTL Skill

## Overview

Expert skill for High-Level Synthesis (HLS) development, converting C/C++ algorithms to optimized RTL implementations for FPGA acceleration.

## Capabilities

- Write HLS-synthesizable C/C++ code
- Apply Vitis HLS pragmas (PIPELINE, UNROLL, ARRAY_PARTITION)
- Optimize loop initiation interval (II)
- Configure HLS interface synthesis (AXI-MM, AXI-Stream, AXI-Lite)
- Analyze HLS reports and iterate on design
- Apply dataflow optimization
- Handle fixed-point arithmetic (ap_fixed, ap_int)
- Integrate HLS IP into Vivado block designs

## Target Processes

- hls-development.js
- hardware-software-codesign.js
- ip-core-integration.js

## Usage Guidelines

### Code Structure
- Use static arrays for memory inference
- Avoid dynamic memory allocation
- Structure loops for pipeline optimization
- Use ap_int/ap_uint for arbitrary precision

### Key Pragmas
- `#pragma HLS PIPELINE II=1` - Pipeline loops for throughput
- `#pragma HLS UNROLL factor=N` - Unroll loops for parallelism
- `#pragma HLS ARRAY_PARTITION` - Memory partitioning
- `#pragma HLS DATAFLOW` - Task-level parallelism
- `#pragma HLS INTERFACE` - Port protocol specification

### Interface Synthesis
- **AXI4-Lite**: Control registers and scalar arguments
- **AXI4 Memory-Mapped**: Large data arrays
- **AXI4-Stream**: Streaming data interfaces
- **ap_none/ap_vld/ap_hs**: Simple handshake protocols

### Optimization Flow
1. Baseline functional implementation
2. Analyze synthesis report
3. Identify bottleneck (II, latency, resources)
4. Apply targeted optimizations
5. Iterate until QoR targets met

## Dependencies

- Vitis HLS CLI awareness
- C/C++ language expertise
- FPGA resource understanding