1.0.0 • Published 6 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@latestIf 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@nightlyBasic 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);