The syn.rtl commands configure various
attributes of the compiled RTL, the type of reset used, and the encoding of the
state machines. The commands also allow you to use specific identification in the
RTL. By default, these options are apply to the top-level design and all RTL blocks
within the design.
- syn.rtl.cosim_trace_generation
-
Generates test vectors during hardware emulation in the Vitis tool flow. The option applies when the kernel synthesizes as a Vitis kernel. The process is useful C/RTL Co-simulation test bench in future design iterations.
syn.rtl.cosim_trace_generation=1
- syn.rtl.deadlock_detection
-
Enables simulation or synthesis deadlock detection in the top-level RTL of an exported IP/XO file. The options are as follows:
- none: Disables deadlock detection.
- sim: Enables deadlock detection only for simulation/emulation. This is the default setting.
- hw: Enables detection in synthesized RTL IP. Adds
ap_local_deadlockandap_local_blocksignals to the IP to enable local and global deadlock detection.
syn.rtl.deadlock_detection=hw - syn.rtl.deadlock_diagnosis
-
Enables deadlock detection diagnosis for Vitis kernels (.xo) during hardware emulation of the Application.
syn.rtl.deadlock_diagnosis=1 - syn.rtl.fsm_encoding
-
Specifies the 'fsm_encoding' RTL attribute value to guide RTL synthesis. The options are as follows:
- auto: Allow the RTL Synthesis tool to determine the best state machine encoding
- gray: Uses gray state machine encoding.
- johnson: Uses johnson state machine encoding.
- one_hot: Uses one_hot state machine encoding.
- sequential: Uses sequential state machine encoding.
- none: Disables state machine encoding. The state machine is synthesized exactly using the state code specified in the RTL (which is one_hot).
syn.rtl.fsm_encoding=gray - syn.rtl.fsm_safe_state
-
Specify the 'fsm_safe_state' RTL attribute value to guide RTL synthesis. This attribute can affect the quality of synthesis results, typically resulting in less performance with greater area. The options are as follows:
- auto_safe_state: Implies Hamming-3 encoding.
- default_state: Return the state machine to the default state.
- power_on_state: Return the state machine to the POWER_ON state.
- reset_state: Return the state machine to the RESET state.
- none: Attribute not added to RTL, the state machine will not include safe state logic.
syn.rtl.fsm_safe_state=auto_safe_state - syn.rtl.header
-
Specify a file whose contents will be inserted at the beginning of all generated RTL files. This allows you to ensure that the generated RTL files contain user specified content.
syn.rtl.header=../../myHeader.txt - syn.rtl.kernel_profile
-
Add top level event and stall ports required by kernel profiling.
syn.rtl.kernel_profile=1Important: This option relates to thev++ -c --profile.stallcommand. You must manually add this option to the HLS component to ensure the stall profiling is available for the linked application. - syn.rtl.module_auto_prefix
-
Specifies the top level function name as the prefix value for generated RTL modules. This option is ignored if
syn.rtl.module_prefixis also specified. This option is enabled by default.syn.rtl.module_auto_prefix=1 - syn.rtl.module_prefix
-
Specifies a prefix to be used for all generated RTL module names. Use this to override the defaul module prefix of the top-level function.
syn.rtl.module_prefix=newTop - syn.rtl.mult_keep_attribute
-
Enables keep attribute.
syn.rtl.mult_keep_attribute=1 - syn.rtl.register_all_io
-
Uses a register by default for all I/O signals.
syn.rtl.register_all_io=1 - syn.rtl.register_reset_num
-
Number of registers to add to reset signal.
syn.rtl.register_reset_num=2 - syn.rtl.reset
- Variables initialized in the C/C++ code are always initialized to the same
value in the RTL and therefore in the bitstream. This initialization is
performed only at power-on. It is not repeated when a reset is applied to
the design.
Apply this setting with the
-resetoption to determine how registers and memories are reset.-
none: Does not add resets to the design. -
control: Resets control registers, such as those used in state machines and those used to generate I/O protocol signals. This is the default setting. -
state: Resets control registers and registers or memories derived from static or global variables in the C/C++ code. Any static or global variable initialized in the C/C++ code resets to its initialized value. -
all: Resets all registers and memories in the design. Any static or global variable initialized in the C/C++ code is reset to its initialized value.
syn.rtl.reset=state -
- syn.rtl.reset_async
-
Causes all registers to use an asynchronous reset. If you do not specify this option, a synchronous reset is used.
syn.rtl.reset_async=1 - syn.rtl.reset_level
-
Defines the polarity of the reset signal to be either active-Low or active-High. The default setting is active-High.
syn.rtl.reset_level=lowTip: The AXI protocol requires an active-Low reset. If your design uses AXI interfaces, the Vitis tool defines this reset level with a warning if thesyn.rtl.reset_levelis active-High.