Skip to content

Commit 53af4e7

Browse files
committed
feat(packages): add Europractice quad packages to PACKAGE_DEFINITIONS
Expand PACKAGE_DEFINITIONS from 4 to 21 entries covering quad EP packages: PGA84/100s/100l/120/208, QFP64/120/160/208, QFN32-100. qfn16/qfn24 are below QuadPackageDef's 8-pins/side minimum (the bringup power-pin allocator needs height // 2 > 3); pga256/cc/dil/soic are documented as TODO in the backend's ep_packages.json. EP-specific cell names, layer conventions and pin_map strings live in chipflow-backend's packaging_klayout plugin so this library stays vendor-agnostic.
1 parent 2710299 commit 53af4e7

1 file changed

Lines changed: 38 additions & 5 deletions

File tree

chipflow/packages.py

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,45 @@
77

88
from .packaging import QuadPackageDef, BareDiePackageDef, GAPackageDef, Package, OpenframePackageDef
99

10-
# Add any new package types to both PACKAGE_DEFINITIONS and the PackageDef union
10+
# Add any new package types to both PACKAGE_DEFINITIONS and the PackageDef union.
11+
# Europractice quad packages use the QuadPackageDef pin numbering (CCW from
12+
# top-left) which matches EP's GDS labels. EP-specific cell names, layer
13+
# conventions and pin_map strings live in chipflow-backend's packaging_klayout
14+
# plugin (data/ep_packages.json), keeping this library vendor-agnostic.
1115
PACKAGE_DEFINITIONS = {
12-
"pga144": QuadPackageDef(name="pga144", width=36, height=36),
13-
"cf20": BareDiePackageDef(name="cf20", width=7, height=3),
14-
"bga144": GAPackageDef(name="bga144", width=36, height=36),
15-
"openframe": OpenframePackageDef()
16+
# Bare die / generic
17+
"cf20": BareDiePackageDef(name="cf20", width=7, height=3),
18+
"openframe": OpenframePackageDef(),
19+
20+
# PGA — perimeter pin grid arrays
21+
"pga84": QuadPackageDef(name="pga84", width=21, height=21),
22+
"pga100s": QuadPackageDef(name="pga100s", width=25, height=25),
23+
"pga100l": QuadPackageDef(name="pga100l", width=25, height=25),
24+
"pga120": QuadPackageDef(name="pga120", width=30, height=30),
25+
"pga144": QuadPackageDef(name="pga144", width=36, height=36),
26+
"pga208": QuadPackageDef(name="pga208", width=52, height=52),
27+
# pga256 — staggered double-row, deferred (see ep_packages.json _todo_v2_)
28+
29+
# QFP / CERQUAD
30+
"qfp64": QuadPackageDef(name="qfp64", width=16, height=16),
31+
"qfp120": QuadPackageDef(name="qfp120", width=30, height=30),
32+
"qfp160": QuadPackageDef(name="qfp160", width=40, height=40),
33+
"qfp208": QuadPackageDef(name="qfp208", width=52, height=52),
34+
35+
# QFN — QuadPackageDef requires height // 2 > 3 (min 8 pins/side) for its
36+
# bringup power-pin allocation, so qfn16 and qfn24 are intentionally absent.
37+
# Their EP descriptors remain in ep_packages.json for documentation.
38+
"qfn32": QuadPackageDef(name="qfn32", width=8, height=8),
39+
"qfn40_6x6": QuadPackageDef(name="qfn40_6x6", width=10, height=10),
40+
"qfn48": QuadPackageDef(name="qfn48", width=12, height=12),
41+
"qfn56": QuadPackageDef(name="qfn56", width=14, height=14),
42+
"qfn64_9x9": QuadPackageDef(name="qfn64_9x9", width=16, height=16),
43+
"qfn80_12x12": QuadPackageDef(name="qfn80_12x12", width=20, height=20),
44+
"qfn88_10x10": QuadPackageDef(name="qfn88_10x10", width=22, height=22),
45+
"qfn100_12x12": QuadPackageDef(name="qfn100_12x12", width=25, height=25),
46+
47+
# BGA — ball grid array (different geometry class)
48+
"bga144": GAPackageDef(name="bga144", width=36, height=36),
1649
}
1750

1851
Package.model_rebuild()

0 commit comments

Comments
 (0)