Platform forum

About Matched Lengths Between Pairs

mulfycrowh , 12-08-2021, 04:04 PM

I have DisplayPort signals including 5 differential pairs: D0...D3, CLK.
These pairs must have the same length.

I created the class Display_Diff with these 5 pairs.
I created a rule: MatchedLengths_BetweenPairs and applied it to Diff Pair Class > Display_Diff.
I set up a tolerance of 2.54 mm ("Group Matched Lengths").

The Differential Pairs Editor shows that the pairs do not match with the rule (big differences between lengths).
I am a little bit troubled not having any warning.

Thanks for help.
mulfycrowh , 12-10-2021, 10:08 AM
Any idea ?
robertferanec , 12-11-2021, 02:15 AM
What are the exact expressions? Maybe you may need to use different expressions? I have seen also your previous questions, that could be probably the same problem. Maybe this can help? https://youtu.be/Lb3sEcolkOA
mulfycrowh , 12-11-2021, 02:22 AM
Here are both rules
robertferanec , 12-11-2021, 02:33 AM
Did you try press "Test Queries"? Does it select the diff pairs? Maybe try to use expressions as in the video I attached above.
mulfycrowh , 12-11-2021, 08:10 AM
Here are both screenshots after "Test Queries".
Everything looks good.
The BetweenPairs rule applies to DP pairs only.
The InPairs rule applies to all pairs: DP and USB.

I do not understand what the issue is.

robertferanec , 12-13-2021, 08:46 AM
Maybe a bug? Did you try the same in different altium version?

This is a screenshot from my project:
mulfycrowh , 12-19-2021, 01:25 AM

Where should the rule violation pop up ? On PCB > Differential Pairs Editor ?
mulfycrowh , 12-19-2021, 01:30 AM
Here attached a screenshot of the Differential Pairs Editor.

mulfycrowh , 12-19-2021, 03:17 AM
As you can see on the screenshot below, I've tuned the length matching between pairs and based on the longest one.
How is it possible to set the amplitude of the ripples ? I didn't succeed in having the box to do that.
robertferanec , 12-20-2021, 02:38 AM
just move your mouse further .... This is my older video, but it still works similar way: https://youtu.be/bzRDfcJIlgA
robertferanec , 12-20-2021, 02:44 AM
The errors are always visible under the same name as they are setup in the rules:

mulfycrowh , 12-21-2021, 06:54 AM
I am sorry but I cannot change the amplitude of the ripples.
I selected "Interactive Diff Pair Length Tuning",
I clicked on the LMB and dragged >>> I got the ripple with a green bar

And then ?
How can I change the amplitude ?
robertferanec , 12-21-2021, 07:28 AM
in the properties panel (when you are in the length tuning mode):

mulfycrowh , 12-21-2021, 08:44 AM
As you can see, the box to make me able to modify the amplitude does not show up

mulfycrowh , 12-21-2021, 08:58 AM
I succeeded in modifying the location by typing "3" or "4" but "." or "," doesn't modify the amplitude.
mulfycrowh , 12-21-2021, 09:59 AM
Here attached the screenshot about what I did.
I first started with "Interactive Length Tuning"
I circled in green color what I got.
My first question: with this process positive and negative lanes match in length. But the gap between both doesn't follow the differential pair routing rule, meaning it doesn't follow differential impedance. Can we do better ?
In this mode the box shows up.

In second step, I used "Interactive Diff Pair Length Tuning".
I do not like what I did because there is only one ripple. It would have been better to get more ripples with smaller amplitudes.
The box didn't show up.
How can we fix this ?

mulfycrowh , 12-22-2021, 04:27 AM
Any idea ?
robertferanec , 01-03-2022, 01:21 AM
You need to scroll down, I can see it at the bottom (I am referring to the screenshot with properties panel on the left)

mulfycrowh , 01-04-2022, 01:48 AM
Hi everyone,

Attached what I did about length matching: within pairs and between pairs.
What do you think ?
mulfycrowh , 07-12-2022, 03:25 PM
Hi everyone,

I defined 3 rules.
Each rule has a different priority.
As shown on the attached screenshot, each rule applies to several differential pairs.
I chose not to use differential pair class because I already experienced some trouble when I have to reimport the schematic.

The trouble here is that it randomly runs: sometimes I succeed with the tuning, sometimes not.

Is something wrong in the query syntax ?

mulfycrowh , 07-13-2022, 09:16 AM
I tried to tune eight differential pairs.
I wrote the following query syntax: InDifferentialPair(Pair0) OR InDifferential(Pair1) OR ... InDifferential(Pair7).

I tuned 2 pairs (In and Between), I've got the following signal lengths:

Pair0_P (94.856)
Pair0_N (94.685)

Pair1_P (95.247)
Pair1_N (95.247)

I set a tolerance of 0.254 mm for both rules.
Everything is green for all pairs when I drag the boxes.

But as you can see, it's wrong between Pair0 and Pair1 because of the tolerance.

Any idea ?
mulfycrowh , 07-13-2022, 09:58 AM
Does the problem come from the Query InDifferentialPair instead using a differential pair class ?
mulfycrowh , 07-13-2022, 11:28 AM
I made the same test with differential pair class: I have the same result.
mulfycrowh , 07-13-2022, 12:48 PM
As you can see on the attached screenshot, the length tuning is not done at 100%.
If I drag one side of the box, I can't do better.
I tried full stop and comma without success.

Could you help please ?
mulfycrowh , 07-13-2022, 03:10 PM
Another example to show that something is wrong.
I tuned PEG_RX0 ... PEG_RX3.
The tolerance is not OK between PEG_RX0 and the other ones.
qdrives , 07-14-2022, 01:20 PM
As nobody else is commenting...
Could it be that your query "InDifferentialPair" is causing your issue?
What is the effect when you use a differntial pair class?
I must admit, I rarely ever use differential pairs so this is just a suggestion.

mulfycrowh , 07-14-2022, 01:41 PM
@qdrivesThank you very much for reply.
I made the test with differential pair class and it's the same issue.

I have one question: what is the difference between signal length and routed length in PCB Editor (Nets) ?
mulfycrowh , 07-15-2022, 03:29 AM
Another issue !
I defined another rule to tune length between pairs.
As I select Interactive Diff Pair Length Tuning and drag on one track of one differential pair involved in the group, the dedicated box doesn't show up, only a small white point shows up.

My motherboard is really huge.
Maybe 250 differential pairs to tune !

Very difficult to work with AD not doing what I want.
mulfycrowh , 07-15-2022, 05:40 AM
When I face an issue, I always check what I've done before getting the issue.
This morning, before going on with the tuning, I was checking the schematic again and noticed (refer to screenshot) that several differential pairs have 2 different names.
That's because I had capacitors on those differential pairs on a previous version.
So I removed the differential pair directives and the names as well near the chip.
I validated the project: no error !

From this time, it is impossible to tune a differential pair (between pairs) and apparently whatever it is.
If I rewrite the directives and the names, it is OK again with the tuning.

I don't understand but that's what I state.

mulfycrowh , 07-15-2022, 11:43 AM
Altium (21) is completely out of mind !

I tried to tune (BetweenPairs) another group of differential pairs.
Each pair has a length of about 158 mm.
As I drag on a differential pair to tune its length, the bargraphe on its right side shows 900 mm !

For sure it's impossible to have it green.

Do you already meet such problem ?
robertferanec , 07-16-2022, 02:17 AM
Maybe I would keep diff pair rule for tolerance within pairs, but I would create a standard signal length matching rule for all the signals what needs to have the same / similar length.

It's not really important they are differential pair signals, if they need to have the same/similar length you can handle them as single ended signals. That is what I would try.
mulfycrowh , 07-16-2022, 02:30 AM
@robertferanecI think you have read what I wrote.
It is really awful.
Same with AD22.
When it seems to run (bargraphes green), in fact I get matched length between pairs violations, for example 1 or 2 mm (instead 0.254 mm).

AD doesn't do what I want.
Is it a huge bug or is it on my side ?
Is it bound to the size of the project ?

Matched length InPairs seems to be OK but that's all.

It puts me in a very difficult situation.
mulfycrowh , 07-16-2022, 02:32 AM
Everything went wrong since what I wrote yesterday at 03:40AM
robertferanec , 07-16-2022, 02:38 AM
But are you still using this? "InDifferentialPair(Pair0) OR InDifferential(Pair1) OR ... InDifferential(Pair7)" I would delete that rule and replaced it by one using just simple signals.
mulfycrowh , 07-16-2022, 02:42 AM
@robertferanecSo you mean InNet(Track_N) OR InNet(Track_P) OR ... ?
robertferanec , 07-16-2022, 02:45 AM
basically yes, just to make it easier, put them all into a group
mulfycrowh , 07-16-2022, 02:49 AM
@robertferanecFor group do you mean class ?
With AD21 I noticed that when you import the schematic again you loose the classes !
With a project as complex as this one I permanently reimport the schematic.
robertferanec , 07-16-2022, 03:09 AM
specify the net class in schematic
qdrives , 07-16-2022, 08:50 AM
It is possible to create a netclass in the schematic.
Explore Altium Designer 24 technical documentation for Working with Classes on a Schematic & PCB in Altium Designer and related features.
qdrives , 07-16-2022, 03:16 PM
Perhaps this video is interesting for you too: https://www.youtube.com/watch?v=QG0Apol-oj0&t=2737s
mulfycrowh , 07-18-2022, 08:19 AM
Hi everyone,

I found the issue and solved it.
The issue was on my side, not Altium.

I am happy to share the solution, it can save a lot of time for people who meet the same issue.

To remember a little bit, I defined among others Differential Pair Routing rules at the beginning of the design.
I also defined Matched Lengths rules, InPairs and BetweenPairs.

As I share on 07-15-2022 (9:43 AM), I faced a problem with differential pairs length as I drag on them to tune.
The target length was something like 900 mm !
I found the problem while hitting the Tab key.
This allows a you to enter the configuration for differential pair tuning.
I noticed that AD was struggling to identify which rule to apply: there were 2 rules instead one !
I got the rule dedicated to the differential pair selected and another one named "HDMI0_OUT" and this is this one that triggered the issue.

While entering the different rules for Length Matching Between Pairs, I started entering this BetweenPairs rule "HDMI0_OUT" pointing to all differential pairs.
This rule applied to all pairs and AD set the targeted length to 900 mm.
Removing this rule solved the issue for all pairs except for a group including DP0_OUT_D0 ... D3 and CLK.

As I shared on the same day (1:29AM), it was impossible to get the tuning box as I dragged on each differential pair of this group.
After a long time of investigation, I finally noticed that I forgot to specify the Differential Pair Routing rule for this group.

As soon as I fixed the issue, I was finally able to tune between pairs for this group.

Today everything is running smoothly and I am able to tune all pairs with both InPairs and BetweenPairs rules.

For a project inducing at the beginning about 7000 errors, I am having about 250 errors and am really enjoying to reach the goal very soon.

That's all Folks !
qdrives , 07-18-2022, 03:42 PM
One thing I was wondering if the correct rule was being applied. With right-click the board and selecting Applicable unary rules.
I do not know if this would come up.
Anyhow, problem solved.
Use our interactive Discord forum to reply or ask new questions.
Discord invite
Discord forum link (after invitation)

Didn't find what you were looking for?