delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/12/27/11:32:19

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=date:from:to:subject:message-id:in-reply-to:references:mime-version
:content-type;
bh=rY8o51/2IiXpByYjUwclA7kxOQjXKg4LKJ/zABA17Mg=;
b=Uha8PZAr/QfEUkGZ3HeMfBnOKBWvwPB+xe2XMt35oHlm66sT1+edhZepVqYaaJJ2ve
1QabMzXrgARJmmavPrJcIFUe+DlCi87oyIjUdW/uSZGeKHm4Mdpdt3S+tM76+KTC8Qet
GyFZB3Q7ZbsIsbia1KzOHscnJjC9z70+p3DRsstSSVMSb1HWDPm8cOtMSORCKxDGtrAa
w0gAS90DD22jiZtc4exd2W4UZHs38igx+Eo3d2ALeySCscmEg+z48//XVq6q3h6POl3l
HVdDRVAAHkgeDKLLH/tw8R1/QbxF/lKFSc1GdCzos9uFsnP6rjfQpGnR2cdv82zH9ly7
ChHw==
X-Received: by 10.194.119.232 with SMTP id kx8mr61550651wjb.94.1451233907806;
Sun, 27 Dec 2015 08:31:47 -0800 (PST)
Date: Sun, 27 Dec 2015 17:31:45 +0100
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
Subject: Re: [geda-user] Re: DRC clearance work in progress
Message-Id: <20151227173145.4f52bd9239ac5e14b8966e07@gmail.com>
In-Reply-To: <s6n8u4frkhi.fsf@blaulicht.dmz.brux>
References: <CAJXU7q-STU6GSxZSoes5DozwVVZunXCzWt8QVhU8iAXWwSt=dA AT mail DOT gmail DOT com>
<001a1134f920c49e910527d3a068 AT google DOT com>
<CAJXU7q-N=dNaK=3pV8t14pxDNFROqW4u4MjAc8EEWODmOYVYbA AT mail DOT gmail DOT com>
<s6n8u4frkhi DOT fsf AT blaulicht DOT dmz DOT brux>
X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu)
Mime-Version: 1.0
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

This is a multi-part message in MIME format.

--Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

> "Peter Clifton (petercjclifton AT googlemail DOT com) [via
> geda-user AT delorie DOT com]" <geda-user AT delorie DOT com> writes:
> 
> > Focus on within-layer clearances for now.
> >
> > Any more complex design rules (such as dielectric breakdown through
> > the layer stack) requires more data than we have in PCB's data-model,
> > and may actually belong in a separate calculation utility that would
> > calculate out a geometric design rule that can be applied in PCB.
> 
> I am playing with the idea to build a DRC tool that works on the gerber
> output, using libgerbv and the clipper library (C++)
> 
>  http://angusj.com/delphi/clipper.php
> 
> I have made Python bindings for importing gerbers into clipper polygon
> data structures, perform bloating/shrinking and clipping operations.
> 
> Design rules would be specified as boolean operations on suitably bloated
> layer data, and anything left in the end is a violation.
> 
> An example that I have working now:
> 
>  from pyclipper import Clipper, gerbv, OffsetPolygons
>  proj = gerbv.project()
>  proj.load("v01.front.gbr")
>  proj.load("v01.plated-drill.cnc")
>  scale=10000
>  raw     = proj[0].polygons(scale)
>  drill   = proj[1].polygons(scale)
>  clip = Clipper()
>  clip.clear() 
>  clip.addsubject(raw)
>  # clean up, and remove keyholes
>  routing = OffsetPolygons(clip.union(),1)
>  # require 12 mil annuklar rings
>  annular = OffsetPolygons(drill, 120)
>  clip.clear()
>  clip.addsubject(annular)
>  clip.addclip(routing)
>  annular = clip.difference()
> 
> Any polygon left in annular is a violation.
> 
> For net specific rules I'd need to add some input that gives for each
> net at least one coordinate (per relevant layer).  And some code to find
> the polygon at the given coordinate.  Some rules, like clearance checks,
> require iterations over the individual ploygons in a layer.  At that
> point they could be tagged with a netname by the given coordinates.  And
> then there could be overrides of bloat values for specifiv nets.
> 
> I plot the ploygons with gnuplot right now.  A gerber export may be
> usefull to visualize the violations in gerbv.  Or some gui.

Great!

I think your work will would be useful within pcb to.

Simple scale will give a little bit to large distance value in outer corner, attached picture, there need to be a circle segment but it could be fixed later at any point and to large distance is usually less of a problem than to small distance.


Nicklas Karlsson

--Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F
Content-Type: application/x-xfig;
 name="Clearance.fig"
Content-Disposition: attachment;
 filename="Clearance.fig"
Content-Transfer-Encoding: base64

I0ZJRyAzLjIgIFByb2R1Y2VkIGJ5IHhmaWcgdmVyc2lvbiAzLjIuNWMKTGFuZHNjYXBlCkNlbnRl
cgpNZXRyaWMKQTQgICAgICAKMTAwLjAwClNpbmdsZQotMgoxMjAwIDIKMiA0IDAgMSAwIDUgNTEg
LTEgMjAgMC4wMDAgMCAwIDIwIDAgMCA1CgkgNjUyNSAxMTI1IDUxNzUgMTEyNSA1MTc1IC0yMjUg
NjUyNSAtMjI1IDY1MjUgMTEyNQoyIDIgMCAxIDAgNSA1MSAtMSAyMCAwLjAwMCAwIDAgLTEgMCAw
IDUKCSAyNDc1IC0yMjUgMzgyNSAtMjI1IDM4MjUgMTEyNSAyNDc1IDExMjUgMjQ3NSAtMjI1CjIg
MiAwIDEgMCAwIDUwIC0xIDIwIDAuMDAwIDAgMCAtMSAwIDAgNQoJIDI3MDAgMCAzNjAwIDAgMzYw
MCA5MDAgMjcwMCA5MDAgMjcwMCAwCjIgMiAwIDEgMCAwIDUwIC0xIDIwIDAuMDAwIDAgMCAtMSAw
IDAgNQoJIDU0MDAgMCA2MzAwIDAgNjMwMCA5MDAgNTQwMCA5MDAgNTQwMCAwCg==

--Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F
Content-Type: image/svg+xml;
 name="Clearance.svg"
Content-Disposition: attachment;
 filename="Clearance.svg"
Content-Transfer-Encoding: base64

PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJ
QyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iCiJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9T
VkcvMS4xL0RURC9zdmcxMS5kdGQiPgo8IS0tIENyZWF0b3I6IGZpZzJkZXYgVmVyc2lvbiAzLjIg
UGF0Y2hsZXZlbCA1ZSAtLT4KPCEtLSBDcmVhdGlvbkRhdGU6IFN1biBEZWMgMjcgMTc6Mjk6MzIg
MjAxNSAtLT4KPCEtLSBNYWduaWZpY2F0aW9uOiAxLjA1MCAtLT4KPHN2Zwl4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciCgl4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5
OS94bGluayIKCXdpZHRoPSIzLjZpbiIgaGVpZ2h0PSIxLjJpbiIKCXZpZXdCb3g9IjI1ODUgLTI0
OCA0Mjc3IDE0NDIiPgo8ZyBzdHlsZT0ic3Ryb2tlLXdpZHRoOi4wMjVpbjsgZmlsbDpub25lIj4K
PCEtLSBMaW5lOiBib3ggLS0+CjxyZWN0IHg9IjU0MzMiIHk9Ii0yMzYiIHdpZHRoPSIxNDE3IiBo
ZWlnaHQ9IjE0MTciIHJ4PSIzMTQiIApzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRo
Ojg7CnN0cm9rZS1saW5lam9pbjptaXRlcjsgc3Ryb2tlLWxpbmVjYXA6YnV0dDsKZmlsbDojZmYw
MGZmOwoiLz4KPCEtLSBMaW5lOiBib3ggLS0+CjxyZWN0IHg9IjI1OTgiIHk9Ii0yMzYiIHdpZHRo
PSIxNDE3IiBoZWlnaHQ9IjE0MTciIHJ4PSIwIiAKc3R5bGU9InN0cm9rZTojMDAwMDAwO3N0cm9r
ZS13aWR0aDo4OwpzdHJva2UtbGluZWpvaW46bWl0ZXI7IHN0cm9rZS1saW5lY2FwOmJ1dHQ7CmZp
bGw6I2ZmMDBmZjsKIi8+CjwhLS0gTGluZTogYm94IC0tPgo8cmVjdCB4PSIyODM0IiB5PSIwIiB3
aWR0aD0iOTQ0IiBoZWlnaHQ9Ijk0NCIgcng9IjAiIApzdHlsZT0ic3Ryb2tlOiMwMDAwMDA7c3Ry
b2tlLXdpZHRoOjg7CnN0cm9rZS1saW5lam9pbjptaXRlcjsgc3Ryb2tlLWxpbmVjYXA6YnV0dDsK
ZmlsbDojMDAwMDAwOwoiLz4KPCEtLSBMaW5lOiBib3ggLS0+CjxyZWN0IHg9IjU2NjkiIHk9IjAi
IHdpZHRoPSI5NDQiIGhlaWdodD0iOTQ0IiByeD0iMCIgCnN0eWxlPSJzdHJva2U6IzAwMDAwMDtz
dHJva2Utd2lkdGg6ODsKc3Ryb2tlLWxpbmVqb2luOm1pdGVyOyBzdHJva2UtbGluZWNhcDpidXR0
OwpmaWxsOiMwMDAwMDA7CiIvPgo8L2c+Cjwvc3ZnPgo=

--Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F
Content-Type: application/postscript;
 name="Clearance.eps"
Content-Disposition: attachment;
 filename="Clearance.eps"
Content-Transfer-Encoding: base64

JSFQUy1BZG9iZS0zLjAgRVBTRi0zLjAKJSVUaXRsZTogQ2xlYXJhbmNlLmZpZwolJUNyZWF0b3I6
IGZpZzJkZXYgVmVyc2lvbiAzLjIgUGF0Y2hsZXZlbCA1ZQolJUNyZWF0aW9uRGF0ZTogU3VuIERl
YyAyNyAxNzozMDo0MiAyMDE1CiUlQm91bmRpbmdCb3g6IDAgMCAyNTcgODcKJU1hZ25pZmljYXRp
b246IDEuMDAwMAolJUVuZENvbW1lbnRzCiUlQmVnaW5Qcm9sb2cKLyRGMnBzRGljdCAyMDAgZGlj
dCBkZWYKJEYycHNEaWN0IGJlZ2luCiRGMnBzRGljdCAvbXRyeCBtYXRyaXggcHV0Ci9jb2wtMSB7
MCBzZXRncmF5fSBiaW5kIGRlZgovY29sMCB7MC4wMDAgMC4wMDAgMC4wMDAgc3JnYn0gYmluZCBk
ZWYKL2NvbDEgezAuMDAwIDAuMDAwIDEuMDAwIHNyZ2J9IGJpbmQgZGVmCi9jb2wyIHswLjAwMCAx
LjAwMCAwLjAwMCBzcmdifSBiaW5kIGRlZgovY29sMyB7MC4wMDAgMS4wMDAgMS4wMDAgc3JnYn0g
YmluZCBkZWYKL2NvbDQgezEuMDAwIDAuMDAwIDAuMDAwIHNyZ2J9IGJpbmQgZGVmCi9jb2w1IHsx
LjAwMCAwLjAwMCAxLjAwMCBzcmdifSBiaW5kIGRlZgovY29sNiB7MS4wMDAgMS4wMDAgMC4wMDAg
c3JnYn0gYmluZCBkZWYKL2NvbDcgezEuMDAwIDEuMDAwIDEuMDAwIHNyZ2J9IGJpbmQgZGVmCi9j
b2w4IHswLjAwMCAwLjAwMCAwLjU2MCBzcmdifSBiaW5kIGRlZgovY29sOSB7MC4wMDAgMC4wMDAg
MC42OTAgc3JnYn0gYmluZCBkZWYKL2NvbDEwIHswLjAwMCAwLjAwMCAwLjgyMCBzcmdifSBiaW5k
IGRlZgovY29sMTEgezAuNTMwIDAuODEwIDEuMDAwIHNyZ2J9IGJpbmQgZGVmCi9jb2wxMiB7MC4w
MDAgMC41NjAgMC4wMDAgc3JnYn0gYmluZCBkZWYKL2NvbDEzIHswLjAwMCAwLjY5MCAwLjAwMCBz
cmdifSBiaW5kIGRlZgovY29sMTQgezAuMDAwIDAuODIwIDAuMDAwIHNyZ2J9IGJpbmQgZGVmCi9j
b2wxNSB7MC4wMDAgMC41NjAgMC41NjAgc3JnYn0gYmluZCBkZWYKL2NvbDE2IHswLjAwMCAwLjY5
MCAwLjY5MCBzcmdifSBiaW5kIGRlZgovY29sMTcgezAuMDAwIDAuODIwIDAuODIwIHNyZ2J9IGJp
bmQgZGVmCi9jb2wxOCB7MC41NjAgMC4wMDAgMC4wMDAgc3JnYn0gYmluZCBkZWYKL2NvbDE5IHsw
LjY5MCAwLjAwMCAwLjAwMCBzcmdifSBiaW5kIGRlZgovY29sMjAgezAuODIwIDAuMDAwIDAuMDAw
IHNyZ2J9IGJpbmQgZGVmCi9jb2wyMSB7MC41NjAgMC4wMDAgMC41NjAgc3JnYn0gYmluZCBkZWYK
L2NvbDIyIHswLjY5MCAwLjAwMCAwLjY5MCBzcmdifSBiaW5kIGRlZgovY29sMjMgezAuODIwIDAu
MDAwIDAuODIwIHNyZ2J9IGJpbmQgZGVmCi9jb2wyNCB7MC41MDAgMC4xOTAgMC4wMDAgc3JnYn0g
YmluZCBkZWYKL2NvbDI1IHswLjYzMCAwLjI1MCAwLjAwMCBzcmdifSBiaW5kIGRlZgovY29sMjYg
ezAuNzUwIDAuMzgwIDAuMDAwIHNyZ2J9IGJpbmQgZGVmCi9jb2wyNyB7MS4wMDAgMC41MDAgMC41
MDAgc3JnYn0gYmluZCBkZWYKL2NvbDI4IHsxLjAwMCAwLjYzMCAwLjYzMCBzcmdifSBiaW5kIGRl
ZgovY29sMjkgezEuMDAwIDAuNzUwIDAuNzUwIHNyZ2J9IGJpbmQgZGVmCi9jb2wzMCB7MS4wMDAg
MC44ODAgMC44ODAgc3JnYn0gYmluZCBkZWYKL2NvbDMxIHsxLjAwMCAwLjg0MCAwLjAwMCBzcmdi
fSBiaW5kIGRlZgoKZW5kCgovY3Age2Nsb3NlcGF0aH0gYmluZCBkZWYKL2VmIHtlb2ZpbGx9IGJp
bmQgZGVmCi9nciB7Z3Jlc3RvcmV9IGJpbmQgZGVmCi9ncyB7Z3NhdmV9IGJpbmQgZGVmCi9zYSB7
c2F2ZX0gYmluZCBkZWYKL3JzIHtyZXN0b3JlfSBiaW5kIGRlZgovbCB7bGluZXRvfSBiaW5kIGRl
ZgovbSB7bW92ZXRvfSBiaW5kIGRlZgovcm0ge3Jtb3ZldG99IGJpbmQgZGVmCi9uIHtuZXdwYXRo
fSBiaW5kIGRlZgovcyB7c3Ryb2tlfSBiaW5kIGRlZgovc2gge3Nob3d9IGJpbmQgZGVmCi9zbGMg
e3NldGxpbmVjYXB9IGJpbmQgZGVmCi9zbGoge3NldGxpbmVqb2lufSBiaW5kIGRlZgovc2x3IHtz
ZXRsaW5ld2lkdGh9IGJpbmQgZGVmCi9zcmdiIHtzZXRyZ2Jjb2xvcn0gYmluZCBkZWYKL3JvdCB7
cm90YXRlfSBiaW5kIGRlZgovc2Mge3NjYWxlfSBiaW5kIGRlZgovc2Qge3NldGRhc2h9IGJpbmQg
ZGVmCi9mZiB7ZmluZGZvbnR9IGJpbmQgZGVmCi9zZiB7c2V0Zm9udH0gYmluZCBkZWYKL3NjZiB7
c2NhbGVmb250fSBiaW5kIGRlZgovc3cge3N0cmluZ3dpZHRofSBiaW5kIGRlZgovdHIge3RyYW5z
bGF0ZX0gYmluZCBkZWYKL3RudCB7ZHVwIGR1cCBjdXJyZW50cmdiY29sb3IKICA0IC0yIHJvbGwg
ZHVwIDEgZXhjaCBzdWIgMyAtMSByb2xsIG11bCBhZGQKICA0IC0yIHJvbGwgZHVwIDEgZXhjaCBz
dWIgMyAtMSByb2xsIG11bCBhZGQKICA0IC0yIHJvbGwgZHVwIDEgZXhjaCBzdWIgMyAtMSByb2xs
IG11bCBhZGQgc3JnYn0KICBiaW5kIGRlZgovc2hkIHtkdXAgZHVwIGN1cnJlbnRyZ2Jjb2xvciA0
IC0yIHJvbGwgbXVsIDQgLTIgcm9sbCBtdWwKICA0IC0yIHJvbGwgbXVsIHNyZ2J9IGJpbmQgZGVm
Ci8kRjJwc0JlZ2luIHskRjJwc0RpY3QgYmVnaW4gLyRGMnBzRW50ZXJlZFN0YXRlIHNhdmUgZGVm
fSBkZWYKLyRGMnBzRW5kIHskRjJwc0VudGVyZWRTdGF0ZSByZXN0b3JlIGVuZH0gZGVmCgovcGFn
ZWhlYWRlciB7CnNhdmUKbmV3cGF0aCAwIDg3IG1vdmV0byAwIDAgbGluZXRvIDI1NyAwIGxpbmV0
byAyNTcgODcgbGluZXRvIGNsb3NlcGF0aCBjbGlwIG5ld3BhdGgKLTE1NS4xIDcxLjYgdHJhbnNs
YXRlCjEgLTEgc2NhbGUKJEYycHNCZWdpbgoxMCBzZXRtaXRlcmxpbWl0CjAgc2xqIDAgc2xjCiAw
LjA2Mjk5IDAuMDYyOTkgc2MKfSBiaW5kIGRlZgovcGFnZWZvb3RlciB7CiRGMnBzRW5kCnJlc3Rv
cmUKfSBiaW5kIGRlZgolJUVuZFByb2xvZwpwYWdlaGVhZGVyCiUKJSBGaWcgb2JqZWN0cyBmb2xs
b3cKJQolIAolIGhlcmUgc3RhcnRzIGZpZ3VyZSB3aXRoIGRlcHRoIDUxCiUgUG9seWxpbmUKMCBz
bGoKMCBzbGMKNy41MDAgc2x3Cm4gNTQ3NSAtMjI1IG0gNTE3NSAtMjI1IDUxNzUgODI1IDMwMCBh
cmN0byA0IHtwb3B9IHJlcGVhdAogIDUxNzUgMTEyNSA2MjI1IDExMjUgMzAwIGFyY3RvIDQge3Bv
cH0gcmVwZWF0CiAgNjUyNSAxMTI1IDY1MjUgNzUgMzAwIGFyY3RvIDQge3BvcH0gcmVwZWF0CiAg
NjUyNSAtMjI1IDU0NzUgLTIyNSAzMDAgYXJjdG8gNCB7cG9wfSByZXBlYXQKIGNwIGdzIGNvbDUg
MS4wMCBzaGQgZWYgZ3IgZ3MgY29sMCBzIGdyIAolIFBvbHlsaW5lCm4gMjQ3NSAtMjI1IG0gMzgy
NSAtMjI1IGwgMzgyNSAxMTI1IGwgMjQ3NSAxMTI1IGwKIGNwIGdzIGNvbDUgMS4wMCBzaGQgZWYg
Z3IgZ3MgY29sMCBzIGdyIAolIFBvbHlsaW5lCm4gMjcwMCAwIG0gMzYwMCAwIGwgMzYwMCA5MDAg
bCAyNzAwIDkwMCBsCiBjcCBncyAwLjAwIHNldGdyYXkgZWYgZ3IgZ3MgY29sMCBzIGdyIAolIFBv
bHlsaW5lCm4gNTQwMCAwIG0gNjMwMCAwIGwgNjMwMCA5MDAgbCA1NDAwIDkwMCBsCiBjcCBncyAw
LjAwIHNldGdyYXkgZWYgZ3IgZ3MgY29sMCBzIGdyIAolIGhlcmUgZW5kcyBmaWd1cmU7CnBhZ2Vm
b290ZXIKc2hvd3BhZ2UKJSVUcmFpbGVyCiVFT0YK

--Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F--

- Raw text -


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