Tune length with resistor in series

Hi,

I’m currently routing a PCB with an STM32 BGA and an SDRAM 143MHz BGA. I have resistors in series with the Data lines and the Address lines.
I need to tune the length of the tracks, but the KiCAD tool only takes the track on one side of the resistor or the other side. I need to account for the whole connection, from the STM32 pad to the Memory pad (P14 to N3 on the image). Is there a way to do that?
Otherwise, I would need to look at one side of the resistor and add the length to the other side to tune, but it sounds cumbersome…

Thanks

That’s the only way to do it…but, it’s simple and takes less time than spent posting the question (unless having many to do).

I’m sure you know what/how to do it so, I’m posting for curious others…

Say you have two tracks and Resistor having Total end-to-end length of 80mm and you want a final Tuned-Length = 100mm.

Thus,
Left side: L1 + Lr/2 = 54.45
Right side: L2 + Lr/2 = 45.56
Total= 100, where Lr = Length of Resistor
Now, determine the delta to add to each side - that will be the Tuning setting to set for each side…

I did Not fuss with picking exact grid points but, you get the idea…


Hi BlackCoffee,
Thank you. I have 70 tracks to sort out like this, so it will take a while then…
First I need to find the longest track, then elongate all the others to match the length.

Thanks

FYI If not aware of it, menubar| Inspect>Net_Inspector will present panel with Net lengths

(the 73mm in image below does not include the Resistor length in the 80mm)

1 Like

This kind of length tuning is on our list to implement - but I can’t make any prediction of timescales.

2 Likes

Can you access the tuning tool via python? Seems like a more useful immediate way to handle things like this.

That would require both nets to share the same name, and therefore a connection (shorting the diode) would be missing.
I thought of doing that for the time to route the whole board, and then remove the naming,.But I’m afraid it could go wrong when reverting the net names afterward.

I experimented a bit, with two workarounds until there is a real implementation.

First workaround:

  1. Do not connect the resistors in the schematic at all.
  2. Route the PCB tracks.
  3. Place the resistors on the PCB tracks so you see how much room they need.
  4. Do the length tuning.
  5. The resistor pads are highlighted because they are a DRC violation, but length tuning works.

Second workaround:

  1. Short the resistors on the schematic. (Maybe use labels to short them temporarily)
  2. Route right through the resistor on the PCB. No breaks on tracks on the resistor pads.
  3. Do the length tuning.

Both methods will need cleanup of the schematic afterwards, but I guess the time saving for the length matching is worth it.


Edit: Third workaround I thought up afterwards.

  1. Design a custom schematic symbol that has two pins “one”.
  2. Use Schematic Editor / Tools / Edit Schematic Library Links to temporarily replace the resistors.
  3. Design a custom footprint. A copy from the resistor size you want to use, but also with two pads with number “one”.
  4. Use those on the PCB.

This workaround is pretty similar to workaround 2, but you can use more automation. You don’t have to manually short all the resistors, and “unshort” them afterwards, but can use the library management tools to do this instead. It’s more work to set up, but when doing 70 length tunigs, it may be worth it. I have not tested this though.

1 Like

I’m going with workaround 2: I shorted all the resistors. Now the tuning begins!

Thanks

1 Like

I gave you a bit of image in advance, but there is no hurry at all to respond quickly from your side. I only did some quick tests, and instead of telling us what you are going to do, it’s (a little bit) better to just do it and then report back what works best, and maybe add some tips and tricks to fine tune the workaround.