Push and shove seems to need small grid

I was told quite firmly that the router ignores the grid, and I would accept that.

But I still see differences, traces that route at 1 mil grid that I cannot route at 25 mil grid. So I tried to isolate the problem to find a simple example I could post here.

Finally I have found what I believe causes the differences: the push-and-shove router is influenced by the grid somehow. If there are traces being pushed that have nowhere to go on the large grid, the new trace won’t route. If I decrease grid spacing, the new trace will route.

Anyone else seeing this?

I have also been told the router ignores the grid but my experience is it does take in account the grid. Not only with push and shove. Also with highlight collisions.

With any project, set the grid to 5 mm, 100 mils or any other big grid and try to route a track.

It did ignore it in the past (at least the interactive drag did ignore it) but there where loads of complaints about it so it now takes the grid into account.

I think when people talk about the grid not being important they mean that it snaps to pads so no need to have the grid selected to fit with your pad positions.
Maybe a Ignore the grid mode would be nice to have. (or an easy way to switch to a finer grid)

In my case, what typically happens is I place the footprints on a coarse grid, and then switch to a fine grid to route. When I realize I have to rearrange footprints, I switch back to the coarse grid. And to route after that to the fine grid. And so on.

At least I know why this happens now. Wishlist item maybe: push-and-shove router option to use fine grid.

Why did people object? Is it the discussion in How to snapping trace to grid?

Here’s one older discussion:

As I understood it at the time (I contributed to that thread), that thread was about a different issue.

Anyways I commented there that grid affects routing in the way you now describe here. So I agree with your original post above.

I see, yes, you and I agree on that. I thought I’d ask about this specific thing again.

@Jan-Ake_Larsson This will mostly depend on how the router gets from its original location to the cursor. The cursor will snap to grid.

If you’d like to route without the grid, hold down the Alt key while routing.


So the router itself will ignore the grid, but the cursor not …

  • the router can place corners of track off grid
  • but when routing, you must route to a grid point where you want to go

Meaning: if you want to go through a narrow path without any grid point, where another track already is present and can be pushed, it is almost impossible or in fact actually impossible for the router to find its way through the narrow path. It will fail.

That explains the behavior, which to me is difficult to reconcile with statements that the router ignores the grid. Other people seem to have the same difficulty.

Anyhow, good tip using Alt. Even better, in the grid settings dialog I found “Fast switching”. That simplifies my use case. Now my wishlist item would be a checkbox saying “Use grid 2 when routing”.

Hi Jan,

For the moment, the router never attempts to move the end of the currently routed track (corners can be moved, though). So finer grid (or Alt key) = finer control. Concerning the ‘narrow path’ issue, could you post a movie showing exactly what’s not working right? We’ll be glad to fix it.



OK, one example when this occurs is for a TSSOP-20, trying to route from pins on one side inward and out from the top of the package. I set a really coarse grid in the movie. As you can see, routing to the first available grid point doesn’t work, until I move to the next available grid point. And then the router seems to “learn” to route through the narrow gap!?

I typically have a slightly finer grid than this, but also not much available space. Perhaps I never reach the second grid point?

1 Like

Could the pointer perhaps act as a “virtual” grid point? Meaning that you drag the end of the trace at the pointer, but it refuses to stick to the board other than at grid points and pads?

Edit: no, perhaps not. The kicad pointer and the mouse pointer are different things, that is clearly visible in the movie.

Edit 2: Could the router attempt to route to the gridpoint at the kicad pointer (as it does now), and if it fails try again using the mouse pointer as a fallback? And only add the trace (on klick) to the board if it succeeds to reach the kicad pointer?

This will soon disappear in the depths of time. I’ll report a bug.

It seems to be something in between.
When the cursor snaps to the grid, ehwn while drawing stuff with the interactive router it will also snap to the same locations as the cursor.
While the interactive router pushes tracks and via’s aside to make room for more, those other things do not stay on the grid (So make sure your design rules are OK).

Some time ago I read on a website with tips on PCB design to set the grid to 0.1mm for routing tracks. A smaller grid is rarely usefull, and such a (still relatively coarse) grid makes it a bit easier for the PC.

Before that, I had quite a lot of very small tracks, for example, a 0.001mm horizontal stub connected to a 0.002 diagonal piece, in between longer tracks.
Since I stopped using the very small grid and use 0.1mm as default while routing I have a lot less of these annoying very short stubs.
This may be because of the grid, but also because of improvements of the autorouter itself.

I know of 2 ways to get rid of these things.
You can grab one of the pieces and then drag them to the side untill the cursor snaps to another track, which often gets rid of them, or you can draw a new track over it, combined with the auto delete of the interactive router.

Here a screenshot to show what I mean. It’s of 2 vertical track segments connected with a diagonal stub with a length of around 0.004mm

There is:

Pcbnew / Edit / Cleanup Tracks and Via’s
It would be a nice addition if this dialog had a 5th option to search for such small stubs and merge the large segments to remove these.

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