Does anyone know if its possible within custom rules to sum the length of multiple tracks and then length tune/skew tune based on that length?
Basically I have a design that uses multiple differential pair groupings. Each of these groupings are to be the same length +/- a certain amount.
Issue is that some of these have components inline with the tracks, so I will need to calculate the lengths/ skews manually, taking into account the components as well.
Iām assuming Iāll have to do it manually, though if anyone has a solution or suggestions for making it less painful, that would be very helpful.
I donāt have a great solution, I normally end up using notes on the side of the PCB or an external spreadsheet. I also normally keep an eye on the info bar at the bottom while selecting traces on both sides of a passive component. The 2D length (combining all selected tracks) isnāt perfect, but it gives you a rough approximation to compare to manual spreadsheet results.
I think the best you can do is to first tune the full length, and then add the T-split. As a helper, you could make a footprint without pads that serve as temporary placeholders for whatever footprint you want to put on the T-split.
Also, if length matching (which should be delay matching, thatās being worked on) is important, then the track impedance over itās whole length is of concern.
If you want to do length tuning of individual sections, then maybe you can work with net-ties.
Yes that was what I meant. A track where something splits of somewhere in the middle. To me it does not matter much whether itās a track that splits off, or the pad is on the track.
Now imagine doing it with 10 groups of varying numbers of tracks, each track within each group has to be the same length, each group having a different length, each track may or may not have one or more inline components, and they are all differential pairs.
Also they are not nice straight tracks, and you need to first find the longest differential pair within each group to tune the rest to.
Itās not so much as the concept is difficult, its the fact its very time consuming and requires a lot of manual working out.
Edit: and the components are not guaranteed to be the same size.
Perhaps the Quickest and Simplest way is to Edit the PCBās Text File. This can be done in a Bulk way, to save steps and time.
Several ways to do this (i.e., making a combination of changes to a PCB file). Could create a Python Code (could make it a Plugin or Standalone-App or, run it from Kicadās PCB Command-Line tool). Thus, it Could/Would be repeatable for other PCBās.
Generally, the Scenario could be someting like this:
⢠Search for all āSegmentā text and confirm each belongs to a/the Desired Net (or Not belong) by using Pythonās Compare function.
⢠Compare Total Lengths
⢠Add/Subtract, as needed, to end-up with the desired Longest Total Length and set the shorter ones to new (calculated) Delta-lengths.
Iām Not going to do this but, you canā¦
You can use basic Text-Editor as an Aid to gain understanding and decide on the things you want/need to do in Codeā¦
As a crude, quick āDemoā, Video shows the PCB file, how the Nets are identified, how the Segments have Start/End-position and their Values.
It further Finds and Replaces one Segmentās āEndā value. I did NOT bother with Details, just wanted to present the Concept/Ideaā¦
Then, to Demo homemade Python-App, I change another Length and show a Pull-Down Menu of some Default things to changeā¦
The above has nothing to do with Tuning or Nets though it could⦠Also: a Track might have Start and End Pointās very close to each other but, the Tracks could be Curved, Angledā¦etc, very different. Thus, you could add/subtract from āLengthāsā and Not Start/End positionās⦠Many thingās are possible
Thanks, though this would probably be a good thing to develop for use with multiple PCBās Iāll probably have to do it after this one is laid out, as itāll take quite a while to create.