KiCad EDA Software Suite

Differential pair track layout tool.

Reported by terrybarnaby on 2008-02-01
24
This bug affects 5 people
Affects Status Importance Assigned to Milestone
KiCad
Wishlist
Unassigned

Bug Description

It would be good to have a differential pair tracking tool that would allow two tracks to be tracked simultaneously with a set gap and track width.

nobody (nobody-users) wrote :

Logged In: NO

Yes, please.
Even the upcoming v5 of Eagle will not support differential pairs :-///

nobody (nobody-users) wrote :

Logged In: NO

Differential pairs routing?

Is this feature coming up?

johnpuke (johnpuke) wrote :

Hello,

are there any plans to support differential pairs?

Thanks, John Puke

Stephen Eaton (seaton) on 2010-07-05
Changed in kicad:
status: New → Triaged
Eli Gabbai (beg005) wrote :

Is there any plan to add this feature in the next coming version?

lkcl (lkcl) wrote :

i'd say this was a high-priority item. kicad is beginning to be used for projects such as this:
http://www.iuac.res.in/~elab/phoenix/SBC/

and this:
https://github.com/slapin/a13board

and this:
http://git.rhombus-tech.net/?p=eoma.git;a=tree;f=pcb/eoma26/a10s;hb=refs/heads/eoma26-a10s

and this:
http://git.rhombus-tech.net/?p=eoma.git;a=tree;f=pcb/allwinner_a10/pcmcia;

all of which use DDR3, many of which have HDMI (1gb/sec), all of which have USB2 480mbit/sec, some of which have SATA (3.0gbit/sec), some of which have LVDS (1gb/sec) and all of which require extremely careful layout of differential pairs.

differential pairs at 1.5 and 3gbit/sec are extremely hard to get right: the layout of vias is very very specific. even just getting one track right is hard enough.

we *need* differential pairs in kicad, otherwise it will be necessary to go back to using proprietary software such as ORCAD and PADS.

On Sun, Aug 25, 2013 at 02:42:22PM -0000, lkcl wrote:
> we *need* differential pairs in kicad, otherwise it will be necessary to
> go back to using proprietary software such as ORCAD and PADS.

As Dick would say contributions are welcome...

Really, there is a limit on how much code people can do in their free
time (that, and there are already too many things in the pipeline)

--
Lorenzo Marcantonio
Logos Srl

lkcl (lkcl) wrote :

On Sun, Aug 25, 2013 at 5:15 PM, Lorenzo Marcantonio
<email address hidden> wrote:
> On Sun, Aug 25, 2013 at 02:42:22PM -0000, lkcl wrote:
>> we *need* differential pairs in kicad, otherwise it will be necessary to
>> go back to using proprietary software such as ORCAD and PADS.
>
> As Dick would say contributions are welcome...

 yehh i knowww... *sigh*. in c++ it's a bit heavy-going. i'll see
what i can do in python, although a priority right now is having a
track-length measurer (i'm doing DDR3 tracks.... *by hand*. mad.
completely mad)

l.

Le 25/08/2013 23:30, lkcl a écrit :
> On Sun, Aug 25, 2013 at 5:15 PM, Lorenzo Marcantonio
> <email address hidden> wrote:
>> On Sun, Aug 25, 2013 at 02:42:22PM -0000, lkcl wrote:
>>> we *need* differential pairs in kicad, otherwise it will be necessary to
>>> go back to using proprietary software such as ORCAD and PADS.
>>
>> As Dick would say contributions are welcome...
>
> yehh i knowww... *sigh*. in c++ it's a bit heavy-going. i'll see
> what i can do in python,

What is needed is an algorithm able to route differential pairs.

> although a priority right now is having a
> track-length measurer (i'm doing DDR3 tracks.... *by hand*. mad.
> completely mad)

Is the track length displayed (since years) on the bottom of the frame
not working ?

--
Jean-Pierre CHARRAS

On Sun, Aug 25, 2013 at 09:30:34PM -0000, lkcl wrote:
> yehh i knowww... *sigh*. in c++ it's a bit heavy-going. i'll see
> what i can do in python, although a priority right now is having a
> track-length measurer (i'm doing DDR3 tracks.... *by hand*. mad.

There *is* a track measurer... I did an USB2 pair with it. Of course it
works until a branch, obviously (so leave stubs last)

--
Lorenzo Marcantonio
Logos Srl

On Mon, Aug 26, 2013 at 06:17:40AM -0000, jean-pierre charras wrote:
> What is needed is an algorithm able to route differential pairs.

90% of the work is laying down tracks exactly parallel and at the same
distance. Meandering to correct the difference could be done later with
a script or something (in fact that would be mostly like the first
microwave tool). Trimming and rounding corners to minimize reflections
it's an art in itself:P

> Is the track length displayed (since years) on the bottom of the frame
> not working ?

It works, maybe he didn't notice it.

Using a netclass with the right clearance and the 'lean to track'
feature is not too difficult to lay a d-pair by hand (interclass
clearance *would* be useful, for that).

--
Lorenzo Marcantonio
Logos Srl

lkcl (lkcl) wrote :

On Mon, Aug 26, 2013 at 7:17 AM, jean-pierre charras
<email address hidden> wrote:
> Le 25/08/2013 23:30, lkcl a écrit :
>> On Sun, Aug 25, 2013 at 5:15 PM, Lorenzo Marcantonio
>> <email address hidden> wrote:
>>> On Sun, Aug 25, 2013 at 02:42:22PM -0000, lkcl wrote:
>>>> we *need* differential pairs in kicad, otherwise it will be necessary to
>>>> go back to using proprietary software such as ORCAD and PADS.
>>>
>>> As Dick would say contributions are welcome...
>>
>> yehh i knowww... *sigh*. in c++ it's a bit heavy-going. i'll see
>> what i can do in python,
>
> What is needed is an algorithm able to route differential pairs.

 except for vias (which need to be laid down also in pairs, so you
need to violate the differential-track-separation for as short a
track-length as possible whilst also ensuring that the vias are laid
symmetrically) i think you'll find that treating a differential pair
as "a track of width (2 x single-track + separation-distance)" should
be absolutely fine as a first approximation.

 the layout systems i've used they allow flipping between the pairs:
the cursor lays one of them and the other follows like a ghost, and
you can choose which of the pair is the ghost. however i'd say it was
much more intuitive to have the pair treated as if they were a single
(wide) track, with the cursor tracking the mid-point between the two
tracks.

 joining at the end to a pad-pair is a little strange: often because
of going round corners one track will be slightly longer than another.
 the layout systems i've used will compensate for this right at the
end by joining one of the tracks directly to one of the pad pair then
"circling" the other track round the other one for a bit until the
length is compensated for and _then_ bringing it in.

 i'd say that as a first iteration the joining should be done by hand,
and even the via layout done by hand. just the differential pair
routing (as if a single track) would be immensely helpful, even if
it's only allowed to be on a single layer.

>> although a priority right now is having a
>> track-length measurer (i'm doing DDR3 tracks.... *by hand*. mad.
>> completely mad)
>
> Is the track length displayed (since years) on the bottom of the frame
> not working ?

 ah thank you! it took a while to find that, because it's
context-sensitive. now i know what i'm looking for i've spotted it.

 l.

Dick Hollenbeck (dickelbeck) wrote :

http://<email address hidden>/msg02746.html

Zoom out once get there, ie follow more of the thread if needed.
On Aug 26, 2013 5:15 AM, "lkcl" <email address hidden> wrote:

> On Mon, Aug 26, 2013 at 7:17 AM, jean-pierre charras
> <email address hidden> wrote:
> > Le 25/08/2013 23:30, lkcl a écrit :
> >> On Sun, Aug 25, 2013 at 5:15 PM, Lorenzo Marcantonio
> >> <email address hidden> wrote:
> >>> On Sun, Aug 25, 2013 at 02:42:22PM -0000, lkcl wrote:
> >>>> we *need* differential pairs in kicad, otherwise it will be necessary
> to
> >>>> go back to using proprietary software such as ORCAD and PADS.
> >>>
> >>> As Dick would say contributions are welcome...
> >>
> >> yehh i knowww... *sigh*. in c++ it's a bit heavy-going. i'll see
> >> what i can do in python,
> >
> > What is needed is an algorithm able to route differential pairs.
>
> except for vias (which need to be laid down also in pairs, so you
> need to violate the differential-track-separation for as short a
> track-length as possible whilst also ensuring that the vias are laid
> symmetrically) i think you'll find that treating a differential pair
> as "a track of width (2 x single-track + separation-distance)" should
> be absolutely fine as a first approximation.
>
> the layout systems i've used they allow flipping between the pairs:
> the cursor lays one of them and the other follows like a ghost, and
> you can choose which of the pair is the ghost. however i'd say it was
> much more intuitive to have the pair treated as if they were a single
> (wide) track, with the cursor tracking the mid-point between the two
> tracks.
>
> joining at the end to a pad-pair is a little strange: often because
> of going round corners one track will be slightly longer than another.
> the layout systems i've used will compensate for this right at the
> end by joining one of the tracks directly to one of the pad pair then
> "circling" the other track round the other one for a bit until the
> length is compensated for and _then_ bringing it in.
>
> i'd say that as a first iteration the joining should be done by hand,
> and even the via layout done by hand. just the differential pair
> routing (as if a single track) would be immensely helpful, even if
> it's only allowed to be on a single layer.
>
>
> >> although a priority right now is having a
> >> track-length measurer (i'm doing DDR3 tracks.... *by hand*. mad.
> >> completely mad)
> >
> > Is the track length displayed (since years) on the bottom of the frame
> > not working ?
>
> ah thank you! it took a while to find that, because it's
> context-sensitive. now i know what i'm looking for i've spotted it.
>
> l.
>
> --
> You received this bug notification because you are a member of KiCad Bug
> Squad, which is subscribed to KiCad.
> https://bugs.launchpad.net/bugs/593988
>
> Title:
> Differential pair track layout tool.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/kicad/+bug/593988/+subscriptions
>

lkcl (lkcl) wrote :

hi dick, were you referring to this?
https://bugs.launchpad.net/kicad/+bug/1216934
or was this cross-over, i just raised this one a couple of minutes ago.

On Mon, Aug 26, 2013 at 1:04 PM, Dick Hollenbeck
<email address hidden> wrote:
> http://www.mail-archive.com/kicad-
> <email address hidden>/msg02746.html
>
> Zoom out once get there, ie follow more of the thread if needed.

Dick Hollenbeck (dickelbeck) wrote :

The link to a useful old email message, which explains a workaround for not having
differential routing is this one:

http://<email address hidden>/msg02746.html

The pertinent text is not so easy to identify, since it is co-mingled with a discussion
about a bug or feature requst at that time in history.

So I lift out the pertinent text here, which isolates the workaround:

add a module to the board with a pad the same diameter
> as the track thckness and assign any netname you want to the pad and then
> connect your track to it. I do this with two pads and a gap for laying
> out differential pairs all the time in pcbnew.

Clever, and with different orientation of the pad pair, I suppose you can
accurately
control the spacing between the pair as you go. ?

Nice idea.

=== The following message in the thread helps clarify: =====================

http://<email address hidden>/msg02749.html

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers