How to avoid wires parallel in schematic, crossed in pcb

I’m sorry if this has been addressed elsewhere - not even sure how to describe it as I’m just a hobbyist. I’ve designed a (hopefully) nice little LED control circuit using an MCP23017 multiplexer and two ULN2308 transistor array chips for power and dimmer control. In the schematic, the symbols line up such that the wires can be easily aligned. (sorry this is my first post so I can’t put on two images - basically I mean that all the connections are parallel, and no wires have to be run underneath the chips because the pins line up in a convenient way.

Intuitively, it seems to me that there is no reason the pins between the chips couldn’t be lined up like this on the panel, as the MCP presents two banks of 8 pin output pins, and the darlington arrays look just like they do in the schematic. BUT when I get to the PCB design it ends up looking like this:

Now everything is terrible! I had to flip one of the DIPs to get the pins to align (ok), and all the wire connections form a horrible bowtie shape.

What is the best way to fix this problem - make a new symbol, a new footprint? Thank you.

To be clearer, here is my schematic, which I think looks rather nice:

A few reasons:

  • Symbols might not use the same pin ordering as the physical component. (Symbols are made to communicate the function of a part in a simple manner. Footprints are bound by the part it self.)
  • One can mirror a symbol. But mirroring a physical component is not possible.
  • To have parallel connections on the pcb side would require special care by the designers of both components you want to connect.
    • Or alternatively: special care by you the circuit designer. Example: Your circuit might work the same way even if you mirror U2. (Meaning pin 1 of U1 would then connect to pin 8 of U2, pin 2 of U1 to pin 7 of U2 and so on.) That could fix some of your problems.

A good schematic will be drawn in a manner to best convey what the intent of the design. As @Rene_Poschl already pointed out, very often the pin locations on the schematic will not be a reflection of the actual physical parts.

U1 for example, on the schematic symbol layed out so that the pin sequence is very easy to read. However, on the physical part the pins are sequenced by industry standard such that they are numbered incrementally in a counter-clockwise direction.

Careful placement of the parts, as well as tracks and vias is a big part of learning PCB layout design.

Also, unless form factor requires otherwise, you could consider putting some of the parts on the back side of the board.


Why do you have pulldowns on your i2c lines? That should be pullups. Also note that many engineers frown upon non axis aligned lines in schematic (i.e. it should contain only vertical and horizontal lines).


@mrpeverill I took this at face value and answered the main basic question you were asking. The MCP23017 is not a multiplexer, but is instead an I2C Port Expander.

Typically the I2C communication timings will be managed by a micro controller of some type. Thus, software becomes part of the total design. This can influence the decisions made during the design.

In one of my designs, it was much easier in software to have the hardware keep a direct 1 to 1 connection between outputs and inputs. In a second design, PCB space was much more important and the software had to be written to take into account the connections made between devices.

To fix your schematic, R1 and R2 should be tied to VDD instead of GND; and a connector should be added. Alternatively, instead of the connector, a microcontroller could be added to design to make a stand-alone device.

1 Like

Thank you for your help - I actually did not know I could flip things in schematic view. Changing the pin assignments in software, at this point, is fairly trivial. Flipping the schematic should thus fix this entirely at little cost. I do have a connector out of frame - the panel connects to an arduino via an unpictured header and from there to an arduino via a short cable.

You must understand that the driver ICs I1/D1…I8/D8 are interchangeable units, so they can be swapped to make the PCB layout easy.
Then you use busses rather than wires on the schematic to show the expander to driver connections neatly, without the massive crossovers.


The best work flow for you is to probably do a section at a time and do the layout as you go. You can change the pins on the schematic symbols all you want to make it nice and readable. The actual parts though are what they are. Can you reassign pins to make it work?


Yes absolutely - the leds are getting hooked up with individual wires, so the assignment of pins between the chips, apart from inputs/outputs, is not super important.

Betwean U2,U3 and connectors I would put vertical BUS. Then all lines from U2,U3 directly to bus, and the same on the right side to connectors (resistors where you prefere). Then by only moving line names on one side of bus you can addopt your connections as you like according to PCB needs. You can also use next bus betwean U1 and U2,U3. Bus is only graphical element, you can just left your lines without connection but with signal name and it is connected. But bus helps you to see where to look to find the slected wire continuation.
I typically connect all microcontroller pins to bus, and then peryferial circuits to the bus, and when designing PCB I frequently go back to schematic and move some signals betwean microcontroler pins just to untangle tracks at PCB.


As should be clear by now, you can’t just design new footprints and put the pins in different order there. Despite the functional/physical distinction between symbols and footprints or schematic and board, you always can make symbols look like physical components. In some cases it may be a wise decision. If the pin order and orientation match the physical component and there are swappable pins, you automatically get that nice correspondence between schematic lines and routed tracks.

With one design I found useful to put each subcircuit - there were many repeated sections - into a hierarchical sheet and put the hierarchical pins in the physical order/locations. It was both functionally clear and made routing much easier. And I didn’t have to change between brain modes when moving between schematic and board.


You need to ask an old fart. It’s not a KiCad problem. Dip chips have always been that way. U2 needs the square pad at the top. When dips are side by side one of the dips has to route between the pins on the other side of the chip. U3 is a problem because the pin numbers don’t match. Low pins are numbered top to bottom and high pins bottom to top. You might like to rotate U3 or cross on the schematic. As far as pin headers you can put the header on the back and and still solder the pins on the front.

The schematic is pretty. However, there are a few issues besides pretty to think about. I will try to be gentle and freely admit to making zillions of truly stupid mistakes. I’d give you a count but I’m not done yet. (:sunglasses:

This circuit isn’t going to work as shown in the schematic.

  1. You need to run serial data into the MCP using SDA & SCK.
  2. A0,A1,A2 will likely be better tied to GND so the MCP is at I2C address=0 rather than 7.
  3. If you plan to dim the LEDS using U2/3 pin 9, that may not work as raising this pin above GND will influence the point where the input logic switches from 1/0. I think.

Some things to try/note.
A. Select an IC component in the schematic editor and hit X, then Y and see what it does. It may give you ideas for the future.
B. Unless you are planning on lots of current, a single pin will likely carry the current for all the LEDS, Reduce conn pin count, this will make life easier. I always put Pin1 at the bottom and make it GND so I know where there is a GND pin to use for a scope probe.

Keep going. Learn stuff! It feels good.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.