Practically speaking, your interface ought to be separate enough that you can define the range of states the micro's inputs should see, and the range of outputs it should drive, and separate the two. There are times when I've wished for a combined simulation but it wasn't worth the hassle to set it up. Honestly for the accuracy I expect I usually prefer to just build the thing rather than simulate it.
LEDs are really boring to model anyway.
You can set up testbench code that feeds in data and stuff, and link different stuff together digitally. I don't know if there's much in the way of analogue simulators like SPICE hooked up to logic simulators though.
The next level down is to run it up on an FPGA, which is only a few orders of magnitude slower than you can clock an IC.
There is also a lot of merit in a simulation even if it can't go very deep, say, considering quantum mechanical effects inside the IC's. That may be practically impossible due to unknown data, or just give impractical performance. But there are a lot of use-cases that don't need that level of detail.
What level of detail is realistically possible? If we know that a certain level of detail is too slow to simulate, then writing a simulator for a higher level is easier and we need less data for the models.
Edit: not sure why I got drive by downvotes.
https://www.autodesk.com/products/eagle/blog/spice-simulatio...
Edit2: for KiCAD http://mithatkonar.com/wiki/doku.php/kicad/kicad_spice_quick...