sop module#

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

Bases: SMDLead

SOP Lead

This class specifies the default lead for SOP landpatterns.

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

Lead Protrusion Type

The default value for SOP leads is SmallGullWingLeads.

class SOPBase(*, num_rows=None, num_leads=None)[source]#

Bases: ThermalPadGeneratorMixin, PackageBodyMixin, DualColumn

Small Outline Package (SOP) Landpattern

This class generates a full SOP landpattern. By default, it creates a soldermask-bounds-based silkscreen outline, a circular pad 1 marker, and a courtyard based on the bounds of all features buffered by an excess amount. It can also optionally generate a thermal pad.

Parameters:
  • num_rows (int | None)

  • num_leads (int | None)

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

Bases: SilkscreenOutline, Pad1Marker, ReferenceDesignatorMixin, ExcessCourtyard, SOPBase

Decorated SOP Landpattern Generator, with no pad numbering scheme.

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

Bases: LinearNumbering, SOPDecorated

Small Outline Package (SOP) Landpattern

This class generates a full SOP landpattern. By default, it creates a soldermask-bounds-based silkscreen outline, a circular pad 1 marker, and a courtyard based on the bounds of all features buffered by an excess amount. It can also optionally generate a thermal pad.

Note that this class will use LinearNumbering for the pad numbering. To use a different numbering scheme, create a subclass of SOPBase and inherit a different one.

>>> class MySOP(Component):
...     # A 14-lead SOP
...     landpattern = (
...         SOP(
...             num_leads=14,
...         )
...         .lead_profile(
...             LeadProfile(
...                 span=Toleranced.min_max(6.2, 6.6),
...                 pitch=0.65,
...                 type=SOPLead(
...                     length=Toleranced.min_max(0.5, 0.75),
...                     width=Toleranced.min_max(0.19, 0.3),
...                 ),
...             ),
...         )
...         .package_body(
...             RectanglePackage(
...                 width=Toleranced.min_max(4.3, 4.5),
...                 length=Toleranced(5.0, 0.1),
...                 height=Toleranced.min_max(1.0, 1.2),
...             )
...         )
...     )
>>> MySOP().landpattern.p[1]
SMDPad