Mailing list archives : pcb-rnd

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 &quot;English description&quot;=
. I prefer &quot;graphical description&quot;, but OK.=C2=A0 I copy &amp; 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 &lt;<a href=3D"mailto:gedau@igor2.rep=
o.hu" target=3D"_blank">gedau@igor2.repo.hu</a>&gt; 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>
&gt;I&#39;m happy to contribute a little again ;)<br>
&gt;See comments inserted below<br>
<br>
Cool, thanks!<br>
<br>
[about our existing dru parsing]<br>
<br>
&gt;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&#39;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>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 So questions are:<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 1. most relevant: where/why do you need this in pr=
actice, on<br>
&gt;=C2=A0 =C2=A0 =C2=A0 production<br>
&gt;=C2=A0 =C2=A0 =C2=A0 boards?=C2=A0 Are you fabbing boards at that fab o=
r another fab that<br>
&gt;=C2=A0 =C2=A0 =C2=A0 provide<br>
&gt;=C2=A0 =C2=A0 =C2=A0 DRU files?<br>
&gt;<br>
&gt;Yes, I am fabbing my PCBs with this fab.<br>
&gt;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=
>
&gt;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>
&gt;Same idea.<br>
<br>
Good, if there&#39;s production use, it&#39;s worth going for it!<br>
<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 =C2=A0 2. are you willing to break down the DRU format in=
to individual<br>
&gt;=C2=A0 =C2=A0 =C2=A0 rules?<br>
&gt;=C2=A0 =C2=A0 =C2=A0 (DRU itself has numeric fields, so &quot;what exac=
tly needs to be<br>
&gt;=C2=A0 =C2=A0 =C2=A0 checked for a<br>
&gt;=C2=A0 =C2=A0 =C2=A0 given field&quot; is the translation to rule)<br>
&gt;<br>
&gt;Well, as a _user_, ideally, I don&#39;t give a damn about internal tran=
slations.<br>
&gt;I expect pcb-rnd to read the rules, understand, and apply all the rules=
 when<br>
&gt;I hit &quot;DRC&quot; button. Then, if I have no DRC error, I consider =
the design good<br>
<br>
As I wrote in the original call: I&#39;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 &quot;what&quot;,=C2=A0 not on the &quot;how&quot;. Especially don&#=
39;t worry about layer <br>
stacks and things like that.<br>
<br>
&lt;snip&gt;<br>
<br>
&gt;=C2=A0 =C2=A0 =C2=A0 3. are you willing to test each rule implementatio=
n?<br>
&gt;<br>
&gt;TLDR: yes<br>
&gt;long story: Depending on DRU file and user strategy, this might be not =
true<br>
&gt;with this very file. But a new DRU file can be created included really =
ALL<br>
&gt;the required rules to pass. Then, other DRC jobs could be launched with=
<br>
&gt;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&#39;t understand or don&#39;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 &quot;look useful and may be used by someone so=
me <br>
day&quot;. <br>
<br>
&lt;snip&gt;<br>
<br>
&gt;The idea could also be a &quot;translation&quot; app: take the DRU file=
 as an input<br>
&gt;and output a tEDAX, or DRC? pcb-rnd file ? Don&#39;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&#39;s needed is really only=
 <br>
what I wrote above, and that can&#39;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&#39;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