Skip to content

jsl/via-structures

Package name: jsl/via-structures

Summary

Data Types

ViaStructureDef

Via Structure Definition Interface

Functions

Function Description
add-std-insertion-points Add two insertion points, at (0.0, +R) pointed UP and (0.0, -R) pointed DOWN

ViaSignalType

Via Signal Identifier Enum

Multis

Function Description
signal-type

AntiPad

AntiPad Definition Interface

Multis

Function Description
anti-pads
add-anti-pad
make-anti-pad Generator for an AntiPad Definition

Functions

Function Description
DifferentialViaStructure Constructor for the Differential Pair Via Structure
SingleViaStructure Constructor for Single-Ended Via Structure Definitions

ViaGroundCage

Via Ground Cage Interface

Multis

Function Description
ground-cages
make-ground-cage Generator for the Ground Cage
add-ground-cage
via-def

Functions

Function Description
DifferentialViaStructure Constructor for the Differential Pair Via Structure
SingleViaStructure Constructor for Single-Ended Via Structure Definitions

PolarViaGroundCage

Polar Via Ground Cage

Functions

Function Description
PolarViaGroundCage Polar Via Ground Cage Constructor

InvalidLayerIndicesError

Exception for Invalid LayerIndex Configurations

Constructors

Function Description
InvalidLayerIndicesError Constructor for defstruct InvalidLayerIndicesError

InvalidSkipIndexError

Exception for Invalid skips array in ViaGroundCage

Constructors

Function Description
InvalidSkipIndexError Constructor for defstruct InvalidSkipIndexError

SingleViaStructure

Single-Ended Via Structure Definition

Functions

Function Description
SingleViaStructure Constructor for Single-Ended Via Structure Definitions

SimpleAntiPad

Simple Anti-Pad Definition

Functions

Function Description
SimpleAntiPad Simple AntiPad Constructor

General Definitions

Function Description
set-via-structure-debug-mode Enable or Disable debug mode for Via Structures
create-insertion-point-shape Create the shape placed at each insertion point.
is-via-structure-debug-mode? Query the state of debug mode for via structures.

Definitions

ViaStructureDef

Via Structure Definition Interface

public deftype ViaStructureDef

This type defines the common interfaces for defining a Via Structure Generator.

Multis

make-insertion-points

public defmulti make-insertion-points (v:ViaStructureDef -- pose:Pose) -> False

  • Returns False

insertion-points

public defmulti insertion-points (v:ViaStructureDef) -> Vector<Pose>

  • Returns Vector<Pose>

create-via-structure

public defmulti create-via-structure (v:ViaStructureDef -- pose:Pose = ?) -> Instantiable

  • Returns Instantiable

add-insertion-point

public defmulti add-insertion-point (v:ViaStructureDef, a:Pose) -> False

  • Returns False

name

public defmulti name (v:ViaStructureDef) -> String

  • Returns String

anti-pads

public defmulti anti-pads (v:ViaStructureDef) -> Vector<AntiPad>

  • Returns Vector<AntiPad>

make-anti-pads

public defmulti make-anti-pads (v:ViaStructureDef -- pose:Pose) -> False

  • Returns False

ground-cages

public defmulti ground-cages (v:ViaStructureDef) -> Vector<ViaGroundCage>

  • Returns Vector<ViaGroundCage>

add-anti-pad

public defmulti add-anti-pad (v:ViaStructureDef, a:AntiPad) -> False

  • Returns False

make-via-structure

public defmulti make-via-structure (v:ViaStructureDef -- pose:Pose = ?) -> False

  • Returns False

add-ground-cage

public defmulti add-ground-cage (v:ViaStructureDef, cage:ViaGroundCage) -> False

  • Returns False

signal-type

public defmulti signal-type (v:ViaStructureDef) -> ViaSignalType

  • Returns ViaSignalType

Functions

add-std-insertion-points

Add two insertion points, at (0.0, +R) pointed UP and (0.0, -R) pointed DOWN

public defn add-std-insertion-points (v:ViaStructureDef, radius:Double) -> False

  • Returns False

ViaSignalType

Via Signal Identifier Enum

public defenum ViaSignalType <: Equalable & Hashable

This type distinguishes between single-ended and differential via structures.

Multis

signal-type

public defmulti signal-type (v:ViaStructureDef) -> ViaSignalType

  • Returns ViaSignalType

AntiPad

AntiPad Definition Interface

public deftype AntiPad

An anti-pad is a ForbidCopper region in the via structure to prevent the ground plane or other nets from interfering with the signal characteristics of the via structure.

Multis

anti-pads

public defmulti anti-pads (v:ViaStructureDef) -> Vector<AntiPad>

  • Returns Vector<AntiPad>

add-anti-pad

public defmulti add-anti-pad (v:ViaStructureDef, a:AntiPad) -> False

  • Returns False

make-anti-pad

Generator for an AntiPad Definition

public defmulti make-anti-pad (a:AntiPad -- pose:Pose) -> False

  • a: AntiPad - this AntiPad
  • pose: Pose - Offset in the module's coordinate frame. This value is typically loc(0.0, 0.0).
  • Returns False

This function will construct the layer() statements for the forbid copper (keepout) regions of the via structure.

Functions

DifferentialViaStructure

Constructor for the Differential Pair Via Structure

public defn DifferentialViaStructure ( -- name:String, via-def:Via|[Via, Via], pitch:Double, ground-cages:Collection<ViaGroundCage> = ?, anti-pads:Collection<AntiPad> = ?, insertion-points:Collection<Pose> = ?) -> DifferentialViaStructure

  • name: String - Unique name for this via structure module definition
  • via-def: Via|[Via, Via] - Defines what vias will be used for the P/N signals. If this parameter is a single Via definition, then that definition will be used for both the P and the N signals. If a [Via, Via] argument is provided, then the first Via is for the P signal and the second Via is for the N signal.
  • pitch: Double - Distance between the P / N signal vias.
  • ground-cages: Collection<ViaGroundCage> - Optional explicit collection of ground cages. Default is []. User can use the add-ground-cage function to add ground cages after creation.
  • anti-pads: Collection<AntiPad> - Optional explicit collection of anti-pads. Default is []. User can use the add-anti-pad function to add anti-pads after creation.
  • insertion-points: Collection<Pose> - Optional explicit collection of insertion-points. Default is []. User can use the add-insertion-point function to add insertion points after creation.
  • Returns DifferentialViaStructure

SingleViaStructure

Constructor for Single-Ended Via Structure Definitions

public defn SingleViaStructure ( -- name:String, via-def:Via, ground-cages:Collection<ViaGroundCage> = ?, anti-pads:Collection<AntiPad> = ?, insertion-points:Collection<Pose> = ?) -> SingleViaStructure

  • name: String - Unique name for this via structure
  • via-def: Via - Via definition used for the signal via
  • ground-cages: Collection<ViaGroundCage> - Optional explicit collection of ground cages. Default is []. User can use the add-ground-cage function to add ground cages after creation.
  • anti-pads: Collection<AntiPad> - Optional explicit collection of anti-pads. Default is []. User can use the add-anti-pad function to add anti-pads after creation.
  • insertion-points: Collection<Pose> - Optional explicit collection of insertion-points. Default is []. User can use the add-insertion-point function to add insertion points after creation.
  • Returns SingleViaStructure

ViaGroundCage

Via Ground Cage Interface

public deftype ViaGroundCage

The Via Ground Cage is the return signal path for the signal going through the central via. This type provides the method for defining different configurations of this ground cage.

Multis

ground-cages

public defmulti ground-cages (v:ViaStructureDef) -> Vector<ViaGroundCage>

  • Returns Vector<ViaGroundCage>

make-ground-cage

Generator for the Ground Cage

public defmulti make-ground-cage (v:ViaGroundCage, n:JITXObject -- pose:Pose) -> False

  • v: ViaGroundCage - This object
  • n: JITXObject - A net object for which a geom statement will be constructed.
  • pose: Pose - Offset in the module's coordinate frame at which to place the vias. Typically this is loc(0.0, 0.0) indicating no offset.
  • Returns False

This function must be called from within a pcb-module context.

This function will generate the necessary vias that surround the central vias of the via structure.

add-ground-cage

public defmulti add-ground-cage (v:ViaStructureDef, cage:ViaGroundCage) -> False

  • Returns False

via-def

public defmulti via-def (v:ViaGroundCage) -> Via

  • Returns Via

Functions

DifferentialViaStructure

Constructor for the Differential Pair Via Structure

public defn DifferentialViaStructure ( -- name:String, via-def:Via|[Via, Via], pitch:Double, ground-cages:Collection<ViaGroundCage> = ?, anti-pads:Collection<AntiPad> = ?, insertion-points:Collection<Pose> = ?) -> DifferentialViaStructure

  • name: String - Unique name for this via structure module definition
  • via-def: Via|[Via, Via] - Defines what vias will be used for the P/N signals. If this parameter is a single Via definition, then that definition will be used for both the P and the N signals. If a [Via, Via] argument is provided, then the first Via is for the P signal and the second Via is for the N signal.
  • pitch: Double - Distance between the P / N signal vias.
  • ground-cages: Collection<ViaGroundCage> - Optional explicit collection of ground cages. Default is []. User can use the add-ground-cage function to add ground cages after creation.
  • anti-pads: Collection<AntiPad> - Optional explicit collection of anti-pads. Default is []. User can use the add-anti-pad function to add anti-pads after creation.
  • insertion-points: Collection<Pose> - Optional explicit collection of insertion-points. Default is []. User can use the add-insertion-point function to add insertion points after creation.
  • Returns DifferentialViaStructure

SingleViaStructure

Constructor for Single-Ended Via Structure Definitions

public defn SingleViaStructure ( -- name:String, via-def:Via, ground-cages:Collection<ViaGroundCage> = ?, anti-pads:Collection<AntiPad> = ?, insertion-points:Collection<Pose> = ?) -> SingleViaStructure

  • name: String - Unique name for this via structure
  • via-def: Via - Via definition used for the signal via
  • ground-cages: Collection<ViaGroundCage> - Optional explicit collection of ground cages. Default is []. User can use the add-ground-cage function to add ground cages after creation.
  • anti-pads: Collection<AntiPad> - Optional explicit collection of anti-pads. Default is []. User can use the add-anti-pad function to add anti-pads after creation.
  • insertion-points: Collection<Pose> - Optional explicit collection of insertion-points. Default is []. User can use the add-insertion-point function to add insertion points after creation.
  • Returns SingleViaStructure

PolarViaGroundCage

Polar Via Ground Cage

public defstruct PolarViaGroundCage <: ViaGroundCage
    count: Int
    radius: Double
    skips: Collection<Int>
    theta: Double

  • count: Int - Total number of via placements. Must be positive.

  • radius: Double - Radius in mm for the circular pattern of via placements. Must be positive.

  • skips: Collection<Int> - Skipped indices in the via pattern. Each value in this collection must be in the range [0, count-1]

  • theta: Double - Starting angle for the pattern. Value in degrees.

This an implementation of the ViaGroundCage that places vias in polar space at a particular radius around the signal vias at the center of the via structure.

TODO - Diagram Here

Vias start at index 0 which is placed at (radius, 0.0). Vias 1 to N-1 are then place in a counter-clock wise pattern at radius from the origin in increments of 2 * PI / count radians.

The theta parameter can provide an initial angle offset in degrees. A positive value advances the angle such that Via 0 starts at (radius, theta * PI / 180.0)

The skips argument provides a means of depopulating particular via indices depending on what structure the user wants to build. This collection will contain 0 or more zero-based indices for via locations.

Functions

PolarViaGroundCage

Polar Via Ground Cage Constructor

public defn PolarViaGroundCage ( -- via-def:Via, count:Int, radius:Double, theta-deg:Double = ?, skips:Collection<Int> = ?) -> PolarViaGroundCage

  • via-def: Via - Via to use for all via placements
  • count: Int - Number of via placements
  • radius: Double - Radius in mm of the via placement arc.
  • theta-deg: Double - Initial angle in degrees. Default value is 0.0
  • skips: Collection<Int> - Collection of via placement indicies to skip. Default value is [] which implies no placements are skipped.
  • Returns PolarViaGroundCage

InvalidLayerIndicesError

Exception for Invalid LayerIndex Configurations

public defstruct InvalidLayerIndicesError <: Exception
    msg: String|Printable

  • msg: String|Printable

Constructors

InvalidLayerIndicesError

Constructor for defstruct InvalidLayerIndicesError

public defn InvalidLayerIndicesError (msg:String|Printable)

InvalidSkipIndexError

Exception for Invalid skips array in ViaGroundCage

public defstruct InvalidSkipIndexError <: Exception
    msg: String|Printable

  • msg: String|Printable

Constructors

InvalidSkipIndexError

Constructor for defstruct InvalidSkipIndexError

public defn InvalidSkipIndexError (msg:String|Printable)

SingleViaStructure

Single-Ended Via Structure Definition

public defstruct SingleViaStructure <: ViaStructureDef
    via-def: Via

  • via-def: Via

This type is used to create a single-ended via structure generator.

Functions

SingleViaStructure

Constructor for Single-Ended Via Structure Definitions

public defn SingleViaStructure ( -- name:String, via-def:Via, ground-cages:Collection<ViaGroundCage> = ?, anti-pads:Collection<AntiPad> = ?, insertion-points:Collection<Pose> = ?) -> SingleViaStructure

  • name: String - Unique name for this via structure
  • via-def: Via - Via definition used for the signal via
  • ground-cages: Collection<ViaGroundCage> - Optional explicit collection of ground cages. Default is []. User can use the add-ground-cage function to add ground cages after creation.
  • anti-pads: Collection<AntiPad> - Optional explicit collection of anti-pads. Default is []. User can use the add-anti-pad function to add anti-pads after creation.
  • insertion-points: Collection<Pose> - Optional explicit collection of insertion-points. Default is []. User can use the add-insertion-point function to add insertion points after creation.
  • Returns SingleViaStructure

SimpleAntiPad

Simple Anti-Pad Definition

public defstruct SimpleAntiPad <: AntiPad
    end: LayerIndex
    shape: Shape
    start: LayerIndex

  • end: LayerIndex

  • shape: Shape - Shape of the constructed anti-pad region. This shape is applied to all of the layer start through end

  • start: LayerIndex

This type implements the AntiPad interface and provides a simple shape based antipad on one or more layers.

The start and end layers are inclusive - so the specified shape will be applied on all layers start through end. The start and end layers follow the same behavior as ForbidCopper.

Functions

SimpleAntiPad

Simple AntiPad Constructor

public defn SimpleAntiPad ( -- shape:Shape, start:LayerIndex, end:LayerIndex = ?) -> SimpleAntiPad

  • shape: Shape - Forbid Region Shape for all applicable layers
  • start: LayerIndex - Starting layer for the antipad
  • end: LayerIndex - Optional end layer for the antipad. If not provide, the default behavior is that the antipad will only be created on the start layer.
  • Returns SimpleAntiPad

General Definitions

set-via-structure-debug-mode

Enable or Disable debug mode for Via Structures

public defn set-via-structure-debug-mode (x:True|False) -> False

  • x: True|False - true = enable, false = disable
  • Returns False

create-insertion-point-shape

Create the shape placed at each insertion point.

public defn create-insertion-point-shape (radius:Double = ?) -> Shape

  • Returns Shape

This shape will generally be placed in the custom fab layers as an indicator of where control points and insertion points are expected to be place.

This function creates a shape that consists of an arrow pointing in the positive Y direction starting from the origin at 0,0. It also constructs an arc around the origin at radius.

TODO - Diagram

is-via-structure-debug-mode?

Query the state of debug mode for via structures.

public defn is-via-structure-debug-mode? () -> True|False

  • Returns True|False