@nockieboy, new parameters in the DDR3 controller in your gpu top.sv:
parameter bit PORT_R_CACHE_TOUT_ENA [0:15] = '{ 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
// A 0 will direct the read cache to indefinitely keep its contents valid until a new read address is
// requested outside the the current cache contents. Recommended for very slow read cycles where you may
// manually read outside the current cached address if you wish to re-read from the DDR3.
// A 1 will use the automatic timeout setting below to automatically clear the read cache address.
parameter bit [8:0] PORT_R_CACHE_TOUT [0:15] = '{256,256,256,256, 0,256,256,256,256,256,256,256,256,256,256,256},
// A timeout for the read cache to consider its contents stale.
// 0 = Always read from DDR3, or no read caching.
// 256 = Wait up to 256 CMD_CLK clock cycles since the previous read req before considering the cached read stale.
Looking at the 'PORT_R_CACHE_TOUT_ENA', you will see I have the 8bit Z80 port disabled, meaning that the read cache is held indefinitely. If you change the Z80 port to a '1', then looking at the ***_TOUT setting set to 256, it means if the Z80 preforms a read within the cache within 256 CMD_CLK cycles, the Z80 will get an immediate answer from the cache. If it takes longer than 256 CMD_CLKs since the last read on that port, then your read command will be fetched from the DDR3 even if there is a cache match. Remember, the timer counts the 100 MHz CMD clock cycles, not the Z80 8MHz clock cycles.
Also note that the 128 bit VGA system on channel 4 has the cache enabled with the timeout set to 0 to prevent it from using the read cache system as it has compatibility issues with some video modes.