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]" 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: References: <001a1134f920c49e910527d3a068 AT google DOT com> X-Mailer: Sylpheed 3.5.0beta1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="Multipart=_Sun__27_Dec_2015_17_31_45_+0100_Lpw+4+f7NdadDz_F" 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 Precedence: bulk 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]" 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--