Know your facts and patterns. When I imagine something, i try to add specs to it in my head. This resistance in this circuit, this geometrical design in this circuit. Some thing, I won't know off the top of my head, so I'll go online to check references, look at other designs and then I'll add it to my mental repository of design elements. A lot of my friends think it's crazy that I can quote specs, dimensions and prices off the top of my head, but frankly, it's neccesairy. Let me walk through a rough example.
I want to create a 8x8 RGB LED matrix which will display patterns.
First off, the LEDs. Proably 5050 SMD RGB LEDs 0.05$ @1k.
They go onto the top of the board, which leaves me the bottom for controlling circuitry.
Now I have several options in my mental library on how to adress them. Adressing them individually via microcontroller pins, which would require 8x8x3 I/O pins though, which is expensive. How about multiplexing them then? Charlieplexing migh yield a saving of a couple of pins versus regular multiplexing, but it'll add in board complexity. So a regular multiplex, either using 8 NPN transistors and 3 8 channel LED driver ICs (Similar to the GLiP setup) or using a CPLD/microcontroller combo to generate the signals. I decide on the CPLD/microcontroller combo. I get out a piece of milimeterlined paper to draw up a couple of sketches for the LED routing, because it's a hell of a lot of connections, and I'd like to draw them on paper. In my head, i route 3 lines between each row for current source, and 1 down each column for current sink. I realize that they'll have to cross, and will take up some of the back side. Since I'm allready using that, I decide to make it a 4 layer pcb, adding 2 layers more of mental routing space. I could have also routed around everything, but that would increase pcb size and would be unsightly. Now I put the row traces onto layer 2, and the connections from the row traces to the LEDs onto layer 1 and connect them with vias. Then I turn my mind to creating a rough routing for the loose ends to the CPLD. I don't know which CPLD to use yet, so I just abstract it to a square in a certain location and route the traces there. This square is connected to a microcontroller. I kinda fancy the ATtiny1634, so I roughly know the pinouts, but I still abstain from routing it properly to the indefinite CPLD. Then I hook it up to a SD card and try to fit in the power traces somewhere. Layer 3 happens to come in handy. Now I do still need to figure out which CPLD will have the requisite number of gates, but I'm very close to completition of the circuit. The rest is some rudimentary calculations (resistor values) which I know will work out, so I don't have to worry much about them.
When I engineer these things in my head, it's very similar to a rendering algorithm. First, rough shapes which are refined again and again till the image is as sharp as it could be. I utilize other designs as proof of credibility, and put them in later on, making some areas of the image redundant till completition. Somewhere along the line, I do need to switch to paper for some things (My mental wall is there), but most of the work I do in my head.
When I engineer these things in my head, it's very similar to a rendering algorithm. First, rough shapes which are refined again and again till the image is as sharp as it could be. I utilize other designs as proof of credibility, and put them in later on, making some areas of the image redundant till completition. Somewhere along the line, I do need to switch to paper for some things (My mental wall is there), but most of the work I do in my head.