Date:2012-05-29 06:29:49 (8 years 2 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
3frame 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
32package "QFP$N-$pkg-$dens"
33unit mm
34
35table
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
40table
41    { Dtol, Ltol }
42    { Dmax-Dmin, Lmax-Lmin }
43
44table
45    { Smin, Cs, Smax }
46    { Dmin-2*Lmax, sqrt(Dtol*Dtol+Ltol*Ltol), Smin+Cs }
47
48set Cl = Dmax-Dmin
49
50set Cw = b1max-b1min
51
52table
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
61table
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
66set pcb_tolerance = 0.1mm
67
68set placement_tolerance = 0.1mm
69
70table
71    { F, P }
72    { pcb_tolerance, placement_tolerance }
73
74set Zmax = Dmin+2*Jt+sqrt(Cl*Cl+F*F+P*P)
75
76set Gmin = Smax-2*Jh-sqrt(Cs*Cs+F*F+P*P)
77
78set Xmax = b1min+2*Js+sqrt(Cw*Cw+F*F+P*P)
79
80frame land @
81measy land.__2 -> land.__1 1mm
82measy land.__0 >> land.__0
83measy land.__2 >> land.__4 4mm
84measy land.__5 >> land.__5 6mm

Archive Download the corresponding diff file

Branches:
master



interactive