qfp module#

The QFP Landpattern Generator#

QFP (Quad Flat Package) is a surface-mount IC package with leads extending from all four sides. This module provides generators for creating QFP landpatterns with customizable lead configurations.

The QFP landpattern has three entry points:

  • QFP: Complete generator with A1 numbering (pads start at .p[1] in top-left, counter-clockwise)

  • QFPDecorated: With silkscreen but no numbering scheme

  • QFPBase: Basic pads only, no decorations

    >>> from jitx import Component, Port
    >>> from jitxlib.landpatterns.generators.qfp import QFP, QFPLead
    >>> from jitxlib.landpatterns.leads import LeadProfile
    >>> from jitxlib.landpatterns.package import RectanglePackage
    >>> from jitx.toleranced import Toleranced as T
    >>>
    >>> class MyQFP(Component):
    ...     # Define ports for a 32-pin QFP (8 per side)
    ...     pins = [Port() for _ in range(32)]
    ...     def __init__(self):
    ...         self.landpattern = (
    ...             QFP(num_leads=32)
    ...             .package_body(RectanglePackage(
    ...                 width=T(7.0, 0.1),
    ...                 length=T(7.0, 0.1),
    ...                 height=T(1.4, 0.1)
    ...             ))
    ...             .lead_profile(LeadProfile(
    ...                 span=T(9.0, 0.2),
    ...                 pitch=0.8,
    ...                 type=QFPLead(length=T(0.6, 0.15), width=T(0.37, 0.08)),
    ...             ))
    ...         )
    

See also

qfn: Similar package without leads soic: Dual-row alternative

class QFPLead(length, width, lead_type=LeadProtrusion(name='BigGullWingLeads', fillets={<DensityLevel.A: 'A'>: LeadFillets(toe=0.55, heel=0.45, side=0.05, courtyard_excess=0.5), <DensityLevel.B: 'B'>: LeadFillets(toe = 0.35, heel=0.35, side=0.03, courtyard_excess=0.25), <DensityLevel.C: 'C'>: LeadFillets(toe = 0.15, heel=0.25, side=0.01, courtyard_excess=0.1)}))[source]#

Bases: SMDLead

QFP Lead

This class specifies the default lead for QFP landpatterns.

Parameters:
lead_type: LeadProtrusion = LeadProtrusion(name='BigGullWingLeads', fillets={<DensityLevel.A: 'A'>: LeadFillets(toe=0.55, heel=0.45, side=0.05, courtyard_excess=0.5), <DensityLevel.B: 'B'>: LeadFillets(toe=0.35, heel=0.35, side=0.03, courtyard_excess=0.25), <DensityLevel.C: 'C'>: LeadFillets(toe=0.15, heel=0.25, side=0.01, courtyard_excess=0.1)})#

Lead Protrusion Type

The default value for QFP leads is BigGullWingLeads.

class QFPBase(*args, **kwargs)[source]#

Bases: CornerPadChamfer, ThermalPadGeneratorMixin, QuadColumn

QFP Landpattern Generator Base

class QFPDecorated(*args, **kwargs)[source]#

Bases: SilkscreenOutline, Pad1Marker, ReferenceDesignatorMixin, ExcessCourtyard, QFPBase

Decorated QFP Landpattern Generator, with no pad numbering scheme.

class QFP(*args, **kwargs)[source]#

Bases: A1, LinearNumbering, QFPDecorated

QFP Landpattern Generator

Construct it with num_leads (a multiple of 4, split evenly over the four sides) or with num_rows, the leads per side: one number for all sides, (left_right, top_bottom), or (left, bottom, right, top) for a part with a different count on each side. Pads are numbered from p[1] at the top of the left side, counter-clockwise: down the left side, along the bottom, up the right side and back along the top.

The leads are set with .lead_profile(...) and a LeadProfile whose type is a QFPLead. One profile applies to all four sides. When the span differs between the two pairs of sides, pass two: .lead_profile(x_profile, y_profile), where x_profile is for the left and right sides (span measured along X) and y_profile for the top and bottom sides (span measured along Y).

>>> lp = QFP(num_rows=(12, 10, 12, 10)).lead_profile(
...     LeadProfile(span=T(12.0, 0.2), pitch=0.5, type=QFPLead(T(0.6, 0.15), T(0.22, 0.05))),
...     LeadProfile(span=T(10.0, 0.2), pitch=0.5, type=QFPLead(T(0.6, 0.15), T(0.22, 0.05))),
... )