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.
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.
| 1 | """Quad flat no-lead IC package (VQFN) by TI package outline. Centred on the origin with the seating plane on the XY plane: terminals along all four sides, |
| 2 | pin 1 at the +Y end of the -X side and counting counter-clockwise seen from above, and the exposed thermal pad in the middle. Dimensions from the TI outline |
| 3 | named by `package`; see the README.""" |
| 4 | from steve import Model |
| 5 | |
| 6 | package = "RGE0024H" # TI package outline |
| 7 | detail = "full" # full: body, pin-1 mark, terminals and thermal pad; simple: the body only |
| 8 | |
| 9 | # outline: (kind, pins, pitch, body size, height max, standoff, terminal length, terminal width, thermal pad size, terminal thickness), bodies and thermal |
| 10 | # pads square, ranges as (min, max), single values as drawn (thickness is the outline's reference), all in mm. |
| 11 | # TI package outlines in TI datasheets, https://www.ti.com/lit/ds/symlink/<part>.pdf: RGE0024H in BQ24166 (SLUSAP4B, 4219016/A 08/2017), RGZ0048A and |
| 12 | # RHB0032E in CC2640R2F (SWRS204C, 4219044/D 02/2022 and 4223442/B 08/2019), RGC0064B in MSP430F5529 (SLAS590P, 4219010/A 10/2018), RGW0020A in TPS7A47 |
| 13 | # (SBVS204G, 4219039/A 06/2018). Thermal pads are drawn as nominal +/-0.1. RGC0064B's height is 0.8 to 1.0; the others give 1 maximum. |
| 14 | OUTLINES = { |
| 15 | "RGW0020A": ("VQFN", 20, 0.65, (4.9, 5.1), 1.0, (0.0, 0.05), (0.45, 0.65), (0.26, 0.36), 3.15, 0.1), |
| 16 | "RGE0024H": ("VQFN", 24, 0.5, (3.9, 4.1), 1.0, (0.0, 0.05), (0.28, 0.48), (0.18, 0.30), 2.7, 0.2), |
| 17 | "RHB0032E": ("VQFN", 32, 0.5, (4.9, 5.1), 1.0, (0.0, 0.05), (0.3, 0.5), (0.2, 0.3), 3.45, 0.2), |
| 18 | "RGZ0048A": ("VQFN", 48, 0.5, (6.9, 7.1), 1.0, (0.0, 0.05), (0.3, 0.5), (0.18, 0.30), 5.15, 0.2), |
| 19 | "RGC0064B": ("VQFN", 64, 0.5, (8.85, 9.15), 1.0, (0.0, 0.05), (0.3, 0.5), (0.18, 0.30), 4.25, 0.2), |
| 20 | } |
| 21 | # The pin-1 mark is a proportion, for looks. |
| 22 | |
| 23 | |
| 24 | def mid(pair): |
| 25 | return (pair[0] + pair[1]) / 2 |
| 26 | |
| 27 | |
| 28 | kind, pins, pitch, size, top, standoff, term_l, term_w, pad, thick = OUTLINES[package] |
| 29 | size, standoff, term_l, term_w = mid(size), mid(standoff), mid(term_l), mid(term_w) |
| 30 | per_side = pins // 4 |
| 31 | first = -(per_side - 1) * pitch / 2 |
| 32 | half = size / 2 |
| 33 | model = Model() |
| 34 | model.plane("body_plane", on="XY", offset=standoff, name="Body") |
| 35 | with model.sketch("body_sketch", on="body_plane", name="Body") as sk: |
| 36 | sk.rect("body_rect", (-half, -half), (half, half)) |
| 37 | model.extrude("body", "body_sketch", distance=top - standoff, name="Body") |
| 38 | if detail == "full": |
| 39 | model.plane("top_plane", on="XY", offset=top, name="Top") |
| 40 | with model.sketch("mark_sketch", on="top_plane", name="Pin-1 mark") as sk: |
| 41 | sk.circle("mark_circle", (-half + 0.1 * size, half - 0.1 * size), 0.04 * size) |
| 42 | model.extrude("mark", "mark_sketch", distance=-0.05, op="cut", name="Pin-1 mark") |
| 43 | with model.sketch("terms_x", on="XY", name="Terminals") as sk: |
| 44 | for i in range(per_side): |
| 45 | y = first + i * pitch |
| 46 | sk.rect(f"term_west_{i}", (-half, y - term_w / 2), (-half + term_l, y + term_w / 2)) |
| 47 | sk.rect(f"term_east_{i}", (half - term_l, y - term_w / 2), (half, y + term_w / 2)) |
| 48 | model.extrude("terms_x_body", "terms_x", distance=thick, name="Terminals") |
| 49 | with model.sketch("terms_y", on="XY", name="Terminals") as sk: |
| 50 | for i in range(per_side): |
| 51 | x = first + i * pitch |
| 52 | sk.rect(f"term_south_{i}", (x - term_w / 2, -half), (x + term_w / 2, -half + term_l)) |
| 53 | sk.rect(f"term_north_{i}", (x - term_w / 2, half - term_l), (x + term_w / 2, half)) |
| 54 | model.extrude("terms_y_body", "terms_y", distance=thick, name="Terminals") |
| 55 | with model.sketch("pad_sketch", on="XY", name="Thermal pad") as sk: |
| 56 | sk.rect("pad_rect", (-pad / 2, -pad / 2), (pad / 2, pad / 2)) |
| 57 | model.extrude("pad", "pad_sketch", distance=thick, name="Thermal pad") |
| 58 | model.material("pla", color="#26282b") |
| 59 | result = model.result() |
| 60 |
| 1 | name = "steve/qfn-package" |
| 2 | version = "1.0.0" |
| 3 | runtime = "steve" |
| 4 | license = "MIT" |
| 5 | summary = "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." |
| 6 | description = """Quad flat no-lead IC packages for board layouts: body, pin-1 mark, terminals on four sides and exposed thermal pad, each from a named TI package outline. See the README.""" |
| 7 | tags = ["ic-package", "qfn", "vqfn", "smd", "electronics"] |
| 8 | |
| 9 | [parameters.package] |
| 10 | type = "choice" |
| 11 | default = "RGE0024H" |
| 12 | choices = ["RGW0020A", "RGE0024H", "RHB0032E", "RGZ0048A", "RGC0064B"] |
| 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, terminals and thermal pad. simple: the body only." |
| 21 | |
| 22 | [[presets]] |
| 23 | id = "VQFN-20-RGW0020A" |
| 24 | title = "VQFN-20 (RGW0020A), 5x5 mm, 0.65 mm pitch" |
| 25 | params = { package = "RGW0020A" } |
| 26 | aliases = ["VQFN-20", "VQFN20", "QFN-20", "20 pin VQFN", "RGW0020A"] |
| 27 | standard = "TI package outline" |
| 28 | |
| 29 | [[presets]] |
| 30 | id = "VQFN-24-RGE0024H" |
| 31 | title = "VQFN-24 (RGE0024H), 4x4 mm, 0.5 mm pitch" |
| 32 | params = { package = "RGE0024H" } |
| 33 | aliases = ["VQFN-24", "VQFN24", "QFN-24", "24 pin VQFN", "RGE0024H", "VQFN-24 (RGE0024H), 4x4 mm, 0.5 mm pitch"] |
| 34 | standard = "TI package outline" |
| 35 | |
| 36 | [[presets]] |
| 37 | id = "VQFN-32-RHB0032E" |
| 38 | title = "VQFN-32 (RHB0032E), 5x5 mm, 0.5 mm pitch" |
| 39 | params = { package = "RHB0032E" } |
| 40 | aliases = ["VQFN-32", "VQFN32", "QFN-32", "32 pin VQFN", "RHB0032E", "VQFN-32 (RHB0032E), 5x5 mm, 0.5 mm pitch"] |
| 41 | standard = "TI package outline" |
| 42 | |
| 43 | [[presets]] |
| 44 | id = "VQFN-48-RGZ0048A" |
| 45 | title = "VQFN-48 (RGZ0048A), 7x7 mm, 0.5 mm pitch" |
| 46 | params = { package = "RGZ0048A" } |
| 47 | aliases = ["VQFN-48", "VQFN48", "QFN-48", "48 pin VQFN", "RGZ0048A", "VQFN-48 (RGZ0048A), 7x7 mm, 0.5 mm pitch"] |
| 48 | standard = "TI package outline" |
| 49 | |
| 50 | [[presets]] |
| 51 | id = "VQFN-64-RGC0064B" |
| 52 | title = "VQFN-64 (RGC0064B), 9x9 mm, 0.5 mm pitch" |
| 53 | params = { package = "RGC0064B" } |
| 54 | aliases = ["VQFN-64", "VQFN64", "QFN-64", "64 pin VQFN", "RGC0064B"] |
| 55 | standard = "TI package outline" |
| 56 | |
| 57 | [[presets]] |
| 58 | id = "VQFN-24-RGE0024H-simple" |
| 59 | title = "VQFN-24 (RGE0024H), simple" |
| 60 | params = { package = "RGE0024H", detail = "simple" } |
| 61 | aliases = ["VQFN-24 simple"] |
| 62 | standard = "TI package outline" |
| 63 |
Quad flat no-lead IC packages (VQFN), each modelled from a named TI package outline: the body, the terminals along all four sides and the exposed thermal pad underneath. The package is centred on the origin with the seating plane on the XY plane. Pin 1 is at the +Y end of the -X side, and the pins count counter-clockwise seen from above.
TI package outlines, printed in the TI datasheets at https://www.ti.com/lit/ds/symlink/<part>.pdf:
| Outline | Package | Body | Pitch | Thermal pad | Datasheet | Drawing |
|---|---|---|---|---|---|---|
| RGW0020A | VQFN-20 | 5 x 5 mm | 0.65 mm | 3.15 mm | TPS7A47, SBVS204G | 4219039/A 06/2018 |
| RGE0024H | VQFN-24 | 4 x 4 mm | 0.5 mm | 2.7 mm | BQ24166, SLUSAP4B | 4219016/A 08/2017 |
| RHB0032E | VQFN-32 | 5 x 5 mm | 0.5 mm | 3.45 mm | CC2640R2F, SWRS204C | 4223442/B 08/2019 |
| RGZ0048A | VQFN-48 | 7 x 7 mm | 0.5 mm | 5.15 mm | CC2640R2F, SWRS204C | 4219044/D 02/2022 |
| RGC0064B | VQFN-64 | 9 x 9 mm | 0.5 mm | 4.25 mm | MSP430F5529, SLAS590P | 4219010/A 10/2018 |
Each outline gives body size, maximum height, standoff, terminal length and width, and the thermal pad's size. The model uses the middle of each range, and the height is the 1 mm maximum, so read it as an envelope. The terminal thickness is the outline's reference value.
The thermal pad is the TI outline's. A footprint whose name gives a pad more than 0.05 mm different from it isn't this part, even when the body and pitch match; within 0.05 mm counts as rounding. Every model matched here names the outline's pad exactly. Thin and extra-thin QFNs (TQFN, WQFN) and other pad sizes aren't matched.
Proportions, for looks only: the pin-1 mark on top. The thermal pad's chamfered pin-1 corner isn't modelled.
Other QFN sizes aren't here yet, and DFN/SON packages are the son-package part; see COVERAGE.md.
| 1 | # Quad flat no-lead package |
| 2 | |
| 3 | Quad flat no-lead IC packages (VQFN), each modelled from a named TI package outline: the body, the terminals along all four sides and the exposed thermal pad underneath. The package is centred on the origin with the seating plane on the XY plane. Pin 1 is at the +Y end of the -X side, and the pins count counter-clockwise seen from above. |
| 4 | |
| 5 | ## Source |
| 6 | |
| 7 | TI package outlines, printed in the TI datasheets at `https://www.ti.com/lit/ds/symlink/<part>.pdf`: |
| 8 | |
| 9 | | Outline | Package | Body | Pitch | Thermal pad | Datasheet | Drawing | |
| 10 | |---|---|---|---|---|---|---| |
| 11 | | RGW0020A | VQFN-20 | 5 x 5 mm | 0.65 mm | 3.15 mm | TPS7A47, SBVS204G | 4219039/A 06/2018 | |
| 12 | | RGE0024H | VQFN-24 | 4 x 4 mm | 0.5 mm | 2.7 mm | BQ24166, SLUSAP4B | 4219016/A 08/2017 | |
| 13 | | RHB0032E | VQFN-32 | 5 x 5 mm | 0.5 mm | 3.45 mm | CC2640R2F, SWRS204C | 4223442/B 08/2019 | |
| 14 | | RGZ0048A | VQFN-48 | 7 x 7 mm | 0.5 mm | 5.15 mm | CC2640R2F, SWRS204C | 4219044/D 02/2022 | |
| 15 | | RGC0064B | VQFN-64 | 9 x 9 mm | 0.5 mm | 4.25 mm | MSP430F5529, SLAS590P | 4219010/A 10/2018 | |
| 16 | |
| 17 | Each outline gives body size, maximum height, standoff, terminal length and width, and the thermal pad's size. The model uses the middle of each range, and the height is the 1 mm maximum, so read it as an envelope. The terminal thickness is the outline's reference value. |
| 18 | |
| 19 | The thermal pad is the TI outline's. A footprint whose name gives a pad more than 0.05 mm different from it isn't this part, even when the body and pitch match; within 0.05 mm counts as rounding. Every model matched here names the outline's pad exactly. Thin and extra-thin QFNs (TQFN, WQFN) and other pad sizes aren't matched. |
| 20 | |
| 21 | **Proportions, for looks only:** the pin-1 mark on top. The thermal pad's chamfered pin-1 corner isn't modelled. |
| 22 | |
| 23 | Other QFN sizes aren't here yet, and DFN/SON packages are the `son-package` part; see `COVERAGE.md`. |
| 24 |
Quad flat no-lead IC packages for board layouts: body, pin-1 mark, terminals on four sides and exposed thermal pad, each from a named TI package outline. See the README.
Quad flat no-lead IC packages (VQFN), each modelled from a named TI package outline: the body, the terminals along all four sides and the exposed thermal pad underneath. The package is centred on the origin with the seating plane on the XY plane. Pin 1 is at the +Y end of the -X side, and the pins count counter-clockwise seen from above.
TI package outlines, printed in the TI datasheets at https://www.ti.com/lit/ds/symlink/<part>.pdf:
| Outline | Package | Body | Pitch | Thermal pad | Datasheet | Drawing |
|---|---|---|---|---|---|---|
| RGW0020A | VQFN-20 | 5 x 5 mm | 0.65 mm | 3.15 mm | TPS7A47, SBVS204G | 4219039/A 06/2018 |
| RGE0024H | VQFN-24 | 4 x 4 mm | 0.5 mm | 2.7 mm | BQ24166, SLUSAP4B | 4219016/A 08/2017 |
| RHB0032E | VQFN-32 | 5 x 5 mm | 0.5 mm | 3.45 mm | CC2640R2F, SWRS204C | 4223442/B 08/2019 |
| RGZ0048A | VQFN-48 | 7 x 7 mm | 0.5 mm | 5.15 mm | CC2640R2F, SWRS204C | 4219044/D 02/2022 |
| RGC0064B | VQFN-64 | 9 x 9 mm | 0.5 mm | 4.25 mm | MSP430F5529, SLAS590P | 4219010/A 10/2018 |
Each outline gives body size, maximum height, standoff, terminal length and width, and the thermal pad's size. The model uses the middle of each range, and the height is the 1 mm maximum, so read it as an envelope. The terminal thickness is the outline's reference value.
The thermal pad is the TI outline's. A footprint whose name gives a pad more than 0.05 mm different from it isn't this part, even when the body and pitch match; within 0.05 mm counts as rounding. Every model matched here names the outline's pad exactly. Thin and extra-thin QFNs (TQFN, WQFN) and other pad sizes aren't matched.
Proportions, for looks only: the pin-1 mark on top. The thermal pad's chamfered pin-1 corner isn't modelled.
Other QFN sizes aren't here yet, and DFN/SON packages are the son-package part; see COVERAGE.md.
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.
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).