Skip to content

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 - either SolderMaskDefined or NonSolderMaskDefined.
  • 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 in NonSolderMaskDefined or SolderMaskDefined 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 BGA pad-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 other adj 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:1 with the copper pad
    2. 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 the copper-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 is NominalPasteMask which means that the paste mask opening will be the smaller of the copper pad size or the soldermask opening size. A value of 0.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 the copper-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 is NominalPasteMask which means that the paste mask opening will be the smaller of the copper pad size or the soldermask opening size. A value of 0.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