Schematic vs PCB Layout - Page 1
Forum section: electronics / projects

author: Domagoj T
author_rank: Frequent Contributor
timestamp: April 02, 2017, 11:03:34 am
content: Full disclosure: I'm no EE.A vast majority of my previous PCB designs was sufficiently simple for me to be able to draw them from partial hand drawn schematic and by directly drawing the PCB layout, skipping the schematic, mostly using toy softwares such as Fritzing and lately ExpressPCB. My requirements so far have been very rudimentary, so I welcomed a simple interface.Playing mostly with Arduinos and standalone ATmegas and ATtinys meant that most of the IO pins were not specific, but rather flexible, since I could always just swap pin functions in software if I find it easier to route a trace to some other pin than I previously planned to.Routing traces directly, as opposed to from a schematic meant that I can see the physical location and arrangement of the pins. Having to route them from a schematic where their arrangement is not consistent with the physical location on the package always seemed to be an additional layer of complexity, especially since most of my boards were single sided, with occasional jumper on the backside, so extensive via usage was always out of the question.Now, I'm working on a much more complex project, with a lot more traces and pins, so I'm pretty sure I don't want to route on the fly and actually make the schematic first. For that purpose I downloaded KiCad and started messing about in it. I realize I can edit the schematic symbol and rearrange the pins to match the physical package, but it is my understanding that this is not an industry standard approach.If I make the schematic nice and neat, with as little crossing paths as I can, then the layout is full of jumpers. The other way is to keep in mind the footprints, but then the schematic is all messy.How do you guys balance this issue and discrepancy between schematic symbols and footprints? How do you keep both schematic and layout neat and pretty when they can't both be all lined up?

author: kony
author_rank: Regular Contributor
timestamp: April 02, 2017, 11:38:44 am
content: Domagoj *the* OpenGL guru?Forward and back annotation of signals for PCB-schematic is nothing unusal, it is good idea however to start with fixed pin assigment functionality and only then proceed to remappable functions (double checking the placement before comitting to manufacturing).For keeping the schematic tidy, best idea is to use mixed signal busses around the high fanout devices. Schematic symbol touchup is rarely needed and mostly due to things like neater placement of power filtering when there is empty space left.

author: ebclr
author_rank: Super Contributor
timestamp: April 02, 2017, 12:40:20 pm
content: Schematics are editable, you can simply edit the schematics at PCB draw time, to get a more convenient PCB, It's very common, also in today's world a lot of IC's have configurable pins, that can be changed at firmware time.You need to balance, PCB, firmware, schematics on this order to get a nice project. Another thing to consider is time analysis, but this is deeper and for real engineer.

author: Rerouter
author_rank: Super Contributor
timestamp: April 02, 2017, 12:41:20 pm
content: My personal preference is edit the schematic symbols to reflect what your working on and save the variation in a new library inside your project folder,For me a schematic is the hardest part, once he is set right, i move on to the PCB and twaek things as i come across them, e.g. your arduino might be able to use the same peripheral on a different pin, and it makes you use 4 less vias and a much tighter layout to swap it, well then do the swap, even as a bodge on the schematic, see how you go, if it all works out, you can edit the schematic symbol and recheck your DRC to make sure you didn't break anything (DRC is your best friend in large projects)In general i am willing to have some ugly jumpers on a schematic so long as its still readable, e.g. no nets run behind chip outlines,Attached is an example of a chip i made a symbol for, I've grouped parts by function, and used net names to do the linking, in this case the project was small, but for the specific signals i lead the net name with what the device is, e.g. RFID_VIMD, so when i go back to my processor i know that signal is relating to the RFID chip, and it connects to pin function VIMD

author: Domagoj T
author_rank: Frequent Contributor
timestamp: April 02, 2017, 01:35:24 pm
content: Kony, nope, that's someone else. It's not an uncommon name in this neck of the woods. I'm sure he's an awesome guy, though.Thanks for the replies, I appreciate every input and tip.I'll investigate the techniques you mention.

author: BC109C
author_rank: Newbie
timestamp: April 03, 2017, 03:58:07 pm
content: The only comment I'll add is that PCB's are not correctable.So if you change your design or decide you need more inputs or outputs,then its re-design the PCB.For me its breadboard and veroboard, easier to modify unless its someradio design.However if you're planning on mass producing your design then PCB is theway forward.Hope that helps.

author: bson
author_rank: Unknown
timestamp: April 03, 2017, 06:43:16 pm
content: There's always an element of back-and-forth. Not just pin swapping, but sometimes also package or even part swapping. (E.g. one BJT for another with only different BCE pins.) The first step is to straighten out the rat's nest by merely arranging and rotating packages. Once you've minimized signal crossings see if you can further improve it through pin or package swapping. You'll learn to see what works generally pretty well based purely on the rat's nest. Worry more about signals than power traces; the latter can be jumpered around quite a bit as long as all complex parts (with CMOS outputs and internal switching) are decoupled and have some gate resistance between inputs and outputs if you do chained logic. Don't start running traces until you're satisfied with the rat's nest and have a mental idea of how to actually route it. Start with subcircuits, like say a buffer, gain, or filter circuit, or what have you - things that are functionally connected. Rearrange them for a clean rat's nest, then rearrange these functional groupings so their interconnects fit neatly. I'd strongly recommend against the common beginner practice of lining up parts across the board, such as all resistors in a line, then trying to route them - that will make a huge mess. Only start by placing parts like edge connectors or power inputs that have mechanical restrictions (like mounting hole spacing, panel fitting, etc).

author: rdl
author_rank: Super Contributor
timestamp: April 03, 2017, 10:02:33 pm
content: I prefer to either redraw an existing symbol, or create a new one, for most devices I use so that it reflects its actual physical form and pin arrangement. I don't do extremely complex designs but usually go from hand drawn sketch to breadboard and only then to schematic and pcb. For circuits simple enough to be printed out on just one standard sheet of paper I will not use nets or implied power. Every connection will be drawn as needed. This helps me visualize the final design and layout from the beginning.

author: james_s
author_rank: Super Contributor
timestamp: April 03, 2017, 10:56:23 pm
content: It rarely makes sense for the schematic symbol to reflect the physical pin placement on the device. The schematic symbol should ideally place the pins such that in the typical application it will be easy to connect them to the components that they will connect to without turning into a rat's nest. For more complex devices the schematic pins should be organized by IO port or pin class, power and ground pins grouped together, I/O banks in separate banks of pins. You can always go back and change the schematic if it makes routing the PCB easier.Remember, the schematic is an electrical representation of the circuit and should be laid out such that it is easy to follow the circuit. The PCB is a physical representation and should be laid out such that everything fits neatly, the connectors are where you need them and the circuit functions as designed. These two goals are rarely the same.

author: Siwastaja
author_rank: Super Contributor
timestamp: April 04, 2017, 05:29:31 am
content: This is really a valid issue. I know that many experienced people fail to see it because they are so accustomed to the traditional way, and are so experienced on the professional PCB packages providing complex but "powerful" workarounds.Yes, the idea is to constantly change the schematic. No, it doesn't work like "draw the schematic first, then do the pcb". That's a beginner mistake, but easily understandable due to the PCB packages looking like it's supposed to be that way.Designing the PCB by switching back to the schematic view, then importing changes through importer tools (such as "ECO") is a burden which slows down the workflow, but people live with that, apparently it's not taking too much extra effort for people to start thinking outside the box.Modifying schematic symbols to match the actual pinout is kinda nuts; you are doing the layouttwice! It still makes sense in this broken workflow; I do it too. Surprisingly often, the schematic still looks "good enough".Most designs today are rather flexible from the schematic viewpoint (i.e., most nets can be connected to most pins), but the PCB layout is more restricting, so editing it through the schematic is clearly the "wrong" way. Physical packages affect the final schematic a lot.I have been thinking about this for years, and my current standpoint is that the schematic vs. PCB layout should be totally linked at the hard level, i.e., no export-import (except for third-party tools), but the data structures need to have both views, and the software module must integrate both views. Also, the process must be symmetrical; i.e., draw a trace in the PCB editor, a ratline in the schematic should appear in real time! Add a component in the PCB editor, a component appears in the schematic editor. A little bit of intelligence would make this very productive: place a resistor between U5 and C10 in the PCB, the resistor appears between U5 and C10 in the schematic. You pick the side (schematic vs. PCB) to work with in real time, based on the current situation. Errors are picked up really well when you see the ratlines appearing on the both sides in real time, instead of you doing most of the schematic in one pass (making trivial mistakes), then "blindly" doing the layout, trusting that all connections are where they should.But devil is in the details, and making such a PCB package is far from trivial.

author: obiwanjacobi
author_rank: Super Contributor
timestamp: April 04, 2017, 07:42:58 am
content: Yes! Totally agree. A holistic model where different views work on is a very good idea - IMO.I also see a lot of best practices when creating schematics and PCB layouts that are only there because the tool doesn't support functionality that is worked around with these practices. So much information in a schematic that is in text or interpretation that should be explicit so it can be checked and acted upon.Being able to view your circuit at different levels of abstraction or focused on different perspectives could also be very productive.But I only see new software packages regurtitating the common / old view and when something new is introduced (like KiCad assigning footprints outside of the schematic) the crowd demands it be as they are used to. We don't like change. It takes energy to learn new ways of thinking and everybody has an opinion on what would be optimal. So we stick with what we have...

author: james_s
author_rank: Super Contributor
timestamp: April 04, 2017, 07:51:21 am
content: KiCad has assigned footprints outside of the schematic forever, this isn't new, I've been using it for years and while it's handy for stuff like resistors and capacitors, it's a pain in the ass. As a workaround I've more recently been creating unique schematic symbols and PCB modules that are linked to each other, for example rather than just pick a generic diode, I can pick a 1N4148 in the schematic and it will auto associate with the appropriate PCB module. I hate having to go through the extra step of assigning them and remembering what package "Q3" is supposed to have. That has always been a thorn in my side for as long as I've been using this otherwise excellent tool.

author: obiwanjacobi
author_rank: Super Contributor
timestamp: April 04, 2017, 08:07:57 am
content: Quote from: james_s on April 04, 2017, 07:51:21 amIt is new in a sense that no other software is doing it like that. So user that are not familiar with it have to adapt.When I select a component to place on a schematic I do not (necessarily) want to think about the package it comes in. I am thinking about functionality not execution. Also when I decide to change the package later on during PCB layout it is nuts IMO to have to delete the component and have to pick a new one an reconnect it - with extra chances of making mistakes. I do not want to edit my schematic when the change I need has nothing to do with changing the functionality...

author: Rerouter
author_rank: Super Contributor
timestamp: April 04, 2017, 08:23:10 am
content: Kicad can replace mismatched footprints, you just need to select exchange footprints and read the new netlist, (It's a little bit of a dance, but it will replace it with the new footprint in the exact same loction),As for viewing different layers of abstraction, technically you can already accomplish that with hierarchical schematics, having the sub sheet acting as the function block, with the bus and wire connections between sub sheets, then as you go down the hierarchy, you get closer to the raw schematic.

author: james_s
author_rank: Super Contributor
timestamp: April 04, 2017, 08:13:03 pm
content: The issue I have is that many parts have different pinouts depending on the package, so I have to use multiple schematic symbols anyway. The method it uses is convenient for basic resistors, capacitors and occasionally diodes though, but most of the time I already know all the resistors are going to be 0603, except any that require higher power and then comes the issue of remembering later to select an appropriate package footprint.

author: Rerouter
author_rank: Super Contributor
timestamp: April 04, 2017, 08:38:49 pm
content: This is the purpose of alias's in the symbol editor, you can group all those variations

author: james_s
author_rank: Super Contributor
timestamp: April 04, 2017, 09:19:42 pm
content: Which I do, but it negates much of the advantage of separated schematic and footprint assignment.