jsl/landpatterns/BGA/pads¶
Package name: jsl/landpatterns/BGA/pads
Summary¶
Data Types¶
BGAPadType¶
BGA Pad Types - SMD vs NSMD
Functions¶
Function | Description |
---|---|
ipc-bga-copper | Compute the IPC recommended copper pad adjustment for BGAs |
PadConfig¶
BGA Pad Configuration
Functions¶
Function | Description |
---|---|
build-bga-pad | BGA Pad Builder |
General Definitions¶
Function | Description |
---|---|
PadConfig-R | Construct a PadConfig object - Radial Reference |
PadConfig-D | Construct a PadConfig object - Diameter Reference |
Definitions¶
BGAPadType¶
BGA Pad Types - SMD vs NSMD
public defenum BGAPadType <: Equalable & Hashable
-
SolderMaskDefined
-
NonSolderMaskDefined
In this library, we use SolderMaskDefined
vs NonSolderMaskDefined
to distinguish between the typical pad types used in BGA.
These are sometimes referred to as Non-Collapsible
and Collapsible
,
respectively.
Functions¶
ipc-bga-copper¶
Compute the IPC recommended copper pad adjustment for BGAs
public defn ipc-bga-copper (pad-type:BGAPadType -- density-level:DensityLevel = ?) -> Percentage
pad-type: BGAPadType
- The type of pad technology to be used - eitherSolderMaskDefined
orNonSolderMaskDefined
.density-level: DensityLevel
- Indication of board density and determines whether minimum, nominal, and maximum material conditions are used.- Returns
Percentage
This function will generate a Percentage
value that indicates
the level of pad expansion or shrinkage that is recommended
in IPC7351.
These values really only make sense for circular or square
pads where a percentage can be applied equally in all directions. For
Capsule
or Rectangle
pad shapes, these values don't really
apply very well because we don't have tools that ratiometrically
expand or contract arbitrary shapes.
References¶
- https://www.pcblibraries.com/forum/bga-ball-and-ball-pad-on-pcb-can-be-accepted_topic3177.html
PadConfig¶
BGA Pad Configuration
public defstruct PadConfig :
copper-adj: Double|Percentage
mask-adj: Double|Percentage
paste-adj: Double|Percentage|PasteMaskStyle
-
copper-adj: Double|Percentage
- Copper Pad Size Adjustment The copper pad for a BGA package will depend on whether it is being used inNonSolderMaskDefined
orSolderMaskDefined
mode. Typically, in NSMD mode the pad size is reduced from the total ball diameter between 15-25%. In SMD mode, the pad size is typically enlarged over the ball diameter by between 5-15%.This parameter allows the user to adjust the copper pad size relative to the originating shape.
-
mask-adj: Double|Percentage
- Soldermask Opening Adjustment The typical soldermask opening for a BGA pad is a 1:1 with the copper pad. Depending on BGApad-type
, the user may want to shrink or enlarge the soldermask opening.The
mask-adj
is a parameter for shrinking or enlarging the soldermask opening relative to the originating BGA pad shape. -
paste-adj: Double|Percentage|PasteMaskStyle
- Paste Layer Adjustment This value is similar to the otheradj
parameters - it allows the user to enlarge or shrink the paste application for each pad relative to the originating shape.NominalPasteMask
NominalPasteMask
indicates that the paste mask opening should be smaller of:- 1:1 with the copper pad
- 1:1 with the soldermask opening
This allows soldermask defined pads to be created without the pastemask spilling on to the soldermask.
NoPasteMask
If this value is
NoPasteMask
- then no paste application will be generated for the effected pads.
This type is used to modulate the features of each BGA pad based on the desired physical characteristics of the land pattern.
The parameters of this type are applied to an arbitrary shape via the BGA-PadPlanner interface. This configuration can apply to any shape - but it is most typically applied to circular pads.
The copper, soldermask, and paste layers can be modulated
with either absolute values in mm or relative values as
a Percentage
.
If the adj
value is positive then the copper/soldermask/paste shape is
increased (inflated) relative to the originating shape.
If the adj
value is negative then the copper/soldermask/paste shape is
decreased (shrunk) relative to the originating shape.
Absolute values are applied radially. So if the originating shape is
a circle of diameter 1.0 mm and the adj
value is 0.1, then the resulting
shape will be a circle with diameter 1.2 mm.
Relative values work best with square or circular pads where the X and Y axis are the same. The relative expansion or contraction is computed by taking the bounding rectangle of the presented shape. We then either expand or shrink by a relative value compared to the smaller of the width (X) or the height (Y). This guarantees that for convex the shapes, the shape will never become invalid (ie, zero area or multi-part).
If you are constructing a concave pad shape, we suggest that you
don't use Percentage
values for the adjustment values. It is
difficult to get this to behave in a reasonable way without causing
invalid geometry.
As an example, if the originating shape is a circle with diameter 1.0 and
the adj = (- 3 %)
, then the new shape will be shrunk by 3% radially,
resulting in a circle with a diameter of 0.94 mm.
A value of 0.0
for an adj
parameter would indicate the
copper/soldermask/paste shape is 1:1 with the originating shape.
Functions¶
build-bga-pad¶
BGA Pad Builder
public defn build-bga-pad (ball:Shape, config:PadConfig)
ball: Shape
- Originating Shape for the pad. This is typically a circular projection of the ball diameter of the BGA. This is the pad shape that results from a 1:1 pad to ball diameter (ie zero adjustments)config: PadConfig
- Configuration for generating the BGA pad.
This function uses a closure to define a pcb-pad
for a BGA pad.
The adjustment parameters from PadConfig are designed to
modulate the size of those features from the ball
shape baseline.
Example¶
val cfg = PadConfig((5 %), (-1 %))
val ball = Circle(to-radius $ 1.0) ; 1mm Diameter
pcb-landpattern bga :
pad p[1] : build-bga-pad(ball, cfg) at loc(0.0, 0.0)
- This results in a copper pad that is 1.1mm in diameter and a soldermask opening that 0.98mm in diameter.
General Definitions¶
PadConfig-R¶
Construct a PadConfig
object - Radial Reference
public defn PadConfig-R ( -- copper-R-adj:Double|Percentage = ?, mask-R-adj:Double|Percentage = ?, paste-R-adj:Double|Percentage|PasteMaskStyle = ?)
copper-R-adj: Double|Percentage
- Copper adjustment value relative to the radius of the BGA ball lead. The default is 0.0 which means that the copper pad radius will be 1:1 with the ball radius.mask-R-adj: Double|Percentage
- Soldermask Opening adjustment value relative to the radius of the BGA ball lead. The default is the same as thecopper-R-adj
value. This maintains a 1:1 relationship with the copper pad size by default.paste-R-adj: Double|Percentage|PasteMaskStyle
- Pastemask Opening adjustment value relative to the radius of the BGA ball lead. The default value isNominalPasteMask
which means that the paste mask opening will be the smaller of the copper pad size or the soldermask opening size. A value of0.0
means that the paste mask radius is 1:1 with the radius of the BGA ball.
These PadConfig objects are utilities when working with circular pads.
PadConfig-D¶
Construct a PadConfig
object - Diameter Reference
public defn PadConfig-D ( -- copper-D-adj:Double|Percentage = ?, mask-D-adj:Double|Percentage = ?, paste-D-adj:Double|Percentage|PasteMaskStyle = ?)
copper-D-adj: Double|Percentage
- Copper adjustment value relative to the diameter of the BGA ball lead. The default is 0.0 which means that the copper pad will be 1:1 with the ball diameter.mask-D-adj: Double|Percentage
- Soldermask Opening adjustment value relative to the diameter of the BGA ball lead. The default is the same as thecopper-D-adj
value. This maintains a 1:1 relationship with the copper pad size by default.paste-D-adj: Double|Percentage|PasteMaskStyle
- Paste Application adjustment value relative to the diameter of the BGA ball lead. The default value isNominalPasteMask
which means that the paste mask opening will be the smaller of the copper pad size or the soldermask opening size. A value of0.0
means that the paste mask diameter is 1:1 with the diameter of the BGA ball.
These PadConfig objects are utilities when working with circular pads.
Related Packages¶
Forwarded by packages: jsl/landpatterns/BGA, jsl/landpatterns/generators, jsl/landpatterns