How to program the QSPI flash using Vitis or Vivado? Is it also possible to program it using only Tcl scripts?

Regarding QSPI programming, use the provided Tcl scripts with out any change.

Make sure to create a custom BOOT.bin from your fsbl binary, a PS binary and a PL binary using petalinux package command (refer software user guide) and copy it to JTAG folder (<path_to_deliverables>/Tools/Programming/JTAG/).

Run the below commands in xcst console to run the QSPI programming script and download the created BOOT.bin to memory.

cd <path_to_deliverables>/Tools/Programming/JTAG/
source jtag_program_qspi.tcl
dow -data ./BOOT.bin 0x10000000

Run the below command in u-boot terminal, to program the BOOT.bin to QSPI.
mtd erase BOOT.bin; mtd write BOOT.bin 0x10000000

For further product inquiries, please get in touch with our sales team at mktg@iwave-global.com

Please find the detailed product information here:
ZU49/ZU39/ZU29DR RFSoC System on Module