www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/12/24/17:02: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=D3oEXH9EqLpohJSGzEi3G9wZDeDPj+1dswgbklNSFHA=;
b=DPCZX3WdCxt8xBpvxplnmuAdl2jtCFKIxe0cAg/SyqOauHWNEBzFz077ZmaQZV/Ec4
OSA8xrzVa5tbiI/QCKrvssBOA/PTO0tj574n1fc2v8VYyGTZm71C5+tKHwoEaHYeodb3
7vCi0nkpqOacn8R1D5hk2q+ZV8maJs93Qw1K0rnuEKLEPGbgCfYbU5KcOJw7JwdmgUig
GnI2B4YgTy4teHueMjxv9vSJkRIqVuZQ+9/8+BIXkZOUt80Dg/b4aeAdNn0m/ceNxiJU
hjPRBak49AvHcehsi00e2afWLz7LGP7JgspUH6kbUwBMr9NCPtEtbShql1W6xBtHoxhm
AF9A==
MIME-Version: 1.0
X-Received: by 10.60.95.67 with SMTP id di3mr19912429oeb.5.1450994493660; Thu,
24 Dec 2015 14:01:33 -0800 (PST)
In-Reply-To: <CAC4O8c_263trOSckgC-v8jNF97grgp=jbXzDEYAs0s0S9__bDw@mail.gmail.com>
References: <CADL2oCWjwho6K04+pVn6=UQv-8QSZ5Pt6mjecsbXJ2hjXOVqQw AT mail DOT gmail DOT com>
<CAC4O8c_263trOSckgC-v8jNF97grgp=jbXzDEYAs0s0S9__bDw AT mail DOT gmail DOT com>
Date: Thu, 24 Dec 2015 23:01:33 +0100
Message-ID: <CADL2oCWFZFgyyqHquXA=5QqTx+CBHYSOJHUZ-Td0dyRpNsqBbg@mail.gmail.com>
Subject: Re: [geda-user] Algorithm (DRC clearance net<--> net)
From: "Nicklas Karlsson (nicklas DOT karlsson17 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

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

Clearance for outer corners: A corner is formed at an intersection of two
lines, if you move them outwards and measure distance between new and old
intersection you would know the problem. It would be possible to add a
circle segment with zero radius at the intersection and now if lines are
moved outwards radius is increased and clearance would be correct.

If looking at a net. Their would probably be one default global clearance
value and if needed more clearance values from this net to other nets with
larger values.

I did not have time to look at existing code yet, just got explanation how
it works and a suggestion it is bloated but I actually think a grown copy
is a simple good method for clearance. Lifetime of copy could be created
then objected created or created then needed. It could also cut a holes in
polygons and should be simple to visualize for debug purposes.

Nicklas Karlsson

2015-12-24 20:16 GMT+01:00 Britton Kerin (britton DOT kerin AT gmail DOT com) [via
geda-user AT delorie DOT com] <geda-user AT delorie DOT com>:

>
>
> 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
>>
>>
>>
>

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

<div dir=3D"ltr">Clearance for outer corners: A corner is formed at an inte=
rsection of two lines, if you move them outwards and measure distance betwe=
en new and old intersection you would know the problem. It would be possibl=
e to add a circle segment with zero radius at the intersection and now if l=
ines are moved outwards radius is increased and clearance would be correct.=
<div><br></div><div>If looking at a net. Their would probably be one defaul=
t global clearance value and if needed more clearance values from this net =
to other nets with larger values.</div><div><br></div><div>I did not have t=
ime to look at existing code yet, just got explanation how it works and a s=
uggestion it is bloated but I actually think a grown copy is a simple good =
method for clearance. Lifetime of copy could be created then objected creat=
ed or created then needed. It could also cut a holes in polygons and should=
 be simple to visualize for debug purposes.</div><div><br></div><div>Nickla=
s Karlsson</div></div><div class=3D"gmail_extra"><br><div class=3D"gmail_qu=
ote">2015-12-24 20:16 GMT+01:00 Britton Kerin (<a href=3D"mailto:britton.ke=
rin AT gmail DOT com">britton DOT kerin AT gmail DOT com</a>) [via <a href=3D"mailto:geda-use=
r AT delorie DOT com">geda-user AT delorie DOT com</a>] <span dir=3D"ltr">&lt;<a href=3D"=
mailto:geda-user AT delorie DOT com" target=3D"_blank">geda-user AT delorie DOT com</a>&g=
t;</span>:<br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;=
border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><br><div clas=
s=3D"gmail_extra"><br><div class=3D"gmail_quote"><span class=3D"">On Thu, D=
ec 24, 2015 at 4:51 AM, Nicklas Karlsson (<a href=3D"mailto:nicklas.karlsso=
n17 AT gmail DOT com" target=3D"_blank">nicklas DOT karlsson17 AT gmail DOT com</a>) [via <a =
href=3D"mailto:geda-user AT delorie DOT com" target=3D"_blank">geda-user AT delorie DOT c=
om</a>] <span dir=3D"ltr">&lt;<a href=3D"mailto:geda-user AT delorie DOT com" targ=
et=3D"_blank">geda-user AT delorie DOT com</a>&gt;</span> wrote:<br><blockquote cl=
ass=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;p=
adding-left:1ex"><div dir=3D"ltr">There have been some discussion about DRC=
 clearance calculation. As I understand it now clearance i calculated by gr=
owing objects on copper layer and check if netlist changed. Someone suggest=
ed calculate distance is better but to know there is no copper from other o=
bject withing clearance distance is actually good enough. There is however =
a need for distance then flooding copper within polygon areas.<div><br></di=
v><div>Algorithm clearance:<br></div><div>1. A function to check if there a=
re other copper objects within clearance distance from a net, currently imp=
lemented may be good enough.</div><div>1. Assign a net name to all copper o=
bjects/&quot;drawing primitives&quot;, probably all drawing primitives on c=
opper layer.</div><div>1. For each net.</div><div>2. For each clerance valu=
e of this net.</div><div>3. For the nets this clearance value should be use=
d.</div><div>3. Check if this net are within clearance distance of nets thi=
s clearance value should be used for.</div><div><br></div><div>The first qu=
estion is if current algorithm make drawing primitives of net which should =
be checked larger and check if netlist changed is good enough? I expect lin=
es and arcs would be no problem and I actually also expect text will also w=
ork if there is a line width although text is usually</div></div></blockquo=
te><div><br></div></span><div>I think text (on copper) is not handled at al=
l in DRC at the moment.</div><span class=3D""><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> less important but outer corners =
of square objects? Or outer corners with any angle?</div></div></blockquote=
><div><br></div></span><div>I&#39;m not sure what you mean here.</div><span=
 class=3D""><div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr=
"><div>With this algorithm net different clearance between different nets s=
hould 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</div></div></bl=
ockquote><div><br></div></span><div>This is the hardest part.=C2=A0 My unde=
rstanding is that at the moment pcb has a few basic types, and a boatload o=
f flags, only a some of which apply to each type.=C2=A0 There&#39;s a lot o=
f talk about adding attributes but I&#39;m not certain it&#39;s a great ide=
a.=C2=A0 Attributes are a form of duck-typing, and if you&#39;ve been lucky=
 enough to spend time with JavaScript you know how that can go. =C2=A0gsche=
m has all sorts of problems with the wonky, barely-known interpretations of=
 attribute sets.=C2=A0 Classes and inheritance feel harder up front but you=
 often end up with a much more maintainable system.</div><span class=3D""><=
div>=C2=A0</div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8e=
x;border-left:1px #ccc solid;padding-left:1ex"><div dir=3D"ltr"><div> imple=
mented while the distance check algorithm may or may not be improved in the=
 mean time.</div><div><br></div><div>Do anybody have any comments on the al=
gorithm?</div></div></blockquote><div><br></div></span><div>If you haven&#3=
9;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>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>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, but I think the start points happen first).=C2=
=A0</div><div><br></div><div>Britton</div><div><br></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"><span><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>
</blockquote></div><br></div>

--089e01176f275da3e20527abfb10--

- Raw text -


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