MuraxArduino now generates the ice40 bitfile from a configuration file (using SpinalHDL) and an Arduino pin mapping corresponding to the bitfile, which can be selected from the Arduino IDE.
It supports lots of peripherals, but not VGA or Led panels.
It supports multiple copies of most peripherals (including Serial and SPI), but only a small finite number.
I think I have gone as far as I can with this, although I might improve its reliability. (I think it needs some work on better initialisation).
I believe I need the new SaxonSoc which Charles Papon is back working on to do a better system.
That should support DMA which is needed for Led panels, VGA and HDMI.
It should also support SDRAM, which will be needed for Blackice Mx.
It should support a more concise and flexible way to add instances of peripherals.
So with SaxonSoc, I will attempt to generate the whole CustomSoC configuration and the whole of toplevel.v (if that is still needed), with the intention of supporting any number of each peripheral, limited only by the number of physical pins.