Description
RTL (syn.rtl.* / config_rtl)
Controls RTL generation, reset behavior, FSM encoding, and profiling features.
Note: cosim_trace_generation maps to
syn.rtl.cosim_trace_generation in the config file, but its Tcl equivalent is
config_export -cosim_trace_generation (not config_rtl).
Syntax
| Option | Config File | Tcl | Default | Type/Values | Description |
|---|---|---|---|---|---|
| deadlock_detection | syn.rtl.deadlock_detection=[none|sim|hw|hw_diagnosis] | config_rtl -deadlock_detection [none|sim|hw|hw_diagnosis] | sim | enum | Deadlock detection: none = disabled; sim = simulation/emulation only (default); hw = enabled in synthesized RTL IP, adds ap_local_deadlock and ap_local_block signals; hw_diagnosis = hardware detection with additional diagnosis logic in generated RTL. |
| deadlock_diagnosis | syn.rtl.deadlock_diagnosis=true | config_rtl -deadlock_diagnosis | — | bool | Enable detailed deadlock diagnosis output. |
| fsm_encoding | syn.rtl.fsm_encoding=[auto|gray|johnson|one_hot|sequential|none] | config_rtl -fsm_encoding [auto|gray|johnson|one_hot|sequential|none] | — | enum | FSM state encoding style. auto: tool chooses; none: binary. |
| fsm_safe_state | syn.rtl.fsm_safe_state=[auto_safe_state|reset_state|power_on_state|default_state|none] | config_rtl -fsm_safe_state [auto_safe_state|reset_state|power_on_state|default_state|none] | none | enum | State to recover to on illegal FSM state. auto_safe_state = Hamming-3 encoding; reset_state = return to RESET state; power_on_state = return to POWER_ON state; default_state = return to default state; none = no safe state logic (attribute not added to RTL). May reduce performance and increase area. |
| header | syn.rtl.header=<file> | config_rtl -header <file> | — | path | Header comment file prepended to all generated RTL files. |
| kernel_profile | syn.rtl.kernel_profile=true | config_rtl -kernel_profile | 0 | bool | Enable kernel profiling counters in generated RTL. |
| module_auto_prefix | syn.rtl.module_auto_prefix=true | config_rtl -module_auto_prefix | 1 | bool | Automatically prefix all RTL module names to avoid name collisions. |
| module_prefix | syn.rtl.module_prefix=<prefix> | config_rtl -module_prefix <s> | — | string | Custom prefix string for all generated RTL module names. |
| mult_keep_attribute | syn.rtl.mult_keep_attribute=true | config_rtl -mult_keep_attribute | 0 | bool | Add keep attributes to multiplier outputs to prevent synthesis optimization. |
| register_all_io | syn.rtl.register_all_io=true | config_rtl -register_all_io | 0 | bool | Register all top-level I/O ports. |
| register_reset_num | syn.rtl.register_reset_num=<N> | config_rtl -register_reset_num <N> | 0 | int | Number of pipeline stages for reset signal fanout (reduces reset timing pressure). |
| reset | syn.rtl.reset=[none|control|state|all] | config_rtl -reset [none|control|state|all] | control | enum | Which signals to reset: none, control (control logic only), state (state registers), all. |
| reset_async | syn.rtl.reset_async=true | config_rtl -reset_async | 0 | bool | Use asynchronous reset instead of synchronous reset. |
| reset_level | syn.rtl.reset_level=[high|low] | config_rtl -reset_level [high|low] | high | enum | Active level for reset signal: high (active-high, default) or low (active-low). |
Tip:
reset_level: The AXI protocol requires an active-Low reset. If your design
uses AXI interfaces, the tool will define this reset level with a warning if
config_rtl -reset_level is active-High. Set -reset_level low for AXI designs.
Usage
ini
[hls]
syn.rtl.reset=state
syn.rtl.reset_level=low
syn.rtl.fsm_encoding=one_hot
syn.rtl.module_prefix=myproj_
tcl
config_rtl -reset state -reset_level low -fsm_encoding one_hot -module_prefix myproj_
Examples
tcl
# Configure all registers to use an asynchronous active-Low reset:
config_rtl -reset all -reset_async -reset_level low
# Add a header comment from file to all output RTL files:
config_rtl -header my_message.txt