L. Radiant supports the iCE40UP chips only. The hardened 2xSPI and 2xI2C are not related to the programming interface, afaik. The programming interface is an SPI as well and I've been using the wiring (bitbanging) for writing/reading data into/from the 4MB bitstream flash (from the fpga's fabric userland).
The 5k LUTs (UP5k) allow for a simple soft controller messing with the hardened modules (you may need a few hundreds LUTs for it).
The UP5k for example has got only 15kB BRAM, the 1kB is most probably reserved for the hardened interfaces (as I assume it has got 16kB on chip in reality).
Out of my
UP5k forth mcu I can access the internal 128kB SPRAM pretty easily, thus accessing the 8bit bus of the hardened interfaces cannot be a big problem. The interrupts are also implemented.
The hardened interfaces are prepared for using an FIFO, afaik.
PS: I've opened my Radiant and tried with generating I2C and SPI. There is a GUI IP generator, you set all possible parameters, and you get ie. verilog files. The appnote says it generates a soft ip "loader" which loads the selected SPI/I2C configuration bits into the hardened registers and then releases the bus for user fabric. On the first glance it looks like the mechanism is coded in there.