config_compile - 2022.2 English

Vitis High-Level Synthesis User Guide (UG1399)

Document ID
UG1399
Release Date
2022-12-07
Version
2022.2 English

Description

Configures the default behavior of front-end compiling.

Syntax

config_compile [OPTIONS]

Options

-enable_auto_rewind[=true|false]
When TRUE uses alternative HLS implementation of pipelined loops which enables automatic loop rewind. This accepts values of TRUE or FALSE. The default value is TRUE.
-ignore_long_run_time[=true|false]
Do not report the "long run time" warning. This accepts values of TRUE or FALSE. The default value is FALSE.
-name_max_length <value>
Specifies the maximum length of function names. If the length of the name is longer than the threshold, the last part of the name is truncated, and digits are added to make the name unique when required. The default is 256.
-no_signed_zeros[=true|false]
Ignores the signedness of floating-point zero so that the compiler can perform aggressive optimizations on floating-point operations. This accepts values of TRUE or FALSE. The default value is FALSE.
Important: Using this option might change the result of any floating point calculations and result in a mismatch in C/RTL co-simulation. Please ensure your test bench is tolerant of differences and checks for a margin of difference, not exact values.
-pipeline_flush_in_task <always | never | ii1>
Specifies that pipelines will be flushing by default in hls::tasks to reduce the probability of deadlocks in C/RTL Co-simulation. This option is limited to pipelines that achieve an II=1 with the default option of ii1. This default can be overridden using always to always enable flushing piplelines in either hls::tasks or dataflow, or can be completely disabled using never. For more information refer to Flushing Pipelines and Pipeline Types.
Important: Flushing pipelines are not compatible with the rewind option specified in the PIPLEINE pragma or directive.
always
Always make pipelines flushable in hls::tasks or dataflow regardless of II.
never
Never make pipeline flushable unless specifically overridden by other directives or pragmas.
ii1
Make pipelines that achieve II=1 flushable in hls::tasks. This is the default setting.
-pipeline_loops <threshold>
Specifies the lower limit used when automatically pipelining loops. The default is 64, causing Vitis HLS is to automatically pipeline loops with a tripcount of 64, or greater.

If the option is applied, the innermost loop with a tripcount higher than the threshold is pipelined, or if the tripcount of the innermost loop is less than or equal to the threshold, the innermost loop is unrolled. This analysis is then repeated for the parent loop. If the innermost loop has no parent loop, the innermost loop is pipelined regardless of its tripcount.

-pipeline_style <stp | flp | frp>
Specifies the default type of pipeline used by Vitis HLS for the PIPELINE pragma or directive, or for loop pipelining due to the -pipeline_loops threshold specified above. For more information on pipeline styles, refer to Flushing Pipelines and Pipeline Types.
Important: This is a hint not a hard constraint. The tool checks design conditions for enabling pipelining. Some loops might not conform to a particular style and the tool reverts to the default style (stp) if necessary.
stp
Stall pipeline. Runs only when input data is available otherwise it stalls. This is the default setting, and is the type of pipeline used by Vitis HLS for both loop and function pipelining. Use this when a flushable pipeline is not required. For example, when there are no performance or deadlock issue due to stalls.
flp
Flushable pipeline architecture: flushes when input data is not available then stalls waiting for new data.
frp
Free-running, flushable pipeline. Runs even when input data is not available. Use this when you need better timing due to reduced pipeline control signal fanout, or when you need improved performance to avoid deadlocks. However, this pipeline style may consume more power, as the pipeline registers are clocked even if there is no data.
-pragma_strict_mode[=true|false]
Enable error messages for misplaced or misused pragmas.
-pre_tcl <arg>
Specify a TCL script to run prior to starting the csynth_design command.
-unsafe_math_optimizations[=true|false]
Ignores the signedness of floating-point zero and enables associative floating-point operations so that compiler can perform aggressive optimizations on floating-point operations. This accepts values of TRUE or FALSE. The default value is FALSE.
Note: Using this option might change the result of any floating point calculations and result in a mismatch in C/RTL co-simulation. Please ensure your test bench is tolerant of differences and checks for a margin of difference, not exact values.

Examples

Pipeline the innermost loop with a tripcount higher than 30, or pipeline the parent loop of the innermost loop when its tripcount is less than or equal 30:

config_compile -pipeline_loops 30

Ignore the signedness of floating-point zero:

config_compile -no_signed_zeros

Ignore the signedness of floating-point zero and enable the associative floating-point operations:

config_compile -unsafe_math_optimizations