steve/tssop-package
TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.
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).
| 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 |
| 2 | running +X, the others on +Y running back. Dimensions from the TI outline named by `package`; see the README.""" |
| 3 | from steve import Model |
| 4 | |
| 5 | package = "D0014A" # TI package outline |
| 6 | detail = "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. |
| 12 | OUTLINES = { |
| 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 | } |
| 23 | LEAD_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 | |
| 26 | def mid(pair): |
| 27 | return (pair[0] + pair[1]) / 2 |
| 28 | |
| 29 | |
| 30 | kind, pins, pitch, L, W, span, top, standoff, lead_w, foot = OUTLINES[package] |
| 31 | length, width, span, standoff, lead_w, foot = mid(L), mid(W), mid(span), mid(standoff), mid(lead_w), mid(foot) |
| 32 | per_row = pins // 2 |
| 33 | first = -(per_row - 1) * pitch / 2 |
| 34 | model = Model() |
| 35 | model.plane("body_plane", on="XY", offset=standoff, name="Body") |
| 36 | with model.sketch("body_sketch", on="body_plane", name="Body") as sk: |
| 37 | sk.rect("body_rect", (-length / 2, -width / 2), (length / 2, width / 2)) |
| 38 | model.extrude("body", "body_sketch", distance=top - standoff, name="Body") |
| 39 | if 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") |
| 63 | model.material("pla", color="#26282b") |
| 64 | result = model.result() |
| 65 |
| 1 | name = "steve/so-package" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "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)." |
| 6 | description = """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.""" |
| 7 | tags = ["ic-package", "soic", "ssop", "tssop", "smd", "electronics"] |
| 8 | |
| 9 | [parameters.package] |
| 10 | type = "choice" |
| 11 | default = "D0014A" |
| 12 | choices = ["D0014A", "D0016A", "DW0020A", "DB0016A", "DB0020A", "DB0028A", "PW0008A", "DGG0048A", "DGG0056A"] |
| 13 | label = "TI package outline" |
| 14 | |
| 15 | [parameters.detail] |
| 16 | type = "choice" |
| 17 | default = "full" |
| 18 | choices = ["full", "simple"] |
| 19 | label = "Detail" |
| 20 | description = "full: body, pin-1 mark and gull-wing leads. simple: the body only." |
| 21 | |
| 22 | [[presets]] |
| 23 | id = "SOIC-14-D0014A" |
| 24 | title = "SOIC-14 (D0014A), 1.27 mm pitch" |
| 25 | params = { package = "D0014A" } |
| 26 | aliases = ["SOIC-14", "SOIC14", "14 pin SOIC", "D0014A"] |
| 27 | standard = "TI package outline" |
| 28 | |
| 29 | [[presets]] |
| 30 | id = "SOIC-16-D0016A" |
| 31 | title = "SOIC-16 (D0016A), 1.27 mm pitch" |
| 32 | params = { package = "D0016A" } |
| 33 | aliases = ["SOIC-16", "SOIC16", "16 pin SOIC", "D0016A"] |
| 34 | standard = "TI package outline" |
| 35 | |
| 36 | [[presets]] |
| 37 | id = "SSOP-16-DB0016A" |
| 38 | title = "SSOP-16 (DB0016A), 0.65 mm pitch" |
| 39 | params = { package = "DB0016A" } |
| 40 | aliases = ["SSOP-16", "SSOP16", "16 pin SSOP", "DB0016A"] |
| 41 | standard = "TI package outline" |
| 42 | |
| 43 | [[presets]] |
| 44 | id = "SSOP-20-DB0020A" |
| 45 | title = "SSOP-20 (DB0020A), 0.65 mm pitch" |
| 46 | params = { package = "DB0020A" } |
| 47 | aliases = ["SSOP-20", "SSOP20", "20 pin SSOP", "DB0020A"] |
| 48 | standard = "TI package outline" |
| 49 | |
| 50 | [[presets]] |
| 51 | id = "SSOP-28-DB0028A" |
| 52 | title = "SSOP-28 (DB0028A), 0.65 mm pitch" |
| 53 | params = { package = "DB0028A" } |
| 54 | aliases = ["SSOP-28", "SSOP28", "28 pin SSOP", "DB0028A"] |
| 55 | standard = "TI package outline" |
| 56 | |
| 57 | [[presets]] |
| 58 | id = "TSSOP-48-DGG0048A" |
| 59 | title = "TSSOP-48 (DGG0048A), 0.5 mm pitch" |
| 60 | params = { package = "DGG0048A" } |
| 61 | aliases = ["TSSOP-48", "TSSOP48", "48 pin TSSOP", "DGG0048A"] |
| 62 | standard = "TI package outline" |
| 63 | |
| 64 | [[presets]] |
| 65 | id = "TSSOP-56-DGG0056A" |
| 66 | title = "TSSOP-56 (DGG0056A), 0.5 mm pitch" |
| 67 | params = { package = "DGG0056A" } |
| 68 | aliases = ["TSSOP-56", "TSSOP56", "56 pin TSSOP", "DGG0056A"] |
| 69 | standard = "TI package outline" |
| 70 | |
| 71 | [[presets]] |
| 72 | id = "SOIC-20W-DW0020A" |
| 73 | title = "SOIC-20W (DW0020A), 1.27 mm pitch" |
| 74 | params = { package = "DW0020A" } |
| 75 | aliases = ["SOIC-20W", "SOIC20W", "20 pin SOIC", "DW0020A"] |
| 76 | standard = "TI package outline" |
| 77 | |
| 78 | [[presets]] |
| 79 | id = "TSSOP-8-PW0008A" |
| 80 | title = "TSSOP-8 (PW0008A), 0.65 mm pitch" |
| 81 | params = { package = "PW0008A" } |
| 82 | aliases = ["TSSOP-8", "TSSOP8", "8 pin TSSOP", "PW0008A"] |
| 83 | standard = "TI package outline" |
| 84 | |
| 85 | [[presets]] |
| 86 | id = "SOIC-14-D0014A-simple" |
| 87 | title = "SOIC-14 (D0014A), simple" |
| 88 | params = { package = "D0014A", detail = "simple" } |
| 89 | aliases = ["SOIC-14 simple"] |
| 90 | standard = "TI package outline" |
| 91 |
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.
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 | # Small-outline package |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | ## Source |
| 6 | |
| 7 | TI package outlines at `https://www.ti.com/lit/pdf/<document>`: |
| 8 | |
| 9 | | Outline | Package | Document | Drawing | |
| 10 | |---|---|---|---| |
| 11 | | D0014A | SOIC-14 | mpds177 | 4220718/A 09/2016 | |
| 12 | | D0016A | SOIC-16 | mpds43 | 4214828/B 08/2021 | |
| 13 | | DW0020A | SOIC-20, wide | mpds173 | 4220724/A 05/2016 | |
| 14 | | DB0016A | SSOP-16 | mpds507 | 4220763/A 05/2022 | |
| 15 | | DB0020A | SSOP-20 | mpds508 | 4214851/B 08/2019 | |
| 16 | | DB0028A | SSOP-28 | mpds510 | 4214853/B 03/2018 | |
| 17 | | PW0008A | TSSOP-8 | mpds568 | 4221848/A 02/2015 | |
| 18 | | DGG0048A | TSSOP-48 | mpds583 | 4214859/B 11/2020 | |
| 19 | | DGG0056A | TSSOP-56 | mpds570 | 4222167/A 07/2015 | |
| 20 | |
| 21 | 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. |
| 22 | |
| 23 | **Proportions, for looks only:** the gull wing's bend heights and the pin-1 mark. Lead thickness is the outlines' 0.15 reference. |
| 24 | |
| 25 | 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`. |
| 26 |
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 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.
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.
TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.
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.
Small-outline transistor packages by TI outline: SOT-23, thin SOT-23-5/6/8, SC-70-3/6, SOT-553 and SOT-563.
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.