← Back to team overview

kicad-developers team mailing list archive

Re: Differential pair DRC Errors

 

On 13.02.2017 17:26, Jon Evans wrote:
> I verified using Novak's test case on the Launchpad bug report.  DRC
> error is generated if the distance between the tracks is exactly equal
> to the clearance. 
> If you increase the spacing by the minimum distance recognized by the
> software's precision, the DRC passes.
> So, I think it's an issue of DRC specification -- The code currently
> requires that the clearance be *larger* than the minimum in the design
> rules.
> The diff pair router is setting the spacing to the minimum (exactly)
> which causes this bug.
> 
> IMHO, the DRC code should be changed to "larger or equal to", but I am
> not sure if there is some subtle reason why it is implemented this way.
> If you tell KiCad that you can go down to 2mm clearance, you should be
> able to design something with *exactly* 2mm clearance :-)

Hi guys,

The issue is a bit more complex: it's a mix of DRC's floating point
inaccuracies as well as ill-defined (rounding-error-wise) fixed point
calculations in the 'gateway' computation part of the diff pair code.
I'll fix it when my time permits (certainly before v5.0).

Cheers,
Tom


> 
> -Jon
> 
> On Mon, Feb 13, 2017 at 11:15 AM, Andy Peters <devel@xxxxxxxxx
> <mailto:devel@xxxxxxxxx>> wrote:
> 
> 
>     > On Feb 13, 2017, at 2:06 AM, Clemens Koller <cko@xxxxxxxxx <mailto:cko@xxxxxxxxx>> wrote:
>     >
>     > Hello!
>     >
>     > If the global minimum mandatory clearance/spacing (pitch) of a design (due to manufacturing limitations) is set (& activated) it should complain when some other settings are violating that.
> 
>     I purposely set the differential gap and trace width to something
>     higher than the global minimum to see if that would have an effect,
>     and it didn’t.
> 
>     > It could be assisting if the user gets a clear warning when the differential pair dimensions violate the design limitations and then give options to
>     > a) reset the differential pair dimenstion to the global minumum, which is x.
>     > b) create an exception for the differential pairs (the DRC need to handle that).
>     > c) adjust the global design limitations accordingly.
>     >
>     > If b) or c) is selected, the Ok button should be labelled with "Ok, I really know what I do..." ;-).
> 
>     Differential routing in the GAL canvas with “shove” as the default
>     routing mode should result in never having a DRC clearance failure.
>     Let’s expand on that — all routing in that mode should never result
>     in a DRC clearance (or width) fail. I remember the first time I
>     tried differential routing and it wouldn’t let me draw any traces
>     because the default diff width/gap violated my global minimums.
> 
>     So the question is: what is the real source of the error? Is it in
>     the routing algorithm that allows the user to place differential
>     traces that violate the design rules, or is it, as Jon Evans wrote,
>     an error in the post-routing DRC code?
> 
>     -a
> 
>     > On 2017-02-13 03:15, Jon Evans wrote:
>     >> I took a quick look at the DRC code, and it looks like it is
>     doing an exclusive check on the minimum distances for clearance --
>     i.e. it is requiring the clearance be greater than the minimum, not
>     greater or equal.
>     >> I'm not familiar enough with this part of the code to want to
>     submit a patch for this now, but maybe someone who is familiar can
>     comment on whether there is a reason that it is done this way.
>     >>
>     >> -Jon
>     >>
>     >> On Sun, Feb 12, 2017 at 8:08 PM, Andy Peters <devel@xxxxxxxxx
>     <mailto:devel@xxxxxxxxx> <mailto:devel@xxxxxxxxx
>     <mailto:devel@xxxxxxxxx>>> wrote:
>     >>
>     >>
>     >>> On Feb 12, 2017, at 5:59 PM, Andy Peters <devel@xxxxxxxxx
>     <mailto:devel@xxxxxxxxx> <mailto:devel@xxxxxxxxx
>     <mailto:devel@xxxxxxxxx>>> wrote:
>     >>>
>     >>> I am using a nightly build from 26 January 2017 on a Mac.
>     >>>
>     >>> The design has a handful of differential pairs. I have set up
>     design rules for most nets in the design as 1.6 mm trace width and
>     1.6 mm clearance. I created a net class for the pairs with those
>     clearances and widths and made that the “diff pair width” and “diff
>     pair gap” too.
>     >>>
>     >>> Then I set the “Differential Pair Dimensions” in the Dimensions
>     menu to that same width and gap. Aside: why is this step necessary?
>     Why doesn’t the differential routing use the net classes set up by
>     default?
>     >>>
>     >>> I route the signals and run the DRC, and for every corner in the
>     trace pairs, I get an ErrType(x): “Two Track Ends Too Close”
>     complaint. Sometimes it’s ErrType(16), sometimes it’s ErrType(17),
>     the rest ErrType(18), but they are for all corners. See the picture.
>     This doesn’t make any sense.
>     >>
>     >>    This was reported as a bug over a year ago:
>     https://bugs.launchpad.net/kicad/+bug/1533551
>     <https://bugs.launchpad.net/kicad/+bug/1533551>
>     <https://bugs.launchpad.net/kicad/+bug/1533551
>     <https://bugs.launchpad.net/kicad/+bug/1533551>>
>     >>    _______________________________________________
>     >>    Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >>    Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>>
>     >>    Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     <https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>>
>     >>    More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     <https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>>
>     >>
>     >>
>     >>
>     >>
>     >> _______________________________________________
>     >> Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     >> Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     >> More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
>     >>
>     >
>     > _______________________________________________
>     > Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     > Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     > More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
> 
>     Andy Peters
>     5511 E Rosewood St
>     Tucson, AZ 85711
>     520-907-2262 <tel:520-907-2262>
>     devel@xxxxxxxxx <mailto:devel@xxxxxxxxx>
> 
> 
> 
> 
>     _______________________________________________
>     Mailing list: https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
>     <mailto:kicad-developers@xxxxxxxxxxxxxxxxxxx>
>     Unsubscribe : https://launchpad.net/~kicad-developers
>     <https://launchpad.net/~kicad-developers>
>     More help   : https://help.launchpad.net/ListHelp
>     <https://help.launchpad.net/ListHelp>
> 
> 
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~kicad-developers
> Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
> 



Follow ups

References