landpattern module#
NFVI1369 BGA land pattern for the AMD Versal Premium VP1002.
- Ground truth
AM013 “Versal Adaptive SoC Packaging and Pinouts”, a living document at a stable URL. Cite by caption, not by number — the figure and table numbers move between editions, and a stale number still resolves, to a different package’s diagram, which looks entirely plausible. The captions below are stable; see
AM013_MECHANICAL_FIGUREandAM013_LAND_TABLEfor the edition each number below was read from.The figure captioned “Package Dimensions for NFVI1369 (VP1002 and VP1052)” — body D/E = 35.00 BASIC, overall height A = 3.43/3.63/3.83, ball matrix M = 37, ball pitch e = 0.92 BASIC, ball array extent D1/E1 = 33.12 BASIC (= 36 x 0.92), physical ball diameter b = 0.50/0.64/0.70.
The table captioned “BGA Package Design Rules” — for 0.92 mm pitch the maximum PCB solder land (L) diameter is 0.51 mm (NSMD), with a 0.61 mm solder-mask opening.
- What
ball_diametermeans here The jitxlib BGA generator’s
ball_diameterargument sets the copper land diameter of the PCB pad, not the physical solder-ball size. We therefore pass the design-rule table’s 0.51 mm land, not the mechanical drawing’s 0.64 mm nominal ball – the two sit near each other in the document and only one of them is a PCB dimension. Solder mask and paste followSMDPadConfigdefaults (mask expansion comes from the substrate’s registration constraints at build time; AM013’s 0.61 mm mask-opening target is noted for real boards).- Framework boundary
VersalBGA.get_padis the public(row, column) -> Padadapter over the framework-internal_get_pad, followingjitxexamples.demos.si_bga_optimization.generic_bga. Rows are zero-indexed in BGA letter order (A=0 … AU=36, skipping I/O/Q/S/X/Z); columns are zero-indexed too, matching the generated coordinates (A1 =get_pad(0, 0)); the framework’s 1-based column offset lives inside the adapter.
- class PackageSpec(code, num_rows, num_cols, pitch, land_diameter, body_size, height_min, height_max)[source]#
Bases:
objectOne Versal package option, as read from AM013.
- Parameters:
- class VersalBGA(*args, **kwargs)[source]#
Bases:
BGAStock BGA generator plus a public pad-lookup adapter.
- get_pad(row, column)[source]#
Public
(row, column) -> Padlookup, both zero-indexed.Takes the same coordinates the generated module carries, so ball “A1” is
get_pad(0, 0). The framework numbers columns from 1; that+ 1lives here and nowhere else, which is the point of the adapter — a caller-side conversion would put the same off-by-one at every call site. Also wraps the framework-internal_get_padso design code stays clear of leading-underscore access and of the numbering mixin’s row-letter attribute layout.
- make_landpattern(spec=PackageSpec(code='nfvi1369', num_rows=37, num_cols=37, pitch=0.92, land_diameter=0.51, body_size=35.0, height_min=3.43, height_max=3.83))[source]#
Build the land pattern for a full-grid Versal BGA package.
- Return type:
- Parameters:
spec (PackageSpec)