New user having trouble with routing traces

I recently started with KiCAD (after several years as a gEDA user). Drawing the schematics: loved it!! Routing the layout? Really not loving it !!!

Here’s what I have:

And here’s what I want (well, roughly speaking — it’s not 100% exact):

Problem is: the absolutely only two ways that I can accomplish it are: (1) manually edit the .kicad_pcb file with a text editor to add the traces where I need them; or (2) draw the lines on some empty area, then select them and move them to the target location.

The router annoyingly gets in the way! I wish I could show an animation of my attempts, to show the idiosyncrasies of the router (or in any case, so that you can tell me if I’m using the router the wrong way).

In any case, I’m a bit annoyed with the following details:

  • Selecting different widths for the traces seems next to impossible. I went to “Setup --> Design rules” and created a new “class”, called TPA-pins: the pins of the TPA chip are 0.4mm thick, so I want the traces that connect from those pins to be 0.4mm thick. The thing is: I would like to now have an available trace style called “TPA-pins” that I can select at any point in time before starting a trace. It doesn’t seem to work that way — if I’m understanding correctly, a given net gets assigned a type of trace. (I find this completely absurd; so I wonder whether I am indeed understanding correctly)

  • I see that I can right-click and select a “custom” track width; I finally discovered that the menu item next to that one allows me to specify what the custom width is. But then, it resets right away; I route one trace, and when I try the next one, the “custom” value is back to the 0.25mm default. *arrrgh*

I expect this to be feasible with a fill area — but it won’t work. For example, I draw this fill zone for net PWM_C, and the zone will not fill:

I right-click on it, select “Zones → Fill” and nothing happens; I edit it, change anything and everything, nothing happens; it won’t fill. I can’t now reproduce other behaviours, but at some point, I was getting, for this same zone, the left half getting filled (as if the clearance of the PWM_C pad was cutting the connection).

Is this supposed to be the right approach for situations like the above?

Any comments to help this beginner find the way?


You probably have problems due to too tight clearance settings…

Go under Preferences > Display Options > set Clearance Outlines to ‘Always’ and activate ‘Show pad clearance’.

Then you’ll see what is happening and why the router doesn’t want you to connect there.

To adjust the clearance settings you have to go to Setup > Design Rules … for details check out the manual.

As for the zone filling, what net does it belong to?


To make it connect to PWM_C you need to select that net for it.
And again, clearance settings will have an impact here on how the actual zone fills then.


Did you assign that Fill polygon, to the Net Name shown (PWM_C) ?
Omit that step, and you will get the effect you mention.

Usually you enable ratsnest display, and simply start routing from the PAD.

If that does not occur, you might like to check Setup.DesignRules to make sure you have nothing mutually exclusive.
eg a too-large setting in clearance, can violate instantly, check some pads well clear of any others.

The zone would also need the pad connect setting “solid” instead of thermals.
And remember: zones have their own clearance and minimum width settings in their properties dialog. They do not use the project settings.

Yes, I did assign the PWM_C net to the zone — that’s what I meant when I said:

I also selected “Solid” in the dialog.

Oh, absolutely ---- that’s what I do to connect a “normal” trace from pad/pin X to pad/pin Y. Aside from some minor “quirks”, that routing is quite delightful! But I would also like to be able to do a “somewhat unrestricted” routing to do some custom routing/maneuvers. With gEDA, I remember one thing that annoyed me was that the trace would always “snap” to the middle of other traces or to pins/pads; with KiCAD, I’m being annoyed because it does the opposite — it seems to “anti-snap” to other elements :-\

Is there some way to at least partially override the router constraints to more or less freely route traces?


If your current trace has the same net as the one you want it connect to then it will snap to the trace. Otherwise it will not allow connecting as the interactive router does not allow you to make DRC violations by default. You can turn this safety measure off if you really want. (In the router settings. This only works in highlight collision mode.)

What are the zone settings (minimum width, etc.) and what does a screenshot look like with clearance visible for tracks and pads?
If the clerarances for pad #33 and pad #31 are too large, the zone for pad #32 will not make it, especially if it’s minimum width is bigger than what the clearances of the two other nets leave as space.
Also the routing tool will not be able to pick up the pad you want to connect to, as the pad is not reachable due to the clearances of the adjacent pads.
Be aware that pad clearances are tiered and have priorities.

  1. is the single pad setting (edit in footprint editor, usually ‘0’, unless you know what you’re doing)
  2. is the footprint setting (edit also there, usually ‘0’, unless you know what you’re doing)
  3. is the pcb setting (edit net class clearance, minimum usually determined by the fab you chose for making the board and adjusted for different net-classes depending on your design)

As for routing with different track widths… I set them up here:


And can then select the one I want via this:


1 Like

Ok, that part I understand. But in my initial attempt to accomplish what I showed in my initial post, I was trying to route multiple small traces to “fill” the thicker trace; the feeling was that the router was always in the way by avoiding certain points that were already connected.

For example, look at this screen capture:

I routed the first trace (highlighted in pink-ish/salmon — starts at pad 32 and then makes a 45 degree to connect to the PWM_C via at the top-right). But then, I want another one where the upper edge of the trace would end up being exactly tangent to the via’s pad. Well, the router won’t let me — this is the most I can push it; if I move a little bit more, then it snaps to the center of the via (like the initial trace that I already did).

And it’s not a matter of clearances in this case — there is enough room in there (if not to make it tangent, at least at a position higher than the trace that snapped to the center of the via).

Speaking of clearances — just to double check: if a pad or pin or via has a clearance of 1mm and I’m routing a trace that also has 1mm clearance, then those two clearances can overlap, right? That is, I can pass the trace so that its edge passes 1mm away from the edge of the pad/pin/via, correct?


Nice! This one works. Though I would have loved to see that I can create “named” track widths and named via sizes — but this certainly works!


1 Like

Eh… that is magnetic tracks (see preferences) or more commonly called ‘snapping’.
I don’t know if there is a user set-able minimum distance for when it snaps. Don’t think there is.
You could try to run without it and see how that goes?
What you want to do is pretty much covered by filled zones (in KiCAD).

There is also scripts/addons that can create teardrops, which lets-track copper end tangential in pads, but not sure how that would work/look in your case there.
Zone fills will not cause nice tangents… sorry.


1 Like

By the way, you have a clearance problem:


As I didn’t had the clearance of pad #33 I drew how a track from that pad (yellow) would interact with the clearance zone of pad #32 (red).
You see they overlap.
No go.

Ok, I thought so, but I was already finding it strange that no-one in the thread had explicitly confirmed this :slight_smile:

Incidentally, the filled zone is working now for other points in the PCB — not for the PWM_C connection; must be some weird setting that got stuck at an incorrect value (I’ll start over — this was just a “scratch” PCB to try out the features as I learn them).

BTW: love the concept!! This is something that does not exist in gEDA PCB, and I do find it awesome (frustration of not being able to get it to work at first notwithstanding :slight_smile:)

Thanks for the tip on magnetic tracks. I’ll try to find out more.

Well, I can have tracks end tangential with the copper ring of vias, but I think that requires the dumb router mode and you playing with the [/] key on your keyboard while laying down track and having a bit of space where you do this helps as well (clearance).
The smart router mode is optimizing all the time, that’s why you would need to disable it, to coerce the track with the [/] key to make a turn/kink and have a fixed end that you can rely on and move forward.

See Route > Interactive Router Settings

For the most part, I’ve managed to figure out the details that initiated this thread.

However, I continue to run into (similar) issues, so I will continue within this thread.

Look at this screen capture:

I want the connection to pin 23 (Net-(CT23-Pad2)) to come from below (you can see the highlighted start of the trace) and then turn right to merge the pin from the left (even if it makes a rather tight right-turn).

This is what I get as soon as my mouse pointer hovers inside pin 23:

Naturally, my question is: why? Why can’t it just continue a tiny bit upwards to then make a right-turn at the appropriate location?

If I try starting the trace from pin 23, I get roughly the same — I try first bringing the mouse to very near the left of the pin to try and force the trace to start by getting there. But this is what I get:

It would seem that the answer to “why” in this case may be the same (the router is taking the same “weird/unexpected” path from the left of pin 23 to pin23, that the route started below and got to that point or not)

@Joan_Sparky: I can’t seem to find the router “dumb” mode — when I do Route → Interactive Router Settings, I get three options for Mode — neither one of the three makes much of a difference. Setting optimizer level to the lowest value makes no difference either.

What’s going on? Are my expectations unreasonable?


Try a smaller grid (The interactive router will work better if it has more valid options.)
Try using the crtl key (does tell kicad that you do not want any changes in direction for the current trace.)

If all else fails: lay down the trace as suggested by kicad, use the drag mode to correct stuff that you do not like.

Or switch to highlight collision mode if you do not want kicad to optimize your traces.

Maybe also switch to outline mode for both pads and traces. Maybe there is a short trace in the pad above that prevents you from getting a straight trace there.

Thanks Rene_Poschl for the tips! The Ctrl key works well — haven’t tried the smaller grid yet.

However, the “Interactive drag” mode was the killer one: it not only allowed me to do exactly what I was after; I find it a very neat feature!

I had tried with the vias in outline mode, and I do find that it can be helpful; it didn’t occur to me that I could do the same for the other elements!

Thanks so much (and everyone else that replied before) for the tips! At this point, I’m starting to love the routing! :slight_smile:


Seems to be making 45 degree angles. You can turn this off too.

It didn’t occur to me to try disabling that feature for this particular situation. But anyway, that doesn’t seem to explain why the suggested path — the end result (after letting it do the trace from start to end the way it wants, and then using interactive drag mode) also uses only H, V, and 45 degrees (starting from the pin below — go up vertically, then a very short trace at 45 degrees to the right, then horizontal to the right)


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