I would say that this was a very enjoyable ~week of hacking: https://github.com/jwise/ftdeez
This emulates most of the real time logic of a FTDI FT2232H in gateware on a @whitequark / @1bitsquared #GlasgowInterfaceExplorer, and and then exposes the USB side of it using my own implementation of USB/IP in Python. It seems to work well enough that a real FTDI tty driver can talk to it and use it as a UART, or even that pyftdi can use it to talk to I2C peripherals.
One thing I will say about it is that it was really nice to spend a week writing code that did not have to be good, because it never was going to be good, because the very idea of it was completely cursed and indefensible. It was very freeing to get back to the roots of being able to Just Try Doing Shit, just at a week-long scale rather than an evening-long scale. (Surprisingly, this came out to only ~2400 lines of code for a USB/IP implementation, a USB implementation, a FT2232H implementation, and the gateware in Amaranth! But it still feels like a lot of code for Just Doing Shit.) I highly recommend Just Doing Shit. It is a lot of fun, especially if all you do normally is Carefully Build Things.