Specific length traces

I need to make a pulse delay unit where there are two different signals coming down two different paths, and I need to add so many pS (yes, picoseconds) to one side or the other. It doesn’t have to be lab-grade accurate, but it at least needs to be repeatable in each signal path. My thought was to have two signal paths, each with 8 DPTD switches. So, say all switches are to the left, the total signal path (assuming identical switches) would be the same for both each path. So, flip the 1pS switch and the signal path increases by .006". Flip the 10pS switch and that signal path increases by .06". This would mean that the path connecting two pins of the DPDT switch would increase by these values.

So, the actual question: Is there an easy way to draw a looped trace and know the length of the trace? Or will I need to fiddle with this ad-nauseum till I get the lengths I need? Both sides need to be identical, so I guess I can use copy and flip to accomplish that after I’m happy with one side. The longest trace is going to be right around an inch.


Well, would you be willing to use 90degree bends on your design? Set the grid to 0.006" and count the grid squares.

Pcbnew / Route / Tune Track Length [Alt + 7]
And then click on a track segment, and KiCad shows you it’s length.

And this function does much more then just report the current length. If you move the mouse around it starts adding meanders until the track has reached a set length (in this case the default of 100mm) You can change these parameters with the popup menu under the right mouse button.

As paulvdh points out, KiCad will help you measure and even tune the length of your tracks. But the fact that you are trying to delay a signal by ps suggests you are dealing with some high-speed signals and adding a bunch of pads, vias and switches into the signal is going to severely degrade the integrity of the signal. You are aware that the propagation speed of the signal will be affected by the return path as well as the dielectric constant of your PCB? Where are you going to find a switch with a combined lead length and switch length of 0.06" (60 mils or 1.5 mm) never mind 0.006" (6 mils or 0.15 mm)?

I do not know the details of your intentions, and refuse to speculate here, but 1.21Gigawatts’ post did remind me of a related KiCad feature.
If you select a pad and then edit it’s properties (So pad properties, and not footprint properties), then you can set a Pad to die length, and this is the distance from the pad to the actual silicon (or the length of the metal in switches, etc) and KiCad uses this additional length during length tuning.

1 Like

“Where are you going to find a switch with a combined lead length and switch length of 0.06” (60 mils or 1.5 mm) never mind 0.006" (6 mils or 0.15 mm)?"

Yeah, I had trouble figuring out a way to make that clear. Look at it like this: You have two possible paths through a DPTD switch. So, for switch number 1, in position 1, the default length is going to be a straight line from pin to pin. In position 2, the length of that line needs to be .006" longer than what it was for position 1. For switch 2 the difference needs to be .012", and so on.

So as you can see, I’m just looking for a difference in total trace length between the two paths of the switch. If I have two identical circuits on the board with identical switches and identical traces, then I can set the switches to delay one path or the other by some amount. I accept that this isn’t going to be exact. And hoping that it works for a single ps is probably asking a bit much. But, the idea is sound, and it will probably approximate what I want.


Okay, that makes sense, you always have just one switch in the line. But using something like a DIP switch there is 0.1" (100 mils) between the switches. And no matter which switch is closed there is still all the other pads and stubs hanging off the line. I don’t know what kind of signal you plan to send along this line but it sounds like a signal integrity nightmare.

Worst case I’ve heared about that topic was about a radar installation. They had to mill the PCB’s because the sides of etched signal tracks had too many unwanted reflections.

I think you’re still missing the point. The switches are all in series. Think of it like the switches in a step attenuator, except that instead of switching between an attenuation pad or a short, you’re switching between two shorts of different lengths.

This thread is about how to make specific length traces between two points. These traces will be a loop of some sort, because the switches they’re connecting to are identical. For example: a DPDT switch with 0.25" between two pins on one side. So, one side needs a wire length of 0.250". The other side of the 1pS switch would need to be 0.256". For the 2pS switch, one side would be 0.250". The other side would be 0.262". For the 10pS switch, one side would be 0.250". The other side would be 0.310".

While I believe I follow you now as to your intended layout of the switches, it makes no difference to the point I’m trying to make which you are either missing or choose to ignore. You also seem reluctant to provide any further details as to the signal you are trying to delay or the reason for the delay. Instead you state:

And as already explained KiCad makes this relatively easy to accomplish. So I guess this thread could be closed now.

If you are on 5.1.x Length stats plugin might make it a bit easier for you. And maybe even Pad2Pad track distance plugin. But I suspect that you’d want a combination of both of them.

1 Like

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