Skip to content

Packages & Landpatterns

Package name: jsl/landpatterns/packages

Interface definitions for Landpatterns

This package contains the definition of some abstract types for defining the landpatterns of various components.

The goal of these definitions is to provide a consistent interface across all landpattern definitions. This promotes re-use and correctness.

All of the entities in this package use millimeters as their standard unit.

TODO - Diagram here discussing the concept for landpatterns & component packages. We should include examples of various packages and use the right nomenclature to describe things.

Summary

Package

Every component has a representation for a

Multis

Function Description
make-silkscreen Generator for creating the silkscreen of a landpattern
build-silkscreen Create silkscreen content in virtual landpattern
build-all Apply all Package builder functions
make-all Generator for applying all Package generators
make-cut-out Generator for creating cutout regions in the landpattern.
build-cut-out Create cut-out regions in a virtual landpattern
build-keep-out Create keep-out regions in a virtual landpattern
make-keep-out Generator for creating keep-out constraints for a landpattern
make-courtyard Generator for creating courtyard for a landpattern
build-courtyard Create courtyard content in a virtual landpattern
build-conformal-mask Create conformal coat mask regions in a virtual landpattern
make-conformal-mask Generator for creating conformal coat masks for a landpattern
lead-numbering Lead Numbering Scheme for this Package
package-body Package Body provides the physical envelope for
name IPC7351 compliant name for the package generated
num-leads Number of Total Lead Mounts on this Package
create-landpattern Create a LandPattern definition
pad-planner Pad Planner for this Package
courtyard-excess
build-pads Build the pad/copper in a virtual landpattern
density-level Density Level for this Package
make-pads Generator for creating the copper pad landpattern

Methods

Function Description
make-silkscreen Default Silkscreen Implementation - No Silkscreen Artwork Created
build-silkscreen Default silkscreen creator - No Silkscreen Content
build-all Default build-all implementation
make-all Default make-all generator implementation
make-cut-out Default Generator make-cut-out - Constructs the cutouts only.
build-cut-out Default build-cut-out - No cut-out regions created.
build-keep-out Default build-keep-out - No Keep-out Regions Applied.
make-keep-out Default make-keep-out - Constructs the Keepouts Only.
build-courtyard Default courtyard creator
build-conformal-mask Default build-conformal-mask - No Conformal Mask Regions Applied.
make-conformal-mask Default Conformal Coat Generator
create-landpattern Default Implementation of create-landpattern
density-level Default Density Level Setting
make-pads Default Implementation of the Landpattern Copper Generator

Functions

Function Description
package-build-all-order Externally Defined Build All Order

General Definitions

Variable Description
DEF_LP_POSE Default Landpattern Generator Pose

Definitions

Package

Every component has a representation for a

public deftype Package <: Hashable

package

Multis

make-silkscreen

Generator for creating the silkscreen of a landpattern

public defmulti make-silkscreen (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the silkscreen outline, pin-1 indicator, or any other silkscreen artwork.

build-silkscreen

Create silkscreen content in virtual landpattern

public defmulti build-silkscreen (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's silkscreen artwork in a virtual landpattern environment. That virtual environment can then be written out to a pcb-landpattern definition.

build-all

Apply all Package builder functions

public defmulti build-all (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • vp: VirtualLP - Virtual Landpattern Container to which content will be written
  • Returns False

This function applies all of the build-* functions associated with the Package type to a virtual landpattern container.

make-all

Generator for applying all Package generators

public defmulti make-all (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This function applies all of the make-* generators associated with the Package type.

make-cut-out

Generator for creating cutout regions in the landpattern.

public defmulti make-cut-out (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the Cutout() layer regions for this component.

build-cut-out

Create cut-out regions in a virtual landpattern

public defmulti build-cut-out (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's cut-out regions in a virtual landpattern environment.

The cut-outs are routed areas where the board is completely removed. Sharp corners (zero radius) are difficult to manufacturer so filleted edges should be used where appropriate.

The VirtualLP environment will be written out to a pcb-landpattern definition by the make-cut-out function.

build-keep-out

Create keep-out regions in a virtual landpattern

public defmulti build-keep-out (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's keep-out regions in a virtual landpattern environment. This may include keep-outs for copper, vias, etc. That virtual environment can then be written out to a pcb-landpattern definition.

make-keep-out

Generator for creating keep-out constraints for a landpattern

public defmulti make-keep-out (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the keep-out regions for this component.

make-courtyard

Generator for creating courtyard for a landpattern

public defmulti make-courtyard (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the courtyard outline for this component.

build-courtyard

Create courtyard content in a virtual landpattern

public defmulti build-courtyard (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's courtyard region in a virtual landpattern environment. That virtual environment can then be written out to a pcb-landpattern definition.

build-conformal-mask

Create conformal coat mask regions in a virtual landpattern

public defmulti build-conformal-mask (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's conformal coat mask regions in a virtual landpattern environment. Typically this is used to mark where on this component conformal coating should not be applied - like for connector openings, etc. That virtual environment can then be written out to a pcb-landpattern definition.

make-conformal-mask

Generator for creating conformal coat masks for a landpattern

public defmulti make-conformal-mask (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the conformal coat mask regions. This is typically useful for connectors or thermal interfaces.

lead-numbering

Lead Numbering Scheme for this Package

public defmulti lead-numbering (x:Package) -> Numbering

  • Returns Numbering

package-body

Package Body provides the physical envelope for

public defmulti package-body (x:Package) -> PackageBody

  • Returns PackageBody

the package's body.

name

IPC7351 compliant name for the package generated

public defmulti name (x:Package) -> String

  • Returns String

by this instance.

num-leads

Number of Total Lead Mounts on this Package

public defmulti num-leads (x:Package) -> Int

  • Returns Int

This number should include all possible standard lead locations on this package.

  1. The user should not subtract the pins that are marked absent.
  2. The user should not include the thermal lead if any.

create-landpattern

Create a LandPattern definition

public defmulti create-landpattern (pkg:Package -- pose:Pose = ?, description:String = ?) -> LandPattern

  • pkg: Package - Package to create a landpattern for.
  • pose: Pose - Geometry gets created with an offset from the origin by pose.
  • description: String - Description of the landpattern.

Example:

  val lp = create-landpattern(pkg)

  ; Is equivalent to:

  pcb-landpattern lp:
    name = "lp"
    description = ""
    make-landpattern(pkg)
- Returns LandPattern

This function is used to create a complete landpattern definition for this Package. Typically this function would use the make-* generators for this type to construct a pcb-landpattern definition and return it.

pad-planner

Pad Planner for this Package

public defmulti pad-planner (x:Package) -> PadPlanner

  • Returns PadPlanner

courtyard-excess

public defmulti courtyard-excess (x:Package) -> Double

  • Returns Double

build-pads

Build the pad/copper in a virtual landpattern

public defmulti build-pads (pkg:Package, vp:VirtualLP) -> False

  • pkg: Package - Package definition to build
  • vp: VirtualLP - Virtual Landpattern Container
  • Returns False

This function is used to build the landpattern's pad definitions in a virtual landpattern environment. That virtual environment can then be written out to a pcb-landpattern definition.

density-level

Density Level for this Package

public defmulti density-level (x:Package) -> DensityLevel

  • Returns DensityLevel

make-pads

Generator for creating the copper pad landpattern

public defmulti make-pads (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating a landpattern
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

This generator is typically called within a pcb-landpattern definition to create the necessary pads and copper geometry associated with that component's landpattern.

Methods

make-silkscreen

Default Silkscreen Implementation - No Silkscreen Artwork Created

defmethod make-silkscreen (pkg:Package -- pose:Pose = ?)

build-silkscreen

Default silkscreen creator - No Silkscreen Content

defmethod build-silkscreen (pkg:Package, vp:VirtualLP) -> False

  • Returns False

build-all

Default build-all implementation

defmethod build-all (pkg:Package, virt:VirtualLP) -> False

  • Returns False

Builders are applied in the following order:

  1. build-pads
  2. build-courtyard
  3. build-silkscreen
  4. build-keep-out
  5. build-cut-out
  6. build-conformal-mask

make-all

Default make-all generator implementation

defmethod make-all (pkg:Package -- pose:Pose = ?)

  • pkg: Package - IC Package for which we are creating silkscreen artwork
  • pose: Pose - Offset to apply to all of the geometry generated by this generator function. By default, no offset is applied.

make-cut-out

Default Generator make-cut-out - Constructs the cutouts only.

defmethod make-cut-out (pkg:Package -- pose:Pose = ?)

build-cut-out

Default build-cut-out - No cut-out regions created.

defmethod build-cut-out (pkg:Package, vp:VirtualLP) -> False

  • Returns False

build-keep-out

Default build-keep-out - No Keep-out Regions Applied.

defmethod build-keep-out (pkg:Package, vp:VirtualLP) -> False

  • Returns False

make-keep-out

Default make-keep-out - Constructs the Keepouts Only.

defmethod make-keep-out (pkg:Package -- pose:Pose = ?)

build-courtyard

Default courtyard creator

defmethod build-courtyard (pkg:Package, vp:VirtualLP) -> False

  • Returns False

This function creates the default courtyard for the component by introducing a center mark at the origin and a bounding rectangle on the Courtyard(Top) layer.

build-conformal-mask

Default build-conformal-mask - No Conformal Mask Regions Applied.

defmethod build-conformal-mask (pkg:Package, vp:VirtualLP) -> False

  • Returns False

make-conformal-mask

Default Conformal Coat Generator

defmethod make-conformal-mask (pkg:Package -- pose:Pose = ?)

create-landpattern

Default Implementation of create-landpattern

defmethod create-landpattern (pkg:Package -- pose:Pose = ?, description:String = ?) -> LandPattern

  • pkg: Package - Package to create a landpattern for.
  • pose: Pose - Offset of the geometry in the landpattern. Default is no offset, ie loc(0.0, 0.0)
  • description: String - Description of the landpattern.
  • Returns LandPattern

The default landpattern creator combines all of the defined generators for a Package (ie, make-* functions) to generate the complete landpattern for a package.

In more complex packages, you may need to define your own pcb-landpattern definition with multiple packages

density-level

Default Density Level Setting

defmethod density-level (x:Package) -> DensityLevel

  • Returns DensityLevel

If the package doesn't provide an implementation for density-level - then this function will serve the DENSITY-LEVEL from the design settings file as the default level.

make-pads

Default Implementation of the Landpattern Copper Generator

defmethod make-pads (pkg:Package -- pose:Pose = ?)

Functions

package-build-all-order

Externally Defined Build All Order

public defn package-build-all-order (pkg:Package, virt:VirtualLP) -> False

  • Returns False

This function can be used when you want to override the default behavior of default build-all defmethod.

General Definitions

DEF_LP_POSE

Default Landpattern Generator Pose

public val DEF_LP_POSE

This value should be the default value used for the pose argument in all make-landpattern invocations.

Related Packages

Forwards packages: jsl/landpatterns/package-body, jsl/landpatterns/package-body, jsl/landpatterns/package-body Forwarded by packages: jsl/landpatterns/framework, jsl/landpatterns