hls-c2rtl

Translates C, C++, and SystemC algorithms into synthesizable RTL via High-Level Synthesis.

26|8|Updated Jun 13, 2026
One-click install
npx skills add https://github.com/vibeic/vibe-ic --skill hls-c2rtl-vibeic
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: hls-c2rtl
Source: https://github.com/vibeic/vibe-ic/tree/main/vibe-ic-marketplace/plugins/vibe-ic/skills/hls-c2rtl
Command: npx skills add https://github.com/vibeic/vibe-ic --skill hls-c2rtl-vibeic

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Converting an algorithm already written in C, C++, or SystemC into hardware by hand is slow and error-prone. This Skill guides the High-Level Synthesis (HLS) flow that lowers software algorithmic descriptions into synthesizable RTL, then enforces the same deterministic lint and review gates that hand-written RTL must pass. ## Core Features & Use Cases - Guided HLS workflow: Cleans source code (removing pointers, dynamic allocation, recursion), selects interfaces (AXI-Stream, AXI-Lite, BRAM), and applies pragmas such as PIPELINE, UNROLL, DATAFLOW, and ARRAY_PARTITION. - C/RTL co-simulation and PPA reporting: Co-simulates against golden test vectors and produces a directive log with latency, throughput, and area estimates. - Mandatory deterministic gates: Runs rtl_review_aggregate, rtl_hygiene_lint, and reset_discipline_check on HLS-emitted RTL, plus a compliance audit, before any result is accepted. - Use Case: You have a C++ matrix-multiply or DSP filter reference implementation and need a Verilog block for an FPGA or ASIC. The Skill produces the annotated source, HLS tool script, and a PPA report, then hands the RTL off to review and testbench generation. ## Quick Start Ask the assistant to convert your C++ algorithm into synthesizable RTL using HLS with a target clock period and interface constraints.

Frequently Asked Questions about hls-c2rtl

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert C++ code to Verilog using HLS?▼

Rewrite the C++ with hardware-friendly idioms (bounded loops, no dynamic memory, no recursion), choose interfaces such as AXI-Stream or AXI-Lite, then apply pragmas like PIPELINE, UNROLL, and DATAFLOW. Run the HLS tool, co-simulate against golden test vectors, and lint the emitted RTL.

What HLS tools are supported for C to RTL synthesis?▼

The workflow targets Vitis HLS, Catapult HLS, and Stratus HLS on the commercial side, and XLS, Google's open-source DSL-based HLS, as the open-source option. Tool choice is one of the required inputs alongside constraints and test vectors.

Can HLS tools synthesize any C or C++ code directly?▼

No. HLS only digests statically-bounded C: pointer chasing, dynamic allocation, and recursion must be removed first. The algorithm must be rewritten with explicit streaming and bounded loops before the tool can produce good quality of results.

Is HLS-generated RTL safe to use without further checks?▼

No. HLS tools can emit RTL with subtle latch and reset-discipline issues that downstream synthesis catches only after wasted hours. The emitted RTL must pass the same review aggregation, hygiene lint, and reset-discipline gates as hand-written RTL.

What inputs are required to run an HLS C-to-RTL flow?▼

You need the C/C++/SystemC source files, golden test vectors for co-simulation, a target of FPGA bitstream or ASIC netlist, constraints such as clock period, latency and throughput budgets, and a chosen HLS tool.