jsl/landpatterns/numbering¶
Package name: jsl/landpatterns/numbering
Summary¶
Data Types¶
Std-IC-Numbering¶
Standard IC Numbering
Constructors¶
Function | Description |
---|---|
Std-IC-Numbering | Constructor for defstruct Std-IC-Numbering |
Grid-Numbering¶
Create pad Ref sequence for a 2-axis Grid (eg for BGAs)
Functions¶
Function | Description |
---|---|
to-row-range | Compute the row range based on the start and end character. |
Grid-Numbering | |
to-row-index | Given a Row Letter, convert to an Int offset in 0-index form |
Row-Major-Numbering¶
Row Major Pad Numbering
Functions¶
Function | Description |
---|---|
Row-Major-Numbering |
C-A-Numbering¶
Cathode/Anode Numbering Scheme
Functions¶
Function | Description |
---|---|
C-A-Numbering |
LookupTableNumbering¶
Lookup Table Based Numbering Scheme
Functions¶
Function | Description |
---|---|
LookupTableNumbering |
Uneven-Column-Major-Numbering¶
Uneven (Asymmetric) Column Major Numbering
Constructors¶
Function | Description |
---|---|
Uneven-Column-Major-Numbering | Constructor for defstruct Uneven-Column-Major-Numbering |
Functions¶
Function | Description |
---|---|
Uneven-Column-Major-Numbering | Construct an Uneven Column Structure for Quad Packages |
get-total-pads |
Numbering¶
Numbering Scheme for a Set of Pads
Multis¶
Function | Description |
---|---|
to-pad-id | Convert the row and column indices into a pad number or reference |
Column-Major-Numbering¶
Column Major Pad Numbering
Functions¶
Function | Description |
---|---|
Column-Major-Numbering |
General Definitions¶
Variable | Description |
---|---|
DEF-ROW-OMITS |
Definitions¶
Std-IC-Numbering¶
Standard IC Numbering
public defstruct Std-IC-Numbering <: Numbering
num-pads: Int
num-pads: Int
TODO: Figure here
Constructors¶
Std-IC-Numbering¶
Constructor for defstruct Std-IC-Numbering
public defn Std-IC-Numbering (num-pads:Int)
Grid-Numbering¶
Create pad Ref sequence for a 2-axis Grid (eg for BGAs)
public defstruct Grid-Numbering <: Numbering
columns: Int
omit-cols: Tuple<Int>
omit-rows: String
pad-lookup: Tuple<Ref>
rows: Int
start-col: Int
start-row: Int
-
columns: Int
- Number of Columns in the Grid -
omit-cols: Tuple<Int>
- List of column identifiers which will be omitted. By default, this tuple is empty meaning that all columns are used. The user can pass a black list of column ids as integers. For example, if the user provides [3, 7], then the column sequence would be: 0, 1, 2, 4, 5, 6, 8, ... -
omit-rows: String
- List of letters to not uses as the row id in the generated pad reference. By default this is set to "IOQSXZ" by IPC7351B. For example, this means that the row sequence will consist of: ... G, H, J ... WhereI
is absent -
pad-lookup: Tuple<Ref>
- Lookup table for converting row/column indices to a Ref. This lookup is pre-computed based on therows/columns/etc
-
rows: Int
- Number of Rows in the Grid -
start-col: Int
- Set the starting column offset/ Default is 0, which is typically the first column index. -
start-row: Int
- Set the starting row offset. Default is 0, which is typically maps to 'A' unless theomit-rows
contains 'A'.
The created references use a IndexRef consisting of
a letter for the row indicator and a number index for the column.
For example:
row=1, column=1 => A[1]
row=2, column=7 => B[7]
row=21, column=3 => AA[3]
Note that the final example assumes the default omit character sequence.
The start-row
and start-col
parameters are used to
offset the numbering generation. For example - lets say you
wanted to have a 5x5 grid but start with row 'C' and column 5,
Setting start-row = 2
and start-col = 4
(zero-indexed).
This results in a grid with rows C, D, E, F, G and columns
5, 6, 7, 8, 9.
Functions¶
to-row-range¶
Compute the row range based on the start and end character.
public defn to-row-range (grid:Grid-Numbering, start:Char|String, end:Char|String) -> Range
grid: Grid-Numbering
- Grid Numbering Schemestart: Char|String
- First row as a character or sequence of characters.end: Char|String
- Inclusive end row as a character or sequence of characters.- Returns
Range
- The resultant range is a 1-based index to match thePadIsland
constructor interface.
This is a utility function for constructing the Range
for the
row offsets (ie, Int values) from the character values.
Grid-Numbering¶
public defn Grid-Numbering (rows:Int, columns:Int, start-row:Int = ?, start-col:Int = ?, omit-rows:String = ?, omit-cols:Tuple<Int> = ?) -> Grid-Numbering
- Returns
Grid-Numbering
to-row-index¶
Given a Row Letter, convert to an Int offset in 0-index form
public defn to-row-index (g:Grid-Numbering, row:Ref|String) -> Int
g: Grid-Numbering
- Grid Numbering Schemerow: Ref|String
- identifies which row we are attempting to convert- Returns
Int
Row-Major-Numbering¶
Row Major Pad Numbering
public defstruct Row-Major-Numbering <: Numbering
col-offset: Int
num-pads: Int
num-rows: Int
row-offset: Int
-
col-offset: Int
-
num-pads: Int
-
num-rows: Int
-
row-offset: Int
Example for 2-column grid:
1 2
3 4
5 6
...
Functions¶
Row-Major-Numbering¶
public defn Row-Major-Numbering (num-pads:Int, num-rows:Int -- row-offset:Int = ?, col-offset:Int = ?) -> Row-Major-Numbering
- Returns
Row-Major-Numbering
C-A-Numbering¶
Cathode/Anode Numbering Scheme
public deftype C-A-Numbering <: Numbering
This numbering scheme is used for any two-pin component with
polarity. This allows us to differentiate the positive (anode, a
) from the
negative (cathode, c
) terminals.
LookupTableNumbering¶
Lookup Table Based Numbering Scheme
public defstruct LookupTableNumbering <: Numbering
lookup: Tuple<Tuple<Int|Ref>>
lookup: Tuple<Tuple<Int|Ref>>
- Lookup Table for Converting (Rows, Columns) -> Int|Ref This table is assumed to be in Row major order.
This numbering scheme to support patterns that are not easily programmatic or more random.
val lead-scheme = LookupTableNumbering(
lookup = [
[2, 1]
[3, 4]
]
)
-
Typically, the lookup tables would be
regular, ie each row would be the same length. But nothing prevents an irregular grid where the rows are not all the same length.
Functions¶
LookupTableNumbering¶
public defn LookupTableNumbering (lookup:Tuple<Tuple<Int|Ref>>) -> LookupTableNumbering
- Returns
LookupTableNumbering
Uneven-Column-Major-Numbering¶
Uneven (Asymmetric) Column Major Numbering
public defstruct Uneven-Column-Major-Numbering <: Numbering
columns: Tuple<Int>
columns: Tuple<Int>
This provides a mechanism to create a column major numbering scheme where each column may not have the exact same number of rows.
Constructors¶
Uneven-Column-Major-Numbering¶
Constructor for defstruct Uneven-Column-Major-Numbering
public defn Uneven-Column-Major-Numbering (columns:Tuple<Int>)
Functions¶
Uneven-Column-Major-Numbering¶
Construct an Uneven Column Structure for Quad Packages
public defn Uneven-Column-Major-Numbering (x-count:Int, y-count:Int) -> Uneven-Column-Major-Numbering
x-count: Int
- Number of leads on the E/W sides of the packagey-count: Int
- Number of leads on the N/S side of the package.- Returns
Uneven-Column-Major-Numbering
This will construct a asymmetric column major numbering that expects (2 * x-count) + (2 * y-count) total unique leads in the package.
get-total-pads¶
public defn get-total-pads (x:Uneven-Column-Major-Numbering) -> Int
- Returns
Int
Numbering¶
Numbering Scheme for a Set of Pads
public deftype Numbering
The landpattern generators typically use a 2D grid to generate the pads related to a component. This grid is a zero-index row and column setup.
- For DIP style components (SOP, SOIC, DFN/SON, etc ), there are typically
2 columns and
N / 2
rows (whereN
is the number of pins). - For Quad style components (QFP, QFN, etc), there are typically
4 columns and
N / 4
rows (whereN
is the number of pins). - For BGA style components, there are typically N pins and X columns by Y rows where X * Y = N (for a Full Matrix). This is only an example to demonstrate the typical row and column configurations. More complex arrangements are possible.
Note that this numbering scheme does not consider the exposed thermal lead/pad to be part of the pin numbering sequence.
Multis¶
to-pad-id¶
Convert the row and column indices into a pad number or reference
public defmulti to-pad-id (x:Numbering, row:Int, column:Int) -> Int|Ref
x: Numbering
- Selfrow: Int
- Zero-based row offset into the pad gridcolumn: Int
- Zero-based column offset into the pad grid.- Returns
Int|Ref
- Either an Int or a Ref that determines the pad identifier or name.
Column-Major-Numbering¶
Column Major Pad Numbering
public defstruct Column-Major-Numbering <: Numbering
col-offset: Int
col-skip: Int
num-columns: Int
num-pads: Int
row-offset: Int
row-skip: Int
-
col-offset: Int
-
col-skip: Int
-
num-columns: Int
-
num-pads: Int
-
row-offset: Int
-
row-skip: Int
Example for 2-column grid:
1 5
2 6
3 7
4 8
Functions¶
Column-Major-Numbering¶
public defn Column-Major-Numbering (num-pads:Int, num-columns:Int -- row-offset:Int = ?, col-offset:Int = ?, col-skip:Int = ?, row-skip:Int = ?) -> Column-Major-Numbering
- Returns
Column-Major-Numbering
General Definitions¶
DEF-ROW-OMITS¶
public val DEF-ROW-OMITS
Related Packages¶
Forwarded by packages: jsl/landpatterns/framework, jsl/landpatterns