Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Output Files

Output Artifacts

The artifact produced by tapa depends on the target selected with --target.

Xilinx Vitis target (--target xilinx-vitis, the default)

Produces an .xo object file. This is passed to the Vitis v++ compiler for bitstream generation. An XO file is a ZIP archive; you can unzip it to inspect or manually edit the RTL it contains, then re-zip it before passing it to v++.

Xilinx HLS target (--target xilinx-hls)

Produces a .zip RTL archive instead of an .xo file. The archive contains the same RTL files and metadata but without the Vitis shell wrapper. Use this when the RTL is consumed directly by a downstream EDA tool.

Reproducibility

TAPA strips timestamps, absolute paths, and random IDs from both .xo and .zip artifacts before writing them to disk. Given the same source code and tool versions, repeated invocations produce byte-identical output. This makes the artifacts suitable for CI and release attestation workflows.

Note

Byte identity holds only within the same vendor tool version. Upgrading Vitis HLS or Vivado will typically change internal artifact content even for identical source inputs.

Intermediate Files

When --work-dir is specified (recommended), TAPA writes intermediate files to that directory. The structure is:

work.out/
├── cpp/
├── flatten/
├── log/
├── tar/
├── hdl/
├── graph.json
├── settings.json
├── report.json
└── report.yaml

File and directory descriptions

cpp/

Contains per-task C++ source files extracted by tapa analyze. Each file is independently compiled to RTL by vitis_hls.

flatten/

Created during tapa analyze. Contains preprocessed (flattened) copies of the input source files, one per input file, with a short hash prefix in the filename to avoid collisions. All #include directives are expanded and comments are preserved, giving tapacc self-contained translation units to operate on.

log/

Stores logs from processing steps, including vitis_hls csynth_design logs.

tar/

Contains one .tar archive per task. Each archive holds the output of csynth_design for that task.

hdl/

Stores RTL files for all tasks generated by vitis_hls, plus TAPA-specific infrastructure RTL.

graph.json

JSON file recording all contents and metadata of the input design, including the task graph structure.

settings.json

Records compilation settings shared across pipeline steps (target, part number, clock period, platform). Downstream tapa sub-commands read this file to avoid repeating options on the command line.

report.json / report.yaml

Post-synthesis resource utilisation report, written unconditionally after tapa synth completes. Both files contain the same data in JSON and YAML encoding respectively. Passing --enable-synth-util to tapa synth additionally generates per-task .hier.util.rpt files under tar/, but does not affect whether these top-level report files are written.