ID: | 3892 |
From: | Alain Vigne <al...@gmail.com> |
Date: | Thu, 2 Apr 2020 15:55:37 +0200 |
Subject: | Re: [pcb-rnd] drc: implement dru files |
in-reply-to: | 3891 from ge...@igor2.repo.hu |
replies: | 3893 from ge...@igor2.repo.hu |
--0000000000007af09205a24f28ff Content-Type: text/plain; charset="UTF-8" See https://uk.beta-layout.com/pcb/technology/specifications/ for "English description". I prefer "graphical description", but OK. I copy & paste, here: *Gaps and widths* mm/mil [image: smallest Drill] Smallest drill / end diameter *A* 0,200/8** 0,3/12 Minimal Standard [image: clearance copper to copper] Minimum air gap *B* 0,125/5* 0,15/6 Minimal Standard [image: Minimum track] Minimum track width *C* 0,125/5* 0,15/6 Minimal Standard [image: Minimum Via] Smallest annular ring on vias (/2 = min. ring around the drill - drillsize 0,2 mm - 0,49 mm drillsize) *(D - E)/ 2* 0,125/5* 0,15/6 Minimal Standard [image: Minimum Componenthole] Smallest annular ring on component holes (/2 = min. ring around the drill - greater than 0,49 mm drillsize) *(F - G)/ 2* - 0,2/8 Minimal Standard [image: clearance to contour] Minimum clearance for rout contour *H* - 0,3/12 Minimal Standard [image: clearnace to npth] Minimum clearance for npth holes *Innerlayer* [image: Innerlayer clearance] *A)* Smallest copper connection 0,125 mm *B) *Minimum gap between drill and next copper information 0,3 mm *Soldermask* [image: Soldermask] Minimum mm/mil Standard mm/mil Minimum soldermask bridge A 0,07 / 2,75 0,07 / 2,75 Minimum soldermask width B 0,06 / 2,37 0,06 / 2,37 Minimum clearence to drills C 0,125 / 5* 0,15 / 6 Minimum gap on solder surfaces D 0,03 / 1,18 0,03 / 1,18 Soldermask layer thickness F 0,02-0-05 / 0,8-2 0,02-0-05 / 0,8-2 Minimum soldermask layer thickness over tracks G 0,008 / 0,3 0,008 / 0,3 *extra charge *Silkscreen* [image: Silkscreen clipping] Silkscreen will be clipped back (to a diameter of 0,1 mm) from any corresponding soldermask pad in order to prevent pads being printed on *(A).* *Recommended*: *(B)* Minimum script thickness 0,125 mm *(C) *Script height 2,00 mm *I* - 0,3/12 Minimal Standard On Thu, Apr 2, 2020 at 11:07 AM <gedau@igor2.repo.hu> wrote: > > > On Thu, 2 Apr 2020, Alain Vigne wrote: > > >I'm happy to contribute a little again ;) > >See comments inserted below > > Cool, thanks! > > [about our existing dru parsing] > > >Then, once parsed, what happens ? > > At the moment a very few selected values that happen to implement features > in DRU land that have a similar feature in the old drc are copied into the > drc config nodes. The rest of the values are ignored. > > If we implement this with the new DRC, a set of DRC rules would be > generated by the io_eagle plugin instead. I don't expect 100% coverage, > but we could probably write a rule for majority of the values, covering > the most common and most important use cases. > > > > > So questions are: > > > > 1. most relevant: where/why do you need this in practice, on > > production > > boards? Are you fabbing boards at that fab or another fab that > > provide > > DRU files? > > > >Yes, I am fabbing my PCBs with this fab. > >I could envision also this fab : https://www.eurocircuits.com > >with this files : > https://www.eurocircuits.com/drc-settings-and-guide-lines-for-cad-packages/ > >Same idea. > > Good, if there's production use, it's worth going for it! > > > > > 2. are you willing to break down the DRU format into individual > > rules? > > (DRU itself has numeric fields, so "what exactly needs to be > > checked for a > > given field" is the translation to rule) > > > >Well, as a _user_, ideally, I don't give a damn about internal > translations. > >I expect pcb-rnd to read the rules, understand, and apply all the rules > when > >I hit "DRC" button. Then, if I have no DRC error, I consider the design > good > > As I wrote in the original call: I'd do the coding/scripting, all I need > is the rules (written in plain English). > > So please take your drc file and/or spec, and try to write a list of > what things need to be checked using which values in the DRC file. Focus > on the "what", not on the "how". Especially don't worry about layer > stacks and things like that. > > <snip> > > > 3. are you willing to test each rule implementation? > > > >TLDR: yes > >long story: Depending on DRU file and user strategy, this might be not > true > >with this very file. But a new DRU file can be created included really ALL > >the required rules to pass. Then, other DRC jobs could be launched with > >other requirements, on per request basis. > > I am only interested in the rules you are going to use/test. If your DRU > file implements rules you don't understand or don't want to use/test, we > should just skip those. > > Rationale: I want to stay focused and implement things that actually get > used, not fancy things that "look useful and may be used by someone some > day". > > <snip> > > >The idea could also be a "translation" app: take the DRU file as an input > >and output a tEDAX, or DRC? pcb-rnd file ? Don't really know. > > No need to complicate it with inserting a long chain of extra formats and > external converters. We already parse DRU, what's needed is really only > what I wrote above, and that can't be saved with the longer path either. > > (We do have a very simple but rather generic tEDAx drc format, we already > use some of it, the few things the old drc could handle, and I will > obviously implement the whole thing using drc_query. But that's an > independent effort from DRU or other formats.) > > Regards, > > Igor2 -- Alain V. --0000000000007af09205a24f28ff Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr"><div>See <a href=3D"https://uk.beta-layout.com/pcb/technol= ogy/specifications/" target=3D"_blank">https://uk.beta-layout.com/pcb/techn= ology/specifications/<br></a></div><div>for "English description"= . I prefer "graphical description", but OK.=C2=A0 I copy & pa= ste, here:</div><div><br></div><div> <div><b>Gaps and widths</b></div><div style=3D"display:block"><table style= =3D"background-color:rgb(255,255,255);width:481px;height:977px" border=3D"0= "> <tbody> <tr> <td style=3D"text-align:left"><br></td> <td style=3D"width:30px"><br></td> <td style=3D"background-color:rgb(233,233,233);text-align:center"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">mm= /mil</span></p> </td> <td style=3D"background-color:rgb(233,233,233);text-align:center"><br></td> </tr> <tr> <td style=3D"background-color:rgb(233,233,233)" colspan=3D"4" valign=3D"top= "><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><img alt=3D"smallest Drill" src=3D"https://uk.beta-layout.com/images/spe= c/abstand1.jpg" width=3D"295" height=3D"72"></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Sm= allest drill / end diameter</span></p> </td> <td style=3D"width:30px;text-align:center"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >A</span></b></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,= 200/8</span><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-= serif">**</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,3/12<= /span>=C2=A0=C2=A0 <br></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr> <td colspan=3D"4" style=3D"text-align:left;background-color:rgb(233,233,233= )"><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><i= mg alt=3D"clearance copper to copper" src=3D"https://uk.beta-layout.com/ima= ges/spec/abstand2.jpg" width=3D"295" height=3D"72"></span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimum air gap<br></span></p> </td> <td style=3D"width:30px;text-align:center"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >B</span></b></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,= 125/5*</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,15/6<= /span> <br></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr> <td colspan=3D"4" style=3D"text-align:left;background-color:rgb(233,233,233= )"><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><i= mg alt=3D"Minimum track" src=3D"https://uk.beta-layout.com/images/spec/abst= and3.jpg" width=3D"295" height=3D"72"></span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimum track width<br></span></p> </td> <td style=3D"width:30px;text-align:center"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >C</span></b></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,= 125/5*</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,15/6<= /span> <br></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr style=3D"height:1px"> <td style=3D"background-color:rgb(233,233,233)" colspan=3D"4"><br></td> </tr> <tr> <td> <p><img alt=3D"Minimum Via" src=3D"https://uk.beta-layout.com/images/spec/a= bstand4.jpg" width=3D"295" height=3D"72"></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Sm= allest annular ring on vias (/2 =3D min. ring around the drill - drillsize = 0,2 mm - 0,49 mm drillsize)</span></p> </td> <td> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">= =C2=A0<b></b>=C2=A0<br></span></p> </td> <td style=3D"text-align:left"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >(D - E)/ 2</span></b></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,= 125/5*</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,15/6<= /span> </span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">= =C2=A0</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal<br></span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(233,233,233)" colspan=3D"4"><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><img alt=3D"Minimum Componenthole" src=3D"https://uk.beta-layout.com/ima= ges/spec/abstand5.jpg" width=3D"295" height=3D"72"></p> <span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Small= est annular ring on component holes (/2 =3D min. ring around the drill - </= span><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">= greater than=C2=A0 0,49 mm drillsize</span><span style=3D"font-size:10pt;fo= nt-family:arial,helvetica,sans-serif">)</span></td> <td style=3D"width:30px;text-align:center"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">= =C2=A0=C2=A0<br></span></p> </td> <td style=3D"text-align:left"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >(F - G)/ 2</span></b></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">-<= /span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,2/8</= span></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">= =C2=A0</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(233,233,233)" colspan=3D"4" valign=3D"top= "><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><img alt=3D"clearance to contour" src=3D"https://uk.beta-layout.com/imag= es/spec/abstand6.jpg" width=3D"295" height=3D"72"></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimum clearance for rout contour<br></span></p> </td> <td style=3D"width:30px;text-align:center"><b><span style=3D"font-size:10pt= ;font-family:arial,helvetica,sans-serif">H</span></b></td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">-<= /span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,3/12<= /span></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal<br></span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard<br></span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(233,233,233)" colspan=3D"4" valign=3D"top= "><br></td> </tr> <tr> <td style=3D"text-align:left"> <p><img alt=3D"clearnace to npth" src=3D"https://uk.beta-layout.com/images/= spec/abstand7.jpg" width=3D"295" height=3D"72"></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimum clearance for npth holes </span></p><p style=3D"text-align:left"><span style=3D"font-size:10pt;font-= family:arial,helvetica,sans-serif"><b>Innerlayer</b></span></p> <table style=3D"width:477px;height:74px" border=3D"0" align=3D"left"> <tbody> <tr> <td colspan=3D"2" valign=3D"top" align=3D"left"><img alt=3D"Innerlayer clea= rance" src=3D"https://uk.beta-layout.com/images/spec/Innenlagefreistellung.= jpg" width=3D"320" height=3D"214"></td> </tr> <tr> <td colspan=3D"2" valign=3D"top" align=3D"left"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt;lin= e-height:18px;text-align:left"><b>A)</b> Smallest copper connection<br></sp= an></p> </td> </tr> <tr> <td colspan=3D"2" valign=3D"top"><span style=3D"font-family:arial,helvetica= ,sans-serif;font-size:10pt;line-height:18px;text-align:left">0,125 mm</span= ></td> </tr> <tr> <td colspan=3D"2" valign=3D"top" align=3D"left"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt;lin= e-height:18px;text-align:left"><b>B) </b>Minimum gap between drill and next= copper information</span><span style=3D"font-family:arial,helvetica,sans-s= erif;font-size:10pt;line-height:18px;text-align:left">=C2=A0</span></p> </td> </tr> <tr> <td colspan=3D"2" valign=3D"top"><span style=3D"font-family:arial,helvetica= ,sans-serif;font-size:10pt;line-height:18px;text-align:left">0,3 mm<br><br> </span><div class=3D"gmail-name"><b>Soldermask</b></div><div class=3D"gmail= -tabcontent_text" style=3D"display:block"><p><img src=3D"https://uk.beta-la= yout.com/images/spec/LS_Maske.JPG" alt=3D"Soldermask" width=3D"248" height= =3D"209"></p> <table style=3D"width:490px;height:283px" border=3D"0"> <tbody> <tr> <td style=3D"background-color:rgb(255,255,255)">=C2=A0</td> <td style=3D"background-color:rgb(255,255,255)">=C2=A0</td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"text-decoration:underline;font-family:arial,helvetica,san= s-serif;font-size:10pt">Minimum mm/mil</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"text-decoration:underline;font-family:arial,helvetica,san= s-serif;font-size:10pt">Standard=C2=A0 mm/mil</span></p> </td> </tr> <tr> <td> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Mi= nimum soldermask bridge</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">A = <br></span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 07 / 2,75</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 07 / 2,75</span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(238,238,238)"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Mi= nimum soldermask width</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">B = <br></span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 06 / 2,37</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 06 / 2,37</span></p> </td> </tr> <tr> <td> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Mi= nimum clearence to drills</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">C = <br></span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 125 / 5*</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 15 / 6</span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(238,238,238)"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Mi= nimum gap on solder surfaces</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">D = <br></span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 03 / 1,18</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 03 / 1,18</span></p> </td> </tr> <tr> <td> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">So= ldermask layer thickness</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">F = <br></span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 02-0-05 / 0,8-2</span></p> </td> <td style=3D"text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 02-0-05 / 0,8-2</span></p> </td> </tr> <tr> <td style=3D"background-color:rgb(238,238,238)"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Mi= nimum soldermask layer thickness </span></p> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">ov= er tracks</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">= =C2=A0G=C2=A0 <br></span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 008 / 0,3</span></p> </td> <td style=3D"background-color:rgb(238,238,238);text-align:center"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">0,= 008 / 0,3</span></p> </td> </tr> </tbody> </table> <p><span style=3D"font-size:8pt"><span style=3D"font-family:arial,helvetica= ,sans-serif;font-size:10pt">*extra charge=C2=A0</span></span></p></div> <div class=3D"gmail-name"><b>Silkscreen</b></div><div class=3D"gmail-tabcon= tent_text" style=3D"display:block"><table width=3D"463" height=3D"290" bord= er=3D"0" align=3D"left"> <tbody> <tr> <td><img style=3D"margin-right: 10px; float: left;" alt=3D"Silkscreen clipp= ing" src=3D"https://uk.beta-layout.com/images/spec/posi.JPG" width=3D"250" = height=3D"204"></td> <td valign=3D"top" align=3D"left"> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt">Si= lkscreen will be clipped=C2=A0 back (to a diameter of 0,1 mm) from any correspondin= g=20 soldermask pad in order to prevent pads being printed on <strong>(A).</stro= ng></span></p> </td> </tr> <tr> <td colspan=3D"2" valign=3D"top"> <p><span style=3D"text-decoration:underline;font-family:arial,helvetica,san= s-serif;font-size:10pt"><strong>Recommended</strong>:</span><span style=3D"= font-family:arial,helvetica,sans-serif;font-size:10pt"><strong>=C2=A0</stro= ng></span></p> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt"><s= trong>(B)</strong> Minimum script thickness=C2=A0 0,125 mm</span><span styl= e=3D"font-family:arial,helvetica,sans-serif;font-size:10pt"><strong>=C2=A0<= /strong></span></p> <p><span style=3D"font-family:arial,helvetica,sans-serif;font-size:10pt"><s= trong>(C) </strong>Script height=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2,00 mm</span></p></t= d></tr></tbody></table></div> </td></tr></tbody></table> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><b= r></span></p> </td> <td style=3D"width:30px;text-align:center"> <p><b><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"= >I</span></b></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">-<= /span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif"><s= pan style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">0,3/12<= /span></span></p> </td> <td style=3D"text-align:left"> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">Mi= nimal</span></p> <p><span style=3D"font-size:10pt;font-family:arial,helvetica,sans-serif">St= andard</span></p></td></tr></tbody></table></div> </div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail_= attr">On Thu, Apr 2, 2020 at 11:07 AM <<a href=3D"mailto:gedau@igor2.rep= o.hu" target=3D"_blank">gedau@igor2.repo.hu</a>> wrote:<br></div><blockq= uote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1p= x solid rgb(204,204,204);padding-left:1ex"><br> <br> On Thu, 2 Apr 2020, Alain Vigne wrote:<br> <br> >I'm happy to contribute a little again ;)<br> >See comments inserted below<br> <br> Cool, thanks!<br> <br> [about our existing dru parsing]<br> <br> >Then, once parsed, what happens ?<br> <br> At the moment a very few selected values that happen to implement features = <br> in DRU land that have a similar feature in the old drc are copied into the = <br> drc config nodes. The rest of the values are ignored.<br> <br> If we implement this with the new DRC, a set of DRC rules would be <br> generated by the io_eagle plugin instead. I don't expect 100% coverage,= <br> but we could probably write a rule for majority of the values, covering <br= > the most common and most important use cases.<br> <br> ><br> >=C2=A0 =C2=A0 =C2=A0 So questions are:<br> ><br> >=C2=A0 =C2=A0 =C2=A0 1. most relevant: where/why do you need this in pr= actice, on<br> >=C2=A0 =C2=A0 =C2=A0 production<br> >=C2=A0 =C2=A0 =C2=A0 boards?=C2=A0 Are you fabbing boards at that fab o= r another fab that<br> >=C2=A0 =C2=A0 =C2=A0 provide<br> >=C2=A0 =C2=A0 =C2=A0 DRU files?<br> ><br> >Yes, I am fabbing my PCBs with this fab.<br> >I could envision also this fab : <a href=3D"https://www.eurocircuits.co= m" rel=3D"noreferrer" target=3D"_blank">https://www.eurocircuits.com</a><br= > >with this files :<a href=3D"https://www.eurocircuits.com/drc-settings-a= nd-guide-lines-for-cad-packages/" rel=3D"noreferrer" target=3D"_blank">http= s://www.eurocircuits.com/drc-settings-and-guide-lines-for-cad-packages/</a>= <br> >Same idea.<br> <br> Good, if there's production use, it's worth going for it!<br> <br> ><br> >=C2=A0 =C2=A0 =C2=A0 2. are you willing to break down the DRU format in= to individual<br> >=C2=A0 =C2=A0 =C2=A0 rules?<br> >=C2=A0 =C2=A0 =C2=A0 (DRU itself has numeric fields, so "what exac= tly needs to be<br> >=C2=A0 =C2=A0 =C2=A0 checked for a<br> >=C2=A0 =C2=A0 =C2=A0 given field" is the translation to rule)<br> ><br> >Well, as a _user_, ideally, I don't give a damn about internal tran= slations.<br> >I expect pcb-rnd to read the rules, understand, and apply all the rules= when<br> >I hit "DRC" button. Then, if I have no DRC error, I consider = the design good<br> <br> As I wrote in the original call: I'd do the coding/scripting, all I nee= d <br> is the rules (written in plain English).<br> <br> So please take your drc file and/or spec, and try to write a list of <br> what things need to be checked using which values in the DRC file. Focus <b= r> on the "what",=C2=A0 not on the "how". Especially don&#= 39;t worry about layer <br> stacks and things like that.<br> <br> <snip><br> <br> >=C2=A0 =C2=A0 =C2=A0 3. are you willing to test each rule implementatio= n?<br> ><br> >TLDR: yes<br> >long story: Depending on DRU file and user strategy, this might be not = true<br> >with this very file. But a new DRU file can be created included really = ALL<br> >the required rules to pass. Then, other DRC jobs could be launched with= <br> >other requirements, on per request basis.<br> <br> I am only interested in the rules you are going to use/test. If your DRU <b= r> file implements rules you don't understand or don't want to use/tes= t, we <br> should just skip those.<br> <br> Rationale: I want to stay focused and implement things that actually get <b= r> used, not fancy things that "look useful and may be used by someone so= me <br> day". <br> <br> <snip><br> <br> >The idea could also be a "translation" app: take the DRU file= as an input<br> >and output a tEDAX, or DRC? pcb-rnd file ? Don't really know.<br> <br> No need to complicate it with inserting a long chain of extra formats and <= br> external converters. We already parse DRU, what's needed is really only= <br> what I wrote above, and that can't be saved with the longer path either= .<br> <br> (We do have a very simple but rather generic tEDAx drc format, we already <= br> use some of it, the few things the old drc could handle, and I will <br> obviously implement the whole thing using drc_query. But that's an <br> independent effort from DRU or other formats.)<br> <br> Regards,<br> <br> Igor2</blockquote></div><br clear=3D"all"><br>-- <br><div dir=3D"ltr">Alain= V.</div> --0000000000007af09205a24f28ff--
Reply subtree:
3892 Re: [pcb-rnd] drc: implement dru files from Alain Vigne <al...@gmail.com>
3893 Re: [pcb-rnd] drc: implement dru files from ge...@igor2.repo.hu