Matched Length Traces

Bug #594089 reported by Opendous Inc. on 2009-12-28
This bug affects 7 people
Affects Status Importance Assigned to Milestone

Bug Description

Add the ability to modify the length of a trace segment when traces need to be length matched.

How I see development proceeding:

1) alter the microwave fixed length tool to support arbitrary dimensions (no size ratio restriction)
2) alter the microwave fixed length tool to output traces instead of pads
3a) move the above functionality to the track right-click menu so that any track segment can have its length altered
3b) add a secondary "trace clearance" option so that the designer can allow for trace length matching. Normal trace clearance uses a solid line so the secondary trace clearance could use a dashed line.

Opendous Inc. (opendous) wrote :

The file MLT_Test.tar.bz2 was added: An example design created with kicad-2009-02-16-final. Uses the microwave line tool to match trace lengths.

Opendous Inc. (opendous) wrote :

The file MatchedLengthTraces-Example.jpg was added: Picture of the design in MLT_Test.tar.bz2

Opendous Inc. (opendous) wrote :

The file MatchedLengthTraces-MLT-Clearance.jpg was added: A secondary "trace clearance" option would make room for trace length matching.

Opendous Inc. (opendous) wrote :

The file MatchedLengthTraces-SegmentExtensionExample.jpg was added: Any trace segment can be "extended" to match length with other traces.

Stephen Eaton (seaton) on 2010-07-05
Changed in kicad:
status: New → Triaged
Pierre Parent (pierre-parent-k) wrote :

For ram bus routing it would be very usefull to have easy access to this fonctionality.

The main problem with microwave thing is ratio restriction, and the fact it cannot output to traces...
If those where modified it would be usable.

Was any advance made? Do you think the devellopement would be hard to do for an external develloper (us)?

Pierre Parent (pierre-parent-k) wrote :
  • CODE Edit (37.7 KiB, application/x-tar)

Here is the code. Sorry did not have the time to do a patch. Obviously there are numerous things to improve.

The best would be to achive this: ^^ but of course this demandes lot of work.

Please could the team tell me if they are intersted to integrate this tool, and for me to keep working on it in order to improve usability step by step?

Im surprized CERN did not add this to their feature list.

Pierre Parent (pierre-parent-k) wrote :

Second test:

Devellopement plan:

-Automatically replace segment of track (avoid having to delete it before)
-Allow to change desired length in parallel of bounding box width with preview.
-Create an obstacle avoidance system in order to avoid hitting other traces/via/pad
-Study the problem of length calculation when invisible multiple segment are present in a track.

Opendous Inc. (opendous) wrote :

I only got as far as arbitrary dimensions for the microwave fixed length tool and gave up after weeks of being unable to insert arbitrary traces into a PCB.

Which KiCad code base are you using for development? I will gladly help you with testing.

I believe CERN imply matched-length features as part of "16. Differential pair/bus routing support" but it is low priority since it depends on their geometry library and the P&S router.

Your progress looks very usable. A feature like "obstacle avoidance system" will be difficult until P&S and improved DRC are ready.

KiCad has a feature that globally joins all multi-segment tracks so "invisible multiple segment" doesn't need to be an issue.


I took the code from the repo few weeks ago. revno 4777. I've not done "up" since, but I highly doubt something has changed on this area. I'm verry unfamilliar with bazar. I will try to do a branch if it is possible in lanchpad. So here is the current code, for the mean time, if you want to test. Simply past the folders in the kicad folder before compiling.

To my mind obstacle avoidance does not require PNS. We can calculate a more complex shaped bounding box, by exploring the surrounding, in such way that inside the bonding box we can draw anything. We can then hopefully find a neat algorithme to calculate a curve inside the bouding box, of the desired length.

To my experience it often happens that there appear artefacts, and the displayed trace length is either 0 or the length of a fraction of the trace. This happens when there are multiple segment at a place that does not get correctly merged.

By the way funny thing I got on that because I'm building a board based on imx233. By the way thanks so much your kicad library very helpfull. There is an image of your routing in your repo , and you don't seem to have length matched RAM routing? It's hard for me to see how important it is. (Because I 've done a first board and i had routed it very cheaply, because I did not know. Capacitors where way to far from the imx. It kept rebooting in the midle of u-boot, now i'm rerouting and trying to make sure it boots).


Maciej Suminski (orsonmmz) wrote :

Hi Pierre,

Your work looks quite impressive. Currently we are putting our efforts to move the current functionality to the new Tool Framework [1], so unfortunately it will not work in the new View component. It is also one of our objectives[2], the thing is - it requires some preceding work, therefore we currently focus on topics that need to be done before length matching.



Tnak's. Atcually I've not done anything complicated really.

I doubt this tool would be hard to port this to new view component. The only things that are needed, are mouse capture and draw temporary lines on screen. I will give a look to your doc.

I think it would be good to make sure at least a minimal version of length tunning is availliable in next kicad release (even if it only works ina certain view). Because this lack makes it difficult to design even fairly simple boards of good quality based on imx233 for exemple.

In the second place, if CERN devellop a better tool for length matching I would of course be delighted! ;)


Here is the branch:



Changed in kicad:
status: Triaged → In Progress
Danny Wood (danwood76) wrote :

Pierre, Thanks for your hard work. This feature has saved me a lot of time trying to match lengths on some high speed data lines with my latest PCB.

Attached is a rebased patch based on kicad main branch revision 4954, there were only a few small changes required to make it work.

You're welcome!

I will keep working on this feature when I have time. It is needed to port it to new openGL kicad interface.

I've used this feature for a board with DDR ram routing and it worked fine! :)

Jon Neal (reportingsjr) wrote :

Marking this as invalid since Tom implemented trace length matching separately.

Changed in kicad:
status: In Progress → Invalid
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers