Both Vivado HLS and Vitis™ HLS allow global variables to be freely used in the code and are fully synthesizable. However, while Vivado HLS supported exporting global variables in the top-level function interface, Vitis™ HLS does not.
Global variables can not be used as arguments to the top-level function, or exposed as ports on the RTL interface in Vitis™ HLS. Variables needed on the interface of the top-level function must be explicitly declared in the interface.