Running Implementation - 2023.1 English

Vitis Unified IDE and Common Command-Line Reference Manual (UG1553)

Document ID
UG1553
Release Date
2023-07-17
Version
2023.1 English

Make sure the HLS component is active in the Flow Navigator, or select Component to make it the active component in the tool. When the HLS component is the active component, the Flow Navigator enables running C Synthesis, C Simulation, C/RTL Co-simulation, and Implementation to build and analyze the HLS component. Select Run beneath the IMPLEMENTATION heading in the Flow Navigator.

Tip: When Vitis HLS reports the results of the high-level synthesis, it only provides an estimate of the results with projected clock frequencies and resource utilization (LUTs, DSPs, BRAMs, etc). These results are only estimates because Vitis HLS cannot know what optimizations or routing delays will be in the final synthesized or implemented design. Therefore use the Run Implementation command from Flow Navigator to return reports from Vivado synthesis or place and route.

The Vitis HLS tool is limited in terms of the estimations it can provide about the RTL design that it generates. It can project resource utilization and timing of the end result, but these are just projections. To get a better view of the RTL design, you can actually run Vivado synthesis and place and route on the generated RTL design, and review actual results of timing and resource utilization. Select the Run Implementation command from the Flow Navigator to open the dialog box as shown below.

Specify the strategy to employ in the implementation run. This is only for use during the implementation run for resource utilization and timing estimates, and does not affect the generated Vivado IP or Vitis kernels.

Configure the Tool

You can configure the simulator prior to running simulation using the C/RTL Co-Simulation section of the Config Editor, as shown below.

Figure 1. HLS Component Implementation Settings

The configuration commands for Implementation include:

Flow
Specify to run only synthesis or both synthesis and implementation. Synthesis alone will run faster than both synthesis and implementation, but will lack some of details of the implementation run. The default is impl.
RTL
Specifies the language to use when running Vivado out-of-context flow.
Clock Period
Specify the clock period to use during synthesis or implementation. When not specified, the default clock specified when the HLS component is created is used.
Implementation Strategy
Specify the strategy to employ in the implementation run. This is only for use during the implementation run for resource utilization and timing estimates, and does not affect the generated Vivado IP or Vitis kernels.
Max Timing Paths
Specify the number of timing paths to extract from the Timing Summary report. The specified number of worst case paths are returned.
Optimization Level
This is a general feature to manage the optimizations performed by the Vivado tool. The higher the setting, the more optimizations are employed, and the longer the runtime as a result.
Pblock
Specifies a Pblock range or value to use during placement and routing to limit the area available for the design.
Run Physical Optimizations
Specify the physical optimization to run. Choices include: none, place, route, and all
.
Report Level
Defines the report-level generated during synthesis or implementation. The report can include the utilization and timing summary, timing path details, or a failfast report, which is the default.
Synth Design Arguments
Specify options for the synth_design command.
Synthesis Strategy
Specify the strategy to employ in the Vivado synthesis run.
Tip: You can cancel the Implementation run using the Stop Implementation command from the Flow Navigator.

Run Implementation

With the Implementation setup defined in the config file you are ready to select Run from the Flow Navigator. You can track the progress of the implementation run in the Output window. The transcript for the run will have the top function name as <component-name>::implementation as shown below.

Figure 2. HLS Component Running Implementation

The implementation run in the Vitis IDE uses the vitis-run --mode hls --impl command as described in vitis-run Command. After the simulation is complete you should see the Implementation finished successfully message at the end of the transcript. You will also see the Reports folder under the Run command populated with the following reports:

  • Summary: Reports the command line used and the time stamp on the results
  • RTL Synthesis: Reports the results of synthesis including resource use and timing
  • Place and Route: As described in Implementation Report