Use the 'generate' keyword inside HDL to make light work of replicated blocks
turn the 32 ADCs into a single 24 bit wide AXI 32-TDM stream , with will enable efficient use of any processing or filtering between the adc and the ZYNQ.
Use a AXI-S FIFO to interface to the PS, and choose interrupt levels and FIFO depth appropriately as required to satisfy designed overall system latency and RTOS response time. DMA into locked cahce lines, or OCM, or DDR whatever required.......
clock , CS and likely SDI can be common for all devices, but given the load of 32 of them, split into at least say sets of 4 or 8 per set
if you have the IO, you could run each device with its own set of wires. all timed of course and constrained as required to the pins in vivado. you'll find its sensible to group signals though, and resets. if the ADCs have resets use them. its likely you'll be able to send the same data to the ADCs so single SDO (again, group into say 4 or 8 to reduce bus load ) will be common, as will CS. SDI will be one for each of course. if the ADC has a sample input, use that of course. 1 Msps on 24 bits is only 24 MHz + a bit spi clock, which is slow.......
You must time everything - In Vivado, be sure to time every signal. If you do not, it will fight you all the way.
opposite to the old ISE days.
No global async resets !, use local retimed synchronous resets from global resets