Tips on pcbnew workflow…?

Noob here trying to layout my first PCB. I’m really struggling to find a way to place the components. This circuit I’ve already built on a breadboard and it actually isn’t that involved but the rats net views in pcbnew turns so crazy complex that it’s really hard for me to use it as a feedback for placing components:

I’ve searched a lot for info but maybe this is still a dupe of another question, but is there any way to turn off the rats net for specific nets? In particular, this is an analog synth module with +12V, -12V and GND going more or less everywhere. If I was able to turn those nets invisible in the rats net views I could group components together based on the other more local nets.

Any tips on how to think about laying out is highly appreciated! My workflow right now is to grab a component move it around the entire screen a lot to see if there’s any connection to a “non-global” net that sticks even when moving it about, then trying to group those components that really need to be connected together. Either that, or it feels like I need to go back to the schematic and place the components based proximity there because the rats net view per default just doesn’t help me much.

I like to group with numbers. For instance, power supply parts all in the low 0 - 9 range. Then a group of 10 - 19. Like U10, U11, R10, R11, R12, C10, C11, etc…

I also try and group components in PCB as I go along instead of waiting till the end.

If you have something with lots of components then you can move to the 100 -199 range.

Hi @hedefalk,

Which strategy to use for placing components is very much a personal thing, so I’ll just describe the way I do it.

From the components you have in the screenshot, I think all your controls (pots, jacks) are not going to be on the PCB. Normally, I would start by placing my pots and jacks according to the front-panel design. Then I proceed by defining a ground plane on the bottom layer and I try not to add too many traces on it to keep it low impedance. This may or may not be easy, depending on how many signals you’re going to route.

I position the ICs roughly in the place where I think they need to go. When doing this for the first time, just give it a best-effort guess. Be prepared to redo parts of your layout if needed – I have more than 10 years experience and I never get it exactly right the first time :slight_smile: Luckily things have become much easier now that KiCAD has the push&shove router.

Then I place the passive components (e.g. R & C of opamps, decoupling capacitors) close to their respective IC. Most of the components will now have been placed. Place the remainder where is makes sense – the rats nets will be a lot less complicated now.

Up until now, I haven’t routed any signals yet.

The first things to connect are the power rails to the ICs. Ground is easy because it just connects to the bottom copper ground plane. The +12V and -12V I route on the top layer, which should be easy given that there are no other connections yet.

Now you can also begin to see problems in the placement of the passive components around the ICs. I will start moving the problematic components to better positions or better orientations so that I can route some traces under resistors/capacitors, for instance. Then I start routing the traces of all the remaining components. When I run into trouble again, I rip up part of the layout to fix things, or if nothing else is possible, I start routing traces on the bottom (ground plane) layer.

If you’re just building a few modules, you can also use wire bridges to solve routing problems. Personally, I try to avoid them because it really means more work to get a board populated.

Don’t forget to run the DRC as it might catch some issues that you can’t easily spot by eye. That saved me a couple of times!

Hope this helps,

Good luck! Will you show us your results when you’re done?

Regards,
Niels.

3 Likes

Unfortunately, no, you can’t disable the rats nest for individual nets. This was discussed in the thread Turn off GND airwires about a year ago. Some Forum members suggested workarounds that accomplished a similar effect, but with the possibility of significant errors if you didn’t back-out of the workarounds after they had served their purpose. The thread Local ratsnest - Do you use it? also has some suggestions.

From my perspective, component placement is by far the most difficult aspect of board layout. It challenges your ingenuity and creativity. In the designs I’ve done, I can get along quite well without a real auto-router, but I can imagine saving man-weeks of work if I had a true auto-placement tool.

Niels ( @trcwm ) gave some good advice! I don’t have an standard system for component placement, but I have observed a few things that seem to help the process, and a few patterns that worked in some specific situations.

Of course, if you have a specific board outline - it must fit inside a particular enclosure, with defined mounting holes, etc - that must be your starting point. Even if the outline is rather loose - e.g., “keep it under 4” X 6" if you can" - I’d start with at least a tentative placement of connectors, switches, pots, battery holders, front-panel LED’s, etc. Sometimes this cascades into defining positions for associated amplifier stages, LED drivers, battery charger circuits, etc.

In some introductory texts you find the advice to place components in roughly the same relative positions as their symbols on the schematic. That sometimes works as a starting point, especially if you have put some effort into drafting the schematic by eliminating crossover lines. It tends to ignore the problem of those pesky power nets and associated decoupling components. Oh, and the fact that package pinouts don’t follow the relative positions of connections to schematic symbols.

The first thing I usually do after importing a netlist is locate the component pairs (if any) that are electrically in series or parallel, and position them adjacent to each other. This reduces the two components to a single item, and reduces the ratsnest clutter by a little bit.

In a similar way I sometimes work out the layout for a portion of the circuit - an amplifier stage, power management section, etc - off to one side and then move it into location on the board itself. This works best when there are only one or two inputs or outputs for the subcircuit. KiCAD’s ability to do a “block move” (with components visible while moving) lets you try out the tentative layout into the space you have in mind for it.

Combining several components into a single package - dual transistors, opamps, etc - seems like a way to reduce PCB real estate until you have to make connections to all of those parts. I stay away from quad opamps, and I recall a design that used two, single opamps rather than a dual because of layout considerations. Fortunately, the pinout of dual opamps is generally - but not universally - standardized, so once you have a component placement that works for one opamp circuit there’s a good chance you can replicate it for another.

Good luck with your project, and keep us updated on your progress.

Dale

3 Likes

I group the ‘physical’ devices in the same way as they are ‘grouped’ in the schematic…
But I have 2 screens, which makes my workflow easier though, as I got to see EEschema/PCBnew at the same time.
Don’t know if this would work so well if you could only see one tool at a time.

My aim then - after ‘piling’ the parts in the layout area - is to find positions/orientations so that I get by without much routing work and end up with components in ‘strings’ that are easy to place/solder if need to.
Naturally being aware of all the needs of the devices as they are stated in their respective datasheets.

4 Likes

Thanks for all the great tips!

I had specific dimensions in mind, that’s the reason for doing this pcb, I want to fit it in a pretty small eurorack module. So I started out with defining the cuts now and just moved the ic’s into it similarly to schematic and breadboarded version. I basically got tired of thinking to much and just need to progress. I have no idea if this will work or not:

I haven’t really figured out if it’s possible to move stuff around once I’ve started doing tracks… So, is there any way to make a grouping of components that I can move about and keep the tracks? My intuition tells me it’s gonna be very troublesome to move stuff around once there’s lots of wires. Any tips there? Are there any settings for automatically deleting wire that’s not connected after a move?

One more thing, I did as suggested and put the GND as a full zone on bottom layer. That actually helped a lot in getting rid of lots of rats net connections. Is it a bad idea to put either of +12 or -12 as a zone on the top layer?

Thanks again, I’ll keep you posted :slight_smile:

My method is to group a functional block of parts together, lay it out as nicely as I can, then move it into its rough placement and join it up to surrounding functonal blocks, At least for me this means i have planned out escaping signals, Routing Power, and planning ground returns, So that I don’t get hung up on the “which trace needs to hop which” issue

I Picked up this habit from laying out switchmode regulators. where the smaller the loop area the better, same practice applies for most circuits,

For moving once a block is laid out, I generally route the block off board, then drag over it and move the selection into place.

You can run Edit - Cleanup to remove unconnected traces.

For reference the circled areas are smaller than your Eurocard size, Its 83mm x 36mm

1 Like

So for your board. You have 4 IC’s, and some supporting components that belong to each IC, my method would be to group those supporting components to each IC, make a nice layout of that IC, then drag it on the board to link up with the other IC’s

2 Likes

In the Schematic, if drawn well, it will have inputs on the left and outputs on the right for each circuit. The grouping for each of the circuit parts should be placed near each other in PcbNew.

The Pcb is a 3D item, keep that in mind.

Then draw the expected outline of the Pcb. Then move the circuits, block by block, into the board outline.

I think you are overwhelmed by the appearance of the initial “RatsNest”. If you can group each set of parts to place it near it’s circuit components things will be easier.

On your current screen shot, you have likely not left enough room for the IC and resistor circuits.

Making the IC’s vertical instead of horizontal may make better use of the space on your board.

1 Like

I see the word “FM” on your board. If this device is working with radio frequencies, I’d try to minimize the length of signal tracks. BTW, hotkey “T” alows you to grab any footprint you want - it really helps when you are trying to route a specific functional block.

I see the word “FM” on your board. If this device is working with radio frequencies, I’d try to minimize the length of signal tracks. BTW, hotkey “T” alows you to grab any footprint you want - it really helps when you are trying to route a specific functional block.

It’s an analog synth VCO (voltage controlled oscillator) so typically working within 10Hz - 20kHz. FM is for frequency modulation. I guess grounding and proper decoupling with power source and those kinds of things are still very important, but I’m super noob and just started learning.

Oh, thanks, T - that’s great. Then I’ll probably work dual screen or with a printout of the schematic and use that as a base.

A “heads-up”. For me, keeping the Pcb size down is great from a cost consideration. With all the through-hole resistors you have, I’d consider using a vertical footprint for the resistors.

It is my first post here. I hope, I will shortly design my firs PCB with KiCad by I didn’t done it yet.

I have done some tests, and I am still doing them to decide how to use KiCad. I plan to ask some questions today making new subjects.

I have also noticed the problem that you can’t hide some connections, what is very important for me. My PCBs are 2 layers with bottom 100% GND. My first step at PCB was always to change GND connection to blue, and VCC to red. Then I hide GND and place components that way to allow me make all connections (except GND) on top. Visible GND connections would certainly disturb me a lot.

I have looked into Netlist and found I can delete GND net manually. So it will be my temporary solution, and write here Jjust to tell it.

Piotr