1.0.0 • Published 2 months ago
@specs-feup/clava-vitis-integration v1.0.0
clava-vitis-integration
An extension of the Clava C/C++ source-to-source compiler to programatically synthesize functions obtained from the AST using Vitis HLS
How to install
This package is available on NPM. Assuming you already have a Clava-based NPM project setup, you can install the latest stable release with:
npm install @specs-feup/clava-vitis-integration@latest
If you want to use unstable and experimental features, use the staging
or nightly
tags instead, as they are both built using the most recent commit in the repository. Nightly builds are built automatically every day, while staging builds are built on-demand:
npm install @specs-feup/clava-vitis-integration@nightly
Basic usage
To synthesize a function and obtain the synthesis report, you can do something like:
import Query from "@specs-feup/lara/api/weaver/Query.js";
import { FileJp } from "@specs-feup/clava/api/Joinpoints.js";
import { AmdPlatform, ClockUnit, OutputFormat, UncertaintyUnit, VitisHlsConfig } from "@specs-feup/clava-vitis-integration/VitisHlsConfig";
import { VitisHls } from "@specs-feup/clava-vitis-integration/VitisHls";
const vitis = new VitisHls();
const config = new VitisHlsConfig("rgbToGrayscale")
.setClock({ value: 100, unit: ClockUnit.MEGAHERTZ })
.setUncertainty({ value: 2, unit: UncertaintyUnit.NANOSECOND })
.setPlatform(AmdPlatform.ZCU102)
.setOutputFormat(OutputFormat.VITIS_XO);
vitis.setConfig(config);
// RTL synthesis (report with resource usage estimations)
const synReport = vitis.synthesize();
console.log(synReport);
// Place and route (report with actual resource usage)
const placeRouteReport = vitis.implement();
console.log(placeRouteReport);