Sign in with STEVE

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).

v1.0.0 Latest STEVE MIT 0
Isometric
part.py 65 lines · Python · STEVE runtime · checked
Download
1"""Small-outline IC package (SOIC, SSOP, TSSOP) by TI package outline. Centred on the origin with the seating plane on the XY plane, pins 1 to n/2 on the -Y side
2running +X, the others on +Y running back. Dimensions from the TI outline named by `package`; see the README."""
3from steve import Model
4
5package = "D0014A" # TI package outline
6detail = "full" # full: body, pin-1 mark and gull-wing leads; simple: the body only
7
8# outline: (kind, pins, pitch, body length, body width, lead tip to tip, height max, standoff, lead width, foot length), ranges as (min, max), all in mm.
9# TI package outlines, https://www.ti.com/lit/pdf/<doc>: D0014A mpds177 (4220718/A 09/2016), D0016A mpds43 (4214828/B 08/2021), DW0020A mpds173 (4220724/A
10# 05/2016), DB0016A mpds507 (4220763/A 05/2022), DB0020A mpds508 (4214851/B 08/2019), DB0028A mpds510 (4214853/B 03/2018), PW0008A mpds568 (4221848/A 02/2015),
11# DGG0048A mpds583 (4214859/B 11/2020), DGG0056A mpds570 (4222167/A 07/2015). SSOP standoff: 0.05 min; its upper end is the height budget, taken as 0.25.
12OUTLINES = {
13 "D0014A": ("SOIC", 14, 1.27, (8.55, 8.75), (3.8, 4.0), (5.8, 6.2), 1.75, (0.10, 0.25), (0.31, 0.51), (0.40, 1.27)),
14 "D0016A": ("SOIC", 16, 1.27, (9.8, 10.0), (3.8, 4.0), (5.8, 6.2), 1.75, (0.10, 0.25), (0.31, 0.51), (0.40, 1.27)),
15 "DW0020A": ("SOIC", 20, 1.27, (12.6, 13.0), (7.4, 7.6), (9.97, 10.63), 2.65, (0.10, 0.30), (0.31, 0.51), (0.40, 1.27)),
16 "DB0016A": ("SSOP", 16, 0.65, (5.9, 6.5), (5.0, 5.6), (7.4, 8.2), 2.0, (0.05, 0.25), (0.22, 0.38), (0.55, 0.95)),
17 "DB0020A": ("SSOP", 20, 0.65, (6.9, 7.5), (5.0, 5.6), (7.4, 8.2), 2.0, (0.05, 0.25), (0.22, 0.38), (0.55, 0.95)),
18 "DB0028A": ("SSOP", 28, 0.65, (9.9, 10.5), (5.0, 5.6), (7.4, 8.2), 2.0, (0.05, 0.25), (0.22, 0.38), (0.55, 0.95)),
19 "PW0008A": ("TSSOP", 8, 0.65, (2.9, 3.1), (4.3, 4.5), (6.2, 6.6), 1.2, (0.05, 0.15), (0.19, 0.30), (0.50, 0.75)),
20 "DGG0048A": ("TSSOP", 48, 0.5, (12.4, 12.6), (6.0, 6.2), (7.9, 8.3), 1.2, (0.05, 0.15), (0.17, 0.27), (0.50, 0.75)),
21 "DGG0056A": ("TSSOP", 56, 0.5, (13.9, 14.1), (6.0, 6.2), (7.9, 8.3), 1.2, (0.05, 0.15), (0.17, 0.27), (0.50, 0.75)),
22}
23LEAD_T = 0.15 # lead thickness, the outlines' (0.15) reference; the gull wing's bend heights and the pin-1 mark are proportions, for looks
24
25
26def mid(pair):
27 return (pair[0] + pair[1]) / 2
28
29
30kind, pins, pitch, L, W, span, top, standoff, lead_w, foot = OUTLINES[package]
31length, width, span, standoff, lead_w, foot = mid(L), mid(W), mid(span), mid(standoff), mid(lead_w), mid(foot)
32per_row = pins // 2
33first = -(per_row - 1) * pitch / 2
34model = Model()
35model.plane("body_plane", on="XY", offset=standoff, name="Body")
36with model.sketch("body_sketch", on="body_plane", name="Body") as sk:
37 sk.rect("body_rect", (-length / 2, -width / 2), (length / 2, width / 2))
38model.extrude("body", "body_sketch", distance=top - standoff, name="Body")
39if detail == "full":
40 model.plane("top_plane", on="XY", offset=top, name="Top")
41 with model.sketch("mark_sketch", on="top_plane", name="Pin-1 mark") as sk:
42 sk.circle("mark_circle", (-length / 2 + 0.2 * width, -width / 2 + 0.2 * width), 0.06 * width)
43 model.extrude("mark", "mark_sketch", distance=-0.05, op="cut", name="Pin-1 mark")
44 arm_z = (top + standoff) / 2
45 for tag, side in (("low", -1), ("high", 1)):
46 y_out, y_body, y_bend = side * span / 2, side * width / 2, side * (span / 2 - foot)
47 with model.sketch(f"feet_{tag}", on="XY", name="Leads") as sk:
48 for i in range(per_row):
49 x = first + i * pitch
50 sk.rect(f"foot_{tag}_{i}", (x - lead_w / 2, min(y_bend, y_out)), (x + lead_w / 2, max(y_bend, y_out)))
51 model.extrude(f"feet_{tag}_body", f"feet_{tag}", distance=LEAD_T, name="Leads")
52 model.plane(f"arm_plane_{tag}", on="XY", offset=arm_z, name="Leads")
53 with model.sketch(f"arms_{tag}", on=f"arm_plane_{tag}", name="Leads") as sk:
54 for i in range(per_row):
55 x = first + i * pitch
56 sk.rect(f"arm_{tag}_{i}", (x - lead_w / 2, min(y_body, y_bend) - LEAD_T / 2), (x + lead_w / 2, max(y_body, y_bend) + LEAD_T / 2))
57 model.extrude(f"arms_{tag}_body", f"arms_{tag}", distance=LEAD_T, name="Leads")
58 with model.sketch(f"legs_{tag}", on="XY", name="Leads") as sk:
59 for i in range(per_row):
60 x = first + i * pitch
61 sk.rect(f"leg_{tag}_{i}", (x - lead_w / 2, y_bend - LEAD_T / 2), (x + lead_w / 2, y_bend + LEAD_T / 2))
62 model.extrude(f"legs_{tag}_body", f"legs_{tag}", distance=arm_z + LEAD_T, name="Leads")
63model.material("pla", color="#26282b")
64result = model.result()
65

Small-outline IC packages for board layouts: body, pin-1 mark and gull-wing leads, each from a named TI package outline. See the README.

Small-outline package

Small-outline IC packages (SOIC, SSOP, TSSOP), each modelled from a named TI package outline. The package is centred on the origin with the seating plane on the XY plane. Pins 1 to n/2 are on the -Y side running +X, and the others are on +Y running back.

Source

TI package outlines at https://www.ti.com/lit/pdf/<document>:

Outline Package Document Drawing
D0014A SOIC-14 mpds177 4220718/A 09/2016
D0016A SOIC-16 mpds43 4214828/B 08/2021
DW0020A SOIC-20, wide mpds173 4220724/A 05/2016
DB0016A SSOP-16 mpds507 4220763/A 05/2022
DB0020A SSOP-20 mpds508 4214851/B 08/2019
DB0028A SSOP-28 mpds510 4214853/B 03/2018
PW0008A TSSOP-8 mpds568 4221848/A 02/2015
DGG0048A TSSOP-48 mpds583 4214859/B 11/2020
DGG0056A TSSOP-56 mpds570 4222167/A 07/2015

Each outline gives body length and width, lead tip to tip, maximum height, standoff, lead width and foot length. The model uses the middle of each range, and the height is the maximum, so read it as an envelope. The SSOP outlines give a 0.05 minimum standoff only; 0.25 is taken as its upper end.

Proportions, for looks only: the gull wing's bend heights and the pin-1 mark. Lead thickness is the outlines' 0.15 reference.

The 4.4 mm TSSOPs with 14 to 24 pins are the tssop-package part. Other sizes, SOIC-8 and exposed-pad packages aren't here yet; see COVERAGE.md.

  1. 1.0.0 Latest
More #ic-package
STEVEMIT

steve/tssop-package

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

0 5 sizes 0 2 hours ago v1.0.0
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 2 hours ago v1.1.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 2 hours ago v1.0.0
STEVEMIT

steve/qfn-package

Quad flat no-lead IC packages by TI outline: VQFN-20 (0.65 mm pitch) and VQFN-24/32/48/64 (0.5 mm pitch), with exposed thermal pad.

0 6 sizes 0 2 hours ago v1.0.0