Again, what is your goal with this simulation? If you want to debug the core itself, then the only option is to create a corresponding host model (at least behavioral).
Otherwise, if you just want to test your own logic that uses this USB IP, just create a block that only has rx_data, rx_strobe, tx_data and tx_strobe. This is enough to test integration of the USB IP with your system.
Open source tools for ice40 known to suck at timing. They don't really have a way to input any timing constraints and optimize the design for that. So your only hope is to run it with different seeds and hope that one of the random placements ends up being good enough.