delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/12/24/14:17:01

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20120113;
h=mime-version:in-reply-to:references:date:message-id:subject:from:to
:content-type;
bh=slOHyj64cLW8CfOof5kQGS9F4rPINyed/Xfv/MRRUcY=;
b=GwvQQVQpGC1uHi50wVVfjACA5Qkngu+Al1JibNMcbApjYrgcNCzE30tE0WHSO7tIqO
pPnx0NubtkQ1mvwO/MiAtRAtzGcG87zIp+GmN4f2xHz1CdQHfHdiMeWoJEPsvfVwn9fW
GsiCkHc0CDrOM8QHbQQ2o0mW+BNRFHPCmduIl8vY0Y929k2vNeYNhurIIpDBwJd+tjCf
lV8gtkkhx4Z0C21TbnoaM08AOEpHmO3z3Y0x7EcrCyvxG81mHZaC+vCK6Z6wpDe4V8SG
ZQuY1/JuTvT88kkv7eaCGiWcDJGOBS6em1zRGGDXySrPCO4Px2/f6IbUQr3A+jquhQyt
3Mzg==
MIME-Version: 1.0
X-Received: by 10.194.173.233 with SMTP id bn9mr40992978wjc.1.1450984603658;
Thu, 24 Dec 2015 11:16:43 -0800 (PST)
In-Reply-To: <CADL2oCWjwho6K04+pVn6=UQv-8QSZ5Pt6mjecsbXJ2hjXOVqQw@mail.gmail.com>
References: <CADL2oCWjwho6K04+pVn6=UQv-8QSZ5Pt6mjecsbXJ2hjXOVqQw AT mail DOT gmail DOT com>
Date: Thu, 24 Dec 2015 10:16:43 -0900
Message-ID: <CAC4O8c_263trOSckgC-v8jNF97grgp=jbXzDEYAs0s0S9__bDw@mail.gmail.com>
Subject: Re: [geda-user] Algorithm (DRC clearance net<--> net)
From: "Britton Kerin (britton DOT kerin AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
To: geda-user AT delorie DOT com
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

--089e0122f088e0310d0527a9adfd
Content-Type: text/plain; charset=UTF-8

On Thu, Dec 24, 2015 at 4:51 AM, Nicklas Karlsson (
nicklas DOT karlsson17 AT gmail DOT com) [via geda-user AT delorie DOT com] <
geda-user AT delorie DOT com> wrote:

> There have been some discussion about DRC clearance calculation. As I
> understand it now clearance i calculated by growing objects on copper layer
> and check if netlist changed. Someone suggested calculate distance is
> better but to know there is no copper from other object withing clearance
> distance is actually good enough. There is however a need for distance then
> flooding copper within polygon areas.
>
> Algorithm clearance:
> 1. A function to check if there are other copper objects within clearance
> distance from a net, currently implemented may be good enough.
> 1. Assign a net name to all copper objects/"drawing primitives", probably
> all drawing primitives on copper layer.
> 1. For each net.
> 2. For each clerance value of this net.
> 3. For the nets this clearance value should be used.
> 3. Check if this net are within clearance distance of nets this clearance
> value should be used for.
>
> The first question is if current algorithm make drawing primitives of net
> which should be checked larger and check if netlist changed is good enough?
> I expect lines and arcs would be no problem and I actually also expect text
> will also work if there is a line width although text is usually
>

I think text (on copper) is not handled at all in DRC at the moment.


> less important but outer corners of square objects? Or outer corners with
> any angle?
>

I'm not sure what you mean here.


> With this algorithm net different clearance between different nets should
> work although it must also be decided how the clearance values should be
> attached to the nets. Even though current method to calculate distance may
> not be perfect it would not stop other parts from being
>

This is the hardest part.  My understanding is that at the moment pcb has a
few basic types, and a boatload of flags, only a some of which apply to
each type.  There's a lot of talk about adding attributes but I'm not
certain it's a great idea.  Attributes are a form of duck-typing, and if
you've been lucky enough to spend time with JavaScript you know how that
can go.  gschem has all sorts of problems with the wonky, barely-known
interpretations of attribute sets.  Classes and inheritance feel harder up
front but you often end up with a much more maintainable system.


> implemented while the distance check algorithm may or may not be improved
> in the mean time.
>
> Do anybody have any comments on the algorithm?
>

If you haven't already I'd take a look through find.c to get a feeling for
how the existing DRC stuff works.  I think it would work without much change
to do other clearances.  You probably just need to start at the
high-clearance part of the net first.  Alternately, a filter could be added
to only throw
a violation if one of the involved parts had a special clearance (I'm a
little hazy on the exact order in which DRC finds new connections, but I
think the start points happen first).

Britton



>
>
> Nicklas Karlsson
>
>
>

--089e0122f088e0310d0527a9adfd
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_extra"><br><div class=3D"gmail_quo=
te">On Thu, Dec 24, 2015 at 4:51 AM, Nicklas Karlsson (<a href=3D"mailto:ni=
cklas DOT karlsson17 AT gmail DOT com">nicklas DOT karlsson17 AT gmail DOT com</a>) [via <a href=
=3D"mailto:geda-user AT delorie DOT com">geda-user AT delorie DOT com</a>] <span dir=3D"l=
tr">&lt;<a href=3D"mailto:geda-user AT delorie DOT com" target=3D"_blank">geda-use=
r AT delorie DOT com</a>&gt;</span> wrote:<br><blockquote class=3D"gmail_quote" st=
yle=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div =
dir=3D"ltr">There have been some discussion about DRC clearance calculation=
. As I understand it now clearance i calculated by growing objects on coppe=
r layer and check if netlist changed. Someone suggested calculate distance =
is better but to know there is no copper from other object withing clearanc=
e distance is actually good enough. There is however a need for distance th=
en flooding copper within polygon areas.<div><br></div><div>Algorithm clear=
ance:<br></div><div>1. A function to check if there are other copper object=
s within clearance distance from a net, currently implemented may be good e=
nough.</div><div>1. Assign a net name to all copper objects/&quot;drawing p=
rimitives&quot;, probably all drawing primitives on copper layer.</div><div=
>1. For each net.</div><div>2. For each clerance value of this net.</div><d=
iv>3. For the nets this clearance value should be used.</div><div>3. Check =
if this net are within clearance distance of nets this clearance value shou=
ld be used for.</div><div><br></div><div>The first question is if current a=
lgorithm make drawing primitives of net which should be checked larger and =
check if netlist changed is good enough? I expect lines and arcs would be n=
o problem and I actually also expect text will also work if there is a line=
 width although text is usually</div></div></blockquote><div><br></div><div=
 style=3D"">I think text (on copper) is not handled at all in DRC at the mo=
ment.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"marg=
in:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"=
><div> less important but outer corners of square objects? Or outer corners=
 with any angle?</div></div></blockquote><div><br></div><div style=3D"">I&#=
39;m not sure what you mean here.</div><div>=C2=A0</div><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex"><div dir=3D"ltr"><div>With this algorithm net different clear=
ance between different nets should work although it must also be decided ho=
w the clearance values should be attached to the nets. Even though current =
method to calculate distance may not be perfect it would not stop other par=
ts from being</div></div></blockquote><div><br></div><div style=3D"">This i=
s the hardest part.=C2=A0 My understanding is that at the moment pcb has a =
few basic types, and a boatload of flags, only a some of which apply to eac=
h type.=C2=A0 There&#39;s a lot of talk about adding attributes but I&#39;m=
 not certain it&#39;s a great idea.=C2=A0 Attributes are a form of duck-typ=
ing, and if you&#39;ve been lucky enough to spend time with JavaScript you =
know how that can go. =C2=A0gschem has all sorts of problems with the wonky=
, barely-known interpretations of attribute sets.=C2=A0 Classes and inherit=
ance feel harder up front but you often end up with a much more maintainabl=
e system.</div><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"=
margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"=
ltr"><div> implemented while the distance check algorithm may or may not be=
 improved in the mean time.</div><div><br></div><div>Do anybody have any co=
mments on the algorithm?</div></div></blockquote><div><br></div><div style=
=3D"">If you haven&#39;t already I&#39;d take a look through find.c to get =
a feeling for how the existing DRC stuff works.=C2=A0 I think it would work=
 without much change</div><div style=3D"">to do other clearances.=C2=A0 You=
 probably just need to start at the high-clearance part of the net first.=
=C2=A0 Alternately, a filter could be added to only throw</div><div style=
=3D"">a violation if one of the involved parts had a special clearance (I&#=
39;m a little hazy on the exact order in which DRC finds new connections, b=
ut I think the start points happen first).=C2=A0</div><div style=3D""><br><=
/div><div style=3D"">Britton</div><div><br></div><div>=C2=A0</div><blockquo=
te class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc so=
lid;padding-left:1ex"><div dir=3D"ltr"><span class=3D"HOEnZb"><font color=
=3D"#888888"><div><br></div><div><br></div><div>Nicklas Karlsson</div><div>=
<br></div><div><br></div></font></span></div>
</blockquote></div><br></div></div>

--089e0122f088e0310d0527a9adfd--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019