The quick fix is to use the underlying numpy array to write the data - instances the MMIO class as a .array
which provides direct access to the registers. If I’m doing this I generally take a slice of the array containing the registers I want to update frequently and then I can just directly assign it.
input_registers = mmio.array[0x100:0x200] # address 0x400 to 0x800
input_registers[:] = input_data
This will be substantially faster than calling write for each entry separately
For even better performance you will want to use a DMA engine to pull the data directly out of the DDR memory. There’s some documentation on this at on our readthedocs page.
Peter