Sign in with STEVE

steve/bga-package

Ball grid array IC packages by TI outline: DSBGA die-size BGAs, MicroStar Junior BGAs and a 289-ball plastic BGA, each solder ball its own solid.

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 86 lines · Python · STEVE runtime · checked
Download
1"""Ball grid array IC package (DSBGA die-size BGA, MicroStar Junior and plastic BGA) by TI package outline. Centred on the origin with the seating plane
2on the XY plane, seen from above: ball A1 at the -X, +Y corner, columns 1, 2, ... running +X and rows A, B, ... running -Y. Each solder ball is its own
3solid. Dimensions from the TI outline named by `package`; see the README."""
4from steve import Model
5
6package = "YZP0010" # TI package outline
7
8# outline: (kind, balls, columns, rows, pitch, body along the rows (D, Y), body along the columns (E, X), overall height (min, max) or (None, max),
9# body thickness above the balls (min, max) or None, ball standoff A1 (min, max), ball diameter (min, max), balls left out of the grid), all mm.
10# Rows are lettered A, B, C ... without I, O, Q and S, as TI letters them.
11# TI package outlines, https://www.ti.com/lit/...:
12# ZAV lit/pdf/mpbg777, ZAV (S-PBGA-N289), 4208156/A 08/06
13# ZQW lit/pdf/mpbg674, ZQW (S-PBGA-N113), 4204599-3/D 08/12 (MicroStar Junior)
14# GQE lit/ds/symlink/tlv320aic23b.pdf, SLWS106H, Appendix A page A-1, GQE/ZQE (S-PBGA-N80), 4200461/C 10/00 (MicroStar Junior)
15# YZP0010 lit/ds/symlink/ts3a24159.pdf, SCDS238H, page 34, 4219350/B 11/2017 (D and E from its table)
16# YZP0008 lit/ds/symlink/txb0102.pdf, SCES641E, page 36, 4223082/A 07/2016 (D and E from its table)
17# YKA0006 lit/ds/symlink/tps62843.pdf, SLVSFU8C, page 36, 4223607/B 06/2023 (D and E from its table)
18# The DSBGA outlines give the height as a maximum only (YKA0006 as 0.35 to 0.40) and no die thickness: the die is drawn from the standoff to that height.
19OUTLINES = {
20 "YKA0006": ("DSBGA", 6, 2, 3, 0.35, (0.98, 1.04), (0.727, 0.787), (0.35, 0.40), None, (0.13, 0.18), (0.19, 0.24), ()),
21 "YZP0008": ("DSBGA", 8, 2, 4, 0.5, (1.858, 1.918), (0.858, 0.918), (None, 0.5), None, (0.15, 0.19), (0.21, 0.25), ()),
22 "YZP0010": ("DSBGA", 10, 3, 4, 0.5, (1.83, 1.89), (1.33, 1.39), (None, 0.5), None, (0.15, 0.19), (0.21, 0.25), ("B2", "C2")),
23 "GQE": ("MicroStar Junior BGA", 80, 9, 9, 0.5, (4.9, 5.1), (4.9, 5.1), (None, 1.0), (0.62, 0.68), (0.11, 0.21), (0.25, 0.35), ("C3",)),
24 "ZQW": ("MicroStar Junior BGA", 113, 12, 12, 0.5, (6.9, 7.1), (6.9, 7.1), (None, 1.0), (0.71, 0.77), (0.15, 0.25), (0.25, 0.35),
25 ("C4", "C5", "C6", "C7", "C8", "C9", "C10", "D3", "D10", "E3", "E10", "F3", "F6", "F7", "F10", "G3", "G6", "G7", "G10", "H3", "H10",
26 "J3", "J10", "K3", "K4", "K5", "K6", "K7", "K8", "K9", "K10")),
27 "ZAV": ("BGA", 289, 17, 17, 0.8, (14.9, 15.1), (14.9, 15.1), (None, 1.4), (0.84, 0.96), (0.35, 0.45), (0.45, 0.55), ()),
28}
29ROW_LETTERS = "ABCDEFGHJKLMNPRTUVWY"
30# The pin-1 mark on top is a proportion, for looks.
31
32
33def mid(pair):
34 return (pair[0] + pair[1]) / 2
35
36
37kind, balls, cols, rows, pitch, D, E, H, BODY, A1, BALL, missing = OUTLINES[package]
38length, width, standoff, ball = mid(D), mid(E), mid(A1), mid(BALL)
39if BODY:
40 top = standoff + mid(BODY)
41elif H[0] is None:
42 top = H[1]
43else:
44 top = mid(H)
45r = ball / 2
46x0 = -(cols - 1) * pitch / 2
47y0 = (rows - 1) * pitch / 2
48model = Model()
49model.plane("body_plane", on="XY", offset=standoff, name="Body")
50with model.sketch("body_sketch", on="body_plane", name="Body") as sk:
51 sk.rect("body_rect", (-width / 2, -length / 2), (width / 2, length / 2))
52model.extrude("body", "body_sketch", distance=top - standoff, op="new", body="body_body", name="Body")
53model.plane("top_plane", on="XY", offset=top, name="Top")
54with model.sketch("mark_sketch", on="top_plane", name="Ball A1 mark") as sk:
55 sk.circle("mark_circle", (-width / 2 + 0.12 * min(width, length), length / 2 - 0.12 * min(width, length)), 0.05 * min(width, length))
56model.extrude("mark", "mark_sketch", distance=-min(0.03, (top - standoff) / 4), op="cut", body="body_body", name="Ball A1 mark")
57# The balls, row by row: each run of balls with no gap is one sphere repeated along +X. A ball stands on the seating plane and is cut flat where it
58# meets the body, at the standoff.
59first = True
60for j in range(rows):
61 run = []
62 for i in range(cols + 1):
63 here = i < cols and f"{ROW_LETTERS[j]}{i + 1}" not in missing
64 if here:
65 run.append(i)
66 continue
67 if run and first:
68 # the very first ball makes the balls body on its own, so that the patterns after it join that body
69 model.sphere("ball_first", r, at=(x0 + run[0] * pitch, y0 - j * pitch, r), op="new", body="balls_body", name="Balls")
70 first = False
71 run = run[1:]
72 if run:
73 start = f"ball_{ROW_LETTERS[j].lower()}{run[0] + 1}"
74 model.sphere(start, r, at=(x0 + run[0] * pitch, y0 - j * pitch, r), op="join", body="balls_body", name="Balls")
75 if len(run) > 1:
76 model.linear_pattern(f"{start}_run", direction=(1, 0, 0), count=len(run), spacing=pitch, features=[start], name="Balls")
77 run = []
78with model.sketch("trim_sketch", on="body_plane", name="Balls") as sk:
79 sk.rect("trim_rect", (-width, -length), (width, length))
80model.extrude("trim", "trim_sketch", distance=ball, op="cut", body="balls_body", name="Balls")
81# Materials, for looks and a rough mass: a DSBGA is the bare silicon die; a moulded BGA's body is epoxy compound on a laminate substrate, mostly silica
82# filler (density about 1.9 to 2.0), and ptfe (2.2) is the nearest in the material list; the balls are tin-silver-copper solder, tin.
83model.material("silicon" if kind == "DSBGA" else "ptfe", bodies=["body_body"], color="#2b2d31" if kind == "DSBGA" else "#26282b")
84model.material("tin", bodies=["balls_body"], color="#c9ccd1")
85result = model.result()
86

Ball grid array IC packages for board layouts and enclosures: the body and every solder ball, from a named TI package outline (DSBGA YKA0006, YZP0008 and YZP0010, MicroStar Junior GQE and ZQW, and the ZAV plastic BGA). Ball A1 is at the -X, +Y corner. See the README.

Ball grid array package

Ball grid array IC packages, each modelled from a named TI package outline: the body and every solder ball, each ball its own solid. The package is centred on the origin with the seating plane on the XY plane. Seen from above, ball A1 is at the -X, +Y corner, columns 1, 2, ... run along +X and rows A, B, ... along -Y. Rows are lettered without I, O, Q and S, as TI letters them.

Outline Kind Balls Grid Pitch Body (E x D)
YKA0006 DSBGA 6 2 x 3 0.35 mm 0.757 x 1.01 mm
YZP0008 DSBGA 8 2 x 4 0.5 mm 0.888 x 1.888 mm
YZP0010 DSBGA 10 3 x 4, no B2 or C2 0.5 mm 1.36 x 1.86 mm
GQE MicroStar Junior BGA 80 9 x 9, no C3 0.5 mm 5 x 5 mm
ZQW MicroStar Junior BGA 113 12 x 12, 31 left out 0.5 mm 7 x 7 mm
ZAV plastic BGA 289 17 x 17 0.8 mm 15 x 15 mm

ZQW leaves out C4 to C10, K3 to K10, columns 3 and 10 of rows D to J, and F6, F7, G6 and G7.

Source

TI package outline drawings, from ti.com:

  • ZAV (S-PBGA-N289), "MECHANICAL DATA", https://www.ti.com/lit/pdf/mpbg777, page 1, drawing 4208156/A 08/06.
  • ZQW (S-PBGA-N113), "MECHANICAL DATA", https://www.ti.com/lit/pdf/mpbg674, page 1, drawing 4204599-3/D 08/12.
  • GQE/ZQE (S-PBGA-N80), in the TLV320AIC23B datasheet (SLWS106H), Appendix A, page A-1, drawing 4200461/C 10/00: https://www.ti.com/lit/ds/symlink/tlv320aic23b.pdf.
  • YZP0010, in the TS3A24159 datasheet (SCDS238H, revised August 2022), page 34, drawing 4219350/B 11/2017: https://www.ti.com/lit/ds/symlink/ts3a24159.pdf.
  • YZP0008, in the TXB0102 datasheet (SCES641E, revised October 2023), page 36, drawing 4223082/A 07/2016: https://www.ti.com/lit/ds/symlink/txb0102.pdf.
  • YKA0006, in the TPS62843 datasheet (SLVSFU8C, revised June 2024), page 36, drawing 4223607/B 06/2023: https://www.ti.com/lit/ds/symlink/tps62843.pdf.
Outline D E Height Body thickness Standoff A1 Ball
YKA0006 0.98–1.04 0.727–0.787 0.35–0.40 0.13–0.18 0.19–0.24
YZP0008 1.858–1.918 0.858–0.918 0.5 max 0.15–0.19 0.21–0.25
YZP0010 1.83–1.89 1.33–1.39 0.5 max 0.15–0.19 0.21–0.25
GQE 4.90–5.10 4.90–5.10 1.00 max 0.62–0.68 0.11–0.21 0.25–0.35
ZQW 6.90–7.10 6.90–7.10 1.00 max 0.71–0.77 0.15–0.25 0.25–0.35
ZAV 14.90–15.10 14.90–15.10 1.40 max 0.84–0.96 0.35–0.45 0.45–0.55

The model uses the middle of each range. The DSBGA outlines dimension the overall height (YZP as a maximum only) but not the die, so the die runs from the standoff to that height: 0.5 for YZP0008 and YZP0010, 0.375 for YKA0006. The other outlines give the body's thickness, and the body sits on the standoff.

Proportions, stated plainly. The drawings show these but don't dimension them:

  • Each ball is a sphere of the ball diameter standing on the seating plane, cut flat where it meets the body at the standoff. Every standoff is more than the ball's radius, so the ball's widest point is below the body.
  • The ball A1 mark is a dimple on top, 0.03 deep (less on thin dies), of radius 0.05 x the body's shorter side, 0.12 x that side in from the A1 corner.
  • Materials are for looks and a rough mass. A DSBGA is the bare die, silicon. The moulded packages are epoxy compound on a laminate substrate, mostly silica filler (density about 1.9 to 2.0), and ptfe (2.2) is the nearest in the material list. The balls are tin-silver-copper solder, so tin.

Mass. The outlines give no weight, so there is nothing to check the mass against.

Catalogue models

Six Texas_* names map, each to the outline with the same balls, grid, pitch and body. The size in the name is TI's nominal E x D (YZP0008's 0.888 x 1.888 is named 0.9x1.9):

  • Texas_DSBGA-6_0.757x1.01mm_Layout2x3_P0.35mm: YKA0006.
  • Texas_DSBGA-8_0.9x1.9mm_Layout2x4_P0.5mm: YZP0008.
  • Texas_DSBGA-10_1.36x1.86mm_Layout3x4_P0.5mm: YZP0010.
  • Texas_MicroStar_Junior_BGA-80_5.0x5.0mm_Layout9x9_P0.5mm: GQE.
  • Texas_MicroStar_Junior_BGA-113_7x7mm_Layout12x12_P0.5mm: ZQW.
  • Texas_BGA-289_15x15mm_Layout17x17_P0.8mm: ZAV.

Measured on those six reference models: each has the outline's grid, pitch and body, and the same balls left out. Their balls are within 0.05 of TI's middle diameter, but every model is taller than TI's maximum height, by 0.007 to 0.131. The models are plainly wrong in height, so the outlines are followed:

Model Ball (model / TI) Standoff (model / TI) Height (model / TI)
DSBGA-6 0.225 / 0.215 about 0.15 / 0.155 0.407 / 0.375 (0.40 max)
DSBGA-8 0.9x1.9 0.21 / 0.23 about 0.17 / 0.17 0.507 / 0.5 max
DSBGA-10 0.241 / 0.23 about 0.17 / 0.17 0.631 / 0.5 max
MicroStar Junior 80 0.315 / 0.30 about 0.21 / 0.16 1.010 / 0.81 (1.00 max)
MicroStar Junior 113 0.315 / 0.30 about 0.21 / 0.20 1.010 / 0.94 (1.00 max)
BGA-289 0.525 / 0.50 about 0.41 / 0.40 1.415 / 1.30 (1.40 max)

The other Texas_* names stay open until their outline is read: the 12-ball DSBGAs (YZT, whose outline TXB0104 and TXS0104E no longer print, and YZG, whose D and E TSC2007's current datasheet no longer prints), the 49-ball YFF (MSP430F22x4 gives only D and E), the 8-ball YBJ (no outline in INA234's datasheet), the 12-ball MicroStar Junior (GXU/ZXU) and the 48-ball Junior DSBGA, which names no package code. The other makers' and generic BGA names are not read yet; see COVERAGE.md.

  1. 1.0.0 Latest
More #ic-package
STEVEMIT

steve/son-package

No-lead small-outline IC packages by TI outline: WSON-8/10/12/16, VSON-8 and X1SON-8, 0.4 to 0.8 mm pitch, with exposed thermal pad.

1 7 sizes 0 15 hours ago v1.1.0
STEVEMIT

steve/tssop-package

TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.

0 5 sizes 0 15 hours ago v1.0.0
STEVEMIT

steve/so-package

Small-outline IC packages by TI outline: SOIC-14/16 and 20W, SSOP-16/20/28, TSSOP-8 and TSSOP-48/56 (6.1 mm body).

0 10 sizes 0 15 hours ago v1.0.0
STEVEMIT

steve/sot-package

Small-outline transistor packages by TI outline: SOT-23, thin SOT-23-5/6/8, SC-70-3/6, SOT-553 and SOT-563.

0 9 sizes 0 24 minutes ago v1.0.1