Date: | 2012-05-29 06:29:49 (11 years 9 months ago) |
---|---|
Author: | Werner Almesberger |
Commit: | 6a242723fb7367db442e58f6f387ed19fab2c1ed |
Message: | modules/qfp-gen.fpd: QFP modules generated from IPC-7351 formulas
(WIP) Known issues: - the dimensions don't look quite right yet. Especially clearance between pads is insufficient. - results need rounding - the design is a bit too efficient for its own good: several measurements aren't possible. Maybe split sides into different frames. |
Files: |
modules/qfp-gen.fpd (1 diff) |
Change Details
modules/qfp-gen.fpd | ||
---|---|---|
1 | /* MACHINE-GENERATED ! */ | |
2 | ||
3 | frame land { | |
4 | table | |
5 | { dx, dy, n } | |
6 | { 0, -1, i } | |
7 | { 1, 0, i+N/4 } | |
8 | { 0, 1, i+N/2 } | |
9 | { -1, 0, i+3*N/4 } | |
10 | ||
11 | set side = e*(i-N/8-0.5) | |
12 | ||
13 | table | |
14 | { sx, sy } | |
15 | { side*-dy, side*dx } | |
16 | ||
17 | table | |
18 | { ix, iy, ox, oy, wx, wy } | |
19 | { Gmin/2*dx, Gmin/2*dy, Zmax/2*dx, Zmax/2*dy, Xmax*-dy, Xmax*dx } | |
20 | ||
21 | loop i = 1, N/4 | |
22 | ||
23 | __0: vec @(ix, iy) | |
24 | __1: vec .(sx, sy) | |
25 | __2: vec .(ox-ix, oy-iy) | |
26 | __4: vec .(wx/2, wy/2) | |
27 | __3: vec __1(-wx/2, -wy/2) | |
28 | pad "?" . __4 | |
29 | __5: vec @((ix+ox)/2, (iy+oy)/2) | |
30 | } | |
31 | ||
32 | package "QFP$N-$pkg-$dens" | |
33 | unit mm | |
34 | ||
35 | table | |
36 | { pkg, N, Dmin, Dmax, D1max, Lmin, Lmax, e, narrow, bmin, bmax, b1min, b1max } | |
37 | { "MS026BBA", 32, 8.9mm, 9.1mm, 7.1mm, 0.45mm, 0.75mm, 0.8mm, 0, 0.3mm, 0.45mm, 0.3mm, 0.4mm } | |
38 | { "MS026BBC", 48, 8.9mm, 9.1mm, 7.1mm, 0.45mm, 0.75mm, 0.5mm, 1, 0.17mm, 0.27mm, 0.17mm, 0.23mm } | |
39 | ||
40 | table | |
41 | { Dtol, Ltol } | |
42 | { Dmax-Dmin, Lmax-Lmin } | |
43 | ||
44 | table | |
45 | { Smin, Cs, Smax } | |
46 | { Dmin-2*Lmax, sqrt(Dtol*Dtol+Ltol*Ltol), Smin+Cs } | |
47 | ||
48 | set Cl = Dmax-Dmin | |
49 | ||
50 | set Cw = b1max-b1min | |
51 | ||
52 | table | |
53 | { dens, ?narrow, Jt, Jh, Js, Court } | |
54 | { "A", 0, 0.55mm, 0.45mm, 0.05mm, 0.5mm } | |
55 | { "B", 0, 0.35mm, 0.35mm, 0.03mm, 0.25mm } | |
56 | { "C", 0, 0.15mm, 0.25mm, 0.01mm, 0.1mm } | |
57 | { "A", 1, 0.55mm, 0.45mm, 0.01mm, 0.5mm } | |
58 | { "B", 1, 0.35mm, 0.35mm, -0.02mm, 0.25mm } | |
59 | { "C", 1, 0.15mm, 0.25mm, -0.04mm, 0.1mm } | |
60 | ||
61 | table | |
62 | { ?narrow, Jt_round, Jh_round, Js_round } | |
63 | { 0, 0.02mm, 0.02mm, 0.01mm } | |
64 | { 1, 0.02mm, 0.1mm, 0.01mm } | |
65 | ||
66 | set pcb_tolerance = 0.1mm | |
67 | ||
68 | set placement_tolerance = 0.1mm | |
69 | ||
70 | table | |
71 | { F, P } | |
72 | { pcb_tolerance, placement_tolerance } | |
73 | ||
74 | set Zmax = Dmin+2*Jt+sqrt(Cl*Cl+F*F+P*P) | |
75 | ||
76 | set Gmin = Smax-2*Jh-sqrt(Cs*Cs+F*F+P*P) | |
77 | ||
78 | set Xmax = b1min+2*Js+sqrt(Cw*Cw+F*F+P*P) | |
79 | ||
80 | frame land @ | |
81 | measy land.__2 -> land.__1 1mm | |
82 | measy land.__0 >> land.__0 | |
83 | measy land.__2 >> land.__4 4mm | |
84 | measy land.__5 >> land.__5 6mm |
Branches:
master