1.0.0 • Published 2 months ago

@specs-feup/clava-vitis-integration v1.0.0

Weekly downloads
-
License
-
Repository
github
Last release
2 months ago

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);
1.0.0

2 months ago

0.9.1

2 months ago

0.9.0

2 months ago