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).
TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins.
| 1 | """TSSOP package, 4.4 mm body, 0.65 mm pitch (TI PW package): 14, 16, 20 and 24 pins. Centred on the origin with the seating plane on the XY plane, pins 1 to n/2 on |
| 2 | the -Y side running +X, the others on +Y running back. Dimensions from TI's package outlines in the README.""" |
| 3 | from steve import Model |
| 4 | |
| 5 | pins = 16 # Pins |
| 6 | detail = "full" # full: body, pin-1 mark and gull-wing leads; simple: the body only |
| 7 | |
| 8 | # TI package outlines PW0014A (4220202/B 12/2023), PW0016A (4220204/B 12/2023), PW0020A (4220206/A 02/2017), PW0024A (4220208/A 02/2017), https://www.ti.com/lit/pdf/ |
| 9 | # mpds360 to mpds363; reference JEDEC MO-153. Body length (note 3) by pins: 14 and 16: 4.9 to 5.1, 20: 6.4 to 6.6, 24: 7.7 to 7.9. Body width 4.3 to 4.5 (note 4), |
| 10 | # lead tip to tip 6.2 to 6.6, height 1.2 max, standoff 0.05 to 0.15, pitch 0.65, lead width 0.17 (0.19) to 0.30, foot 0.50 to 0.75, lead thickness (0.15). |
| 11 | LENGTH = {14: (4.9, 5.1), 16: (4.9, 5.1), 20: (6.4, 6.6), 24: (7.7, 7.9)} |
| 12 | PITCH, WIDTH, SPAN, TOP, STANDOFF, LEAD_W, FOOT, LEAD_T = 0.65, 4.4, 6.4, 1.2, 0.1, 0.24, 0.625, 0.15 |
| 13 | if pins not in LENGTH: |
| 14 | raise ValueError("These outlines cover 14, 16, 20 and 24 pins.") |
| 15 | |
| 16 | per_row = pins // 2 |
| 17 | length = sum(LENGTH[pins]) / 2 |
| 18 | first = -(per_row - 1) * PITCH / 2 |
| 19 | model = Model() |
| 20 | model.plane("body_plane", on="XY", offset=STANDOFF, name="Body") |
| 21 | with model.sketch("body_sketch", on="body_plane", name="Body") as sk: |
| 22 | sk.rect("body_rect", (-length / 2, -WIDTH / 2), (length / 2, WIDTH / 2)) |
| 23 | model.extrude("body", "body_sketch", distance=TOP - STANDOFF, name="Body") |
| 24 | if detail == "full": |
| 25 | model.plane("top_plane", on="XY", offset=TOP, name="Top") |
| 26 | with model.sketch("mark_sketch", on="top_plane", name="Pin-1 mark") as sk: |
| 27 | sk.circle("mark_circle", (-length / 2 + 0.6, -WIDTH / 2 + 0.6), 0.25) |
| 28 | model.extrude("mark", "mark_sketch", distance=-0.05, op="cut", name="Pin-1 mark") |
| 29 | arm_z = (TOP + STANDOFF) / 2 # the gull wing's bend heights are proportions, for looks; foot, span, width and pitch are the outline's |
| 30 | for tag, side in (("low", -1), ("high", 1)): |
| 31 | y_out = side * SPAN / 2 |
| 32 | y_body = side * WIDTH / 2 |
| 33 | y_bend = side * (SPAN / 2 - FOOT) |
| 34 | with model.sketch(f"feet_{tag}", on="XY", name="Leads") as sk: |
| 35 | for i in range(per_row): |
| 36 | x = first + i * PITCH |
| 37 | sk.rect(f"foot_{tag}_{i}", (x - LEAD_W / 2, min(y_bend, y_out)), (x + LEAD_W / 2, max(y_bend, y_out))) |
| 38 | model.extrude(f"feet_{tag}_body", f"feet_{tag}", distance=LEAD_T, name="Leads") |
| 39 | model.plane(f"arm_plane_{tag}", on="XY", offset=arm_z, name="Leads") |
| 40 | with model.sketch(f"arms_{tag}", on=f"arm_plane_{tag}", name="Leads") as sk: |
| 41 | for i in range(per_row): |
| 42 | x = first + i * PITCH |
| 43 | 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)) |
| 44 | model.extrude(f"arms_{tag}_body", f"arms_{tag}", distance=LEAD_T, name="Leads") |
| 45 | model.plane(f"leg_plane_{tag}", on="XY", offset=0, name="Leads") |
| 46 | with model.sketch(f"legs_{tag}", on=f"leg_plane_{tag}", name="Leads") as sk: |
| 47 | for i in range(per_row): |
| 48 | x = first + i * PITCH |
| 49 | sk.rect(f"leg_{tag}_{i}", (x - LEAD_W / 2, y_bend - LEAD_T / 2), (x + LEAD_W / 2, y_bend + LEAD_T / 2)) |
| 50 | model.extrude(f"legs_{tag}_body", f"legs_{tag}", distance=arm_z + LEAD_T, name="Leads") |
| 51 | model.material("pla", color="#26282b") |
| 52 | result = model.result() |
| 53 |
| 1 | name = "steve/tssop-package" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "TSSOP package, 4.4 mm body, 0.65 mm pitch: 14, 16, 20 and 24 pins." |
| 6 | description = """A TSSOP package for board layouts: body, pin-1 mark and gull-wing leads, from TI's PW package outlines (reference JEDEC MO-153). See the README.""" |
| 7 | tags = ["ic-package", "tssop", "smd", "electronics"] |
| 8 | |
| 9 | [parameters.pins] |
| 10 | type = "choice" |
| 11 | default = 16 |
| 12 | choices = [14, 16, 20, 24] |
| 13 | label = "Pins" |
| 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 = "TSSOP-14" |
| 24 | title = "TSSOP-14, 4.4 mm body, 0.65 mm pitch" |
| 25 | params = { pins = 14 } |
| 26 | aliases = ["TSSOP14", "TSSOP 14", "14 pin TSSOP", "PW14", "TSSOP-14 4.4mm"] |
| 27 | standard = "TI PW" |
| 28 | |
| 29 | [[presets]] |
| 30 | id = "TSSOP-16" |
| 31 | title = "TSSOP-16, 4.4 mm body, 0.65 mm pitch" |
| 32 | params = { pins = 16 } |
| 33 | aliases = ["TSSOP16", "TSSOP 16", "16 pin TSSOP", "PW16", "TSSOP-16 4.4mm"] |
| 34 | standard = "TI PW" |
| 35 | |
| 36 | [[presets]] |
| 37 | id = "TSSOP-20" |
| 38 | title = "TSSOP-20, 4.4 mm body, 0.65 mm pitch" |
| 39 | params = { pins = 20 } |
| 40 | aliases = ["TSSOP20", "TSSOP 20", "20 pin TSSOP", "PW20", "TSSOP-20 4.4mm"] |
| 41 | standard = "TI PW" |
| 42 | |
| 43 | [[presets]] |
| 44 | id = "TSSOP-24" |
| 45 | title = "TSSOP-24, 4.4 mm body, 0.65 mm pitch" |
| 46 | params = { pins = 24 } |
| 47 | aliases = ["TSSOP24", "TSSOP 24", "24 pin TSSOP", "PW24", "TSSOP-24 4.4mm"] |
| 48 | standard = "TI PW" |
| 49 | |
| 50 | [[presets]] |
| 51 | id = "TSSOP-16-simple" |
| 52 | title = "TSSOP-16, simple" |
| 53 | params = { pins = 16, detail = "simple" } |
| 54 | aliases = ["TSSOP-16 simple"] |
| 55 | standard = "TI PW" |
| 56 |
A TSSOP package with a 4.4 mm body and 0.65 mm pitch, 14 to 24 pins. It 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, each referencing JEDEC MO-153:
| 14 and 16 pins | 20 pins | 24 pins | |
|---|---|---|---|
| Body length | 4.9 to 5.1 | 6.4 to 6.6 | 7.7 to 7.9 |
For every pin count:
The model uses the middle of each range. Height is the 1.2 max, so read it as an envelope.
Proportions, for looks only: the gull wing's bend heights and the pin-1 mark.
Other TSSOP widths (3, 6.1 and 8 mm), other pin counts and exposed-pad versions aren't here yet; see COVERAGE.md.
| 1 | # TSSOP package |
| 2 | |
| 3 | A TSSOP package with a 4.4 mm body and 0.65 mm pitch, 14 to 24 pins. It 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, each referencing JEDEC MO-153: |
| 8 | |
| 9 | - PW0014A (4220202/B 12/2023), <https://www.ti.com/lit/pdf/mpds360> |
| 10 | - PW0016A (4220204/B 12/2023), <https://www.ti.com/lit/pdf/mpds361> |
| 11 | - PW0020A (4220206/A 02/2017), <https://www.ti.com/lit/pdf/mpds362> |
| 12 | - PW0024A (4220208/A 02/2017), <https://www.ti.com/lit/pdf/mpds363> |
| 13 | |
| 14 | | | 14 and 16 pins | 20 pins | 24 pins | |
| 15 | |---|---|---|---| |
| 16 | | Body length | 4.9 to 5.1 | 6.4 to 6.6 | 7.7 to 7.9 | |
| 17 | |
| 18 | For every pin count: |
| 19 | |
| 20 | - body width 4.3 to 4.5, lead tip to tip 6.2 to 6.6 |
| 21 | - height 1.2 max, standoff 0.05 to 0.15 |
| 22 | - pitch 0.65 |
| 23 | - lead width 0.17 to 0.30, foot 0.50 to 0.75, lead thickness (0.15) reference |
| 24 | |
| 25 | The model uses the middle of each range. Height is the 1.2 max, so read it as an envelope. |
| 26 | |
| 27 | **Proportions, for looks only:** the gull wing's bend heights and the pin-1 mark. |
| 28 | |
| 29 | Other TSSOP widths (3, 6.1 and 8 mm), other pin counts and exposed-pad versions aren't here yet; see `COVERAGE.md`. |
| 30 |
A TSSOP package for board layouts: body, pin-1 mark and gull-wing leads, from TI's PW package outlines (reference JEDEC MO-153). See the README.
A TSSOP package with a 4.4 mm body and 0.65 mm pitch, 14 to 24 pins. It 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, each referencing JEDEC MO-153:
| 14 and 16 pins | 20 pins | 24 pins | |
|---|---|---|---|
| Body length | 4.9 to 5.1 | 6.4 to 6.6 | 7.7 to 7.9 |
For every pin count:
The model uses the middle of each range. Height is the 1.2 max, so read it as an envelope.
Proportions, for looks only: the gull wing's bend heights and the pin-1 mark.
Other TSSOP widths (3, 6.1 and 8 mm), other pin counts and exposed-pad versions aren't here yet; see COVERAGE.md.
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).
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.