KiCad PCB EDA Suite
Loading...
Searching...
No Matches
ALLEGRO::BLK_0x1C_PADSTACK Struct Reference

Padstack definition containing drill dimensions and a table of per-layer pad/antipad/thermal components. More...

#include <allegro_pcb_structs.h>

Public Types

enum  SLOTS { SOLDERMASK_TOP_V16X = 0 , PASTEMASK_TOP_V16X = 5 , FILMMASK_TOP_V16X = 7 , SOLDERMASK_TOP_V17X = 14 }
 Fixed slot indices in the component table. More...
 
enum  LAYER_COMP_SLOT { ANTIPAD = 0 , THERMAL_RELIEF = 1 , PAD = 2 , UNKNOWN_GE_V172 = 3 }
 Component table layer offsets In the component table's layer section, each layer has 3 or 4 slots, depending on version. More...
 

Public Attributes

uint8_t m_UnknownByte1
 
uint8_t m_N
 The number of something.
 
uint8_t m_UnknownByte2
 
uint32_t m_Key
 
uint32_t m_Next
 
uint32_t m_PadStr
 
uint32_t m_Drill
 In < V172, this is the drill diameter in internal coordinates.
 
uint32_t m_Unknown2
 
uint32_t m_PadPath
 
COND_LT< FMT_VER::V_172, uint32_t > m_Unknown3
 
COND_LT< FMT_VER::V_172, uint32_t > m_Unknown4
 
COND_LT< FMT_VER::V_172, uint32_t > m_Unknown5
 
COND_LT< FMT_VER::V_172, uint32_t > m_Unknown6
 
PAD_TYPE m_Type
 
uint8_t m_A
 
uint8_t m_B
 
uint8_t m_C
 
uint8_t m_D
 
COND_GE< FMT_VER::V_172, uint32_t > m_Unknown7
 
COND_GE< FMT_VER::V_172, uint32_t > m_Unknown8
 
COND_GE< FMT_VER::V_172, uint32_t > m_Unknown9
 
COND_LT< FMT_VER::V_172, uint16_t > m_Unknown10
 
uint16_t m_LayerCount
 
COND_GE< FMT_VER::V_172, uint16_t > m_Unknown11
 
std::array< uint32_t, 8 > m_DrillArr
 In >= V172, elements [4] and [7] hold drill dimensions: [4] = drill diameter (or width for oblong drills) [7] = drill height for oblong drills (0 for round) All values are in internal coordinate units (mils * divisor).
 
COND_GE< FMT_VER::V_172, std::array< uint32_t, 28 > > m_SlotAndUnknownArr
 In V172+, elements [0] and [3] hold the true slot outline dimensions (X, Y) in internal coordinate units.
 
COND_GE_LT< FMT_VER::V_165, FMT_VER::V_172, std::array< uint32_t, 8 > > m_UnknownArr8_2
 
COND_GE< FMT_VER::V_180, std::array< uint32_t, 8 > > m_V180Trailer
 V180 inserts 8 extra uint32s between the fixed arrays and the component table.
 
std::vector< PADSTACK_COMPONENTm_Components
 Collection of components that make up the padstack.
 
size_t m_NumFixedCompEntries
 How many of the entries are fixed roles (after this is n*layers)
 
size_t m_NumCompsPerLayer
 
std::vector< uint32_t > m_UnknownArrN
 Some structure of m_N * 8 or 10:
 

Detailed Description

Padstack definition containing drill dimensions and a table of per-layer pad/antipad/thermal components.

The component table has fixed technical layer slots (solder mask, paste mask, etc.) followed by per-copper-layer groups. Drill location is version-dependent (m_Drill for pre-V172, m_DrillArr for V172+). Slot dimensions for oblong drills are stored as (primary, secondary) not (X, Y), requiring orientation correction based on the copper pad aspect ratio.

Definition at line 1090 of file allegro_pcb_structs.h.

Member Enumeration Documentation

◆ LAYER_COMP_SLOT

Component table layer offsets In the component table's layer section, each layer has 3 or 4 slots, depending on version.

Enumerator
ANTIPAD 
THERMAL_RELIEF 
PAD 
UNKNOWN_GE_V172 

Definition at line 1194 of file allegro_pcb_structs.h.

◆ SLOTS

Fixed slot indices in the component table.

The fixed slots come before the per-layer copper entries. V<172 has 10 fixed slots, V>=172 has 21.

All fixed slots are technical layers (solder mask, paste mask, film mask, assembly variant, etc). The exact slot-to-layer mapping is version-dependent and not fully contiguous. Verified mappings from WORKLOG reverse engineering:

V<172 (10 fixed): Slot 0 = ~TSM (top solder mask) Slot 5 = ~TPM (top paste mask) Slot 7 = ~TFM (top film mask)

V>=172 (21 fixed): Slot 14 = ~TSM (top solder mask)

Enumerator
SOLDERMASK_TOP_V16X 
PASTEMASK_TOP_V16X 
FILMMASK_TOP_V16X 
SOLDERMASK_TOP_V17X 

Definition at line 1179 of file allegro_pcb_structs.h.

Member Data Documentation

◆ m_A

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_A

Definition at line 1120 of file allegro_pcb_structs.h.

◆ m_B

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_B

Definition at line 1121 of file allegro_pcb_structs.h.

◆ m_C

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_C

Definition at line 1122 of file allegro_pcb_structs.h.

◆ m_Components

std::vector<PADSTACK_COMPONENT> ALLEGRO::BLK_0x1C_PADSTACK::m_Components

Collection of components that make up the padstack.

The number of components appears to be fixed by version:

  • < 17.2: 10 + layer_count * 3
  • >= 17.2: 21 + layer_count * 4

The first 10/21 components seem to be a fixed set of technical layers.

Then, a set of groups of 3/4 components for each layer.

Definition at line 1219 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems(), and ALLEGRO::BOARD_BUILDER::buildVia().

◆ m_D

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_D

Definition at line 1123 of file allegro_pcb_structs.h.

◆ m_Drill

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_Drill

In < V172, this is the drill diameter in internal coordinates.

In >= V172, the drill diameter moved to m_DrillArr[DRILL_DIAMETER].

Definition at line 1107 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems(), and ALLEGRO::BOARD_BUILDER::buildVia().

◆ m_DrillArr

std::array<uint32_t, 8> ALLEGRO::BLK_0x1C_PADSTACK::m_DrillArr

In >= V172, elements [4] and [7] hold drill dimensions: [4] = drill diameter (or width for oblong drills) [7] = drill height for oblong drills (0 for round) All values are in internal coordinate units (mils * divisor).

Definition at line 1143 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems(), and ALLEGRO::BOARD_BUILDER::buildVia().

◆ m_Key

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_Key

Definition at line 1099 of file allegro_pcb_structs.h.

◆ m_LayerCount

uint16_t ALLEGRO::BLK_0x1C_PADSTACK::m_LayerCount

◆ m_N

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_N

The number of something.

Drives the size of an array (with a multiplier).

Definition at line 1097 of file allegro_pcb_structs.h.

◆ m_Next

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_Next

Definition at line 1100 of file allegro_pcb_structs.h.

◆ m_NumCompsPerLayer

size_t ALLEGRO::BLK_0x1C_PADSTACK::m_NumCompsPerLayer

Definition at line 1225 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems().

◆ m_NumFixedCompEntries

size_t ALLEGRO::BLK_0x1C_PADSTACK::m_NumFixedCompEntries

How many of the entries are fixed roles (after this is n*layers)

Definition at line 1224 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems(), and ALLEGRO::BOARD_BUILDER::buildVia().

◆ m_PadPath

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_PadPath

Definition at line 1109 of file allegro_pcb_structs.h.

◆ m_PadStr

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_PadStr

Definition at line 1101 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems().

◆ m_SlotAndUnknownArr

COND_GE<FMT_VER::V_172, std::array<uint32_t, 28> > ALLEGRO::BLK_0x1C_PADSTACK::m_SlotAndUnknownArr

In V172+, elements [0] and [3] hold the true slot outline dimensions (X, Y) in internal coordinate units.

For routed slots (round drill bit routed along a path), m_DrillArr holds only the bit diameter while this array holds the full slot envelope. For punched oblong drills, these values match m_DrillArr[4] and [7].

Definition at line 1151 of file allegro_pcb_structs.h.

Referenced by ALLEGRO::BOARD_BUILDER::buildPadItems().

◆ m_Type

PAD_TYPE ALLEGRO::BLK_0x1C_PADSTACK::m_Type

Definition at line 1116 of file allegro_pcb_structs.h.

◆ m_Unknown10

COND_LT<FMT_VER::V_172, uint16_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown10

Definition at line 1129 of file allegro_pcb_structs.h.

◆ m_Unknown11

COND_GE<FMT_VER::V_172, uint16_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown11

Definition at line 1135 of file allegro_pcb_structs.h.

◆ m_Unknown2

uint32_t ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown2

Definition at line 1108 of file allegro_pcb_structs.h.

◆ m_Unknown3

COND_LT<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown3

Definition at line 1111 of file allegro_pcb_structs.h.

◆ m_Unknown4

COND_LT<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown4

Definition at line 1112 of file allegro_pcb_structs.h.

◆ m_Unknown5

COND_LT<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown5

Definition at line 1113 of file allegro_pcb_structs.h.

◆ m_Unknown6

COND_LT<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown6

Definition at line 1114 of file allegro_pcb_structs.h.

◆ m_Unknown7

COND_GE<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown7

Definition at line 1125 of file allegro_pcb_structs.h.

◆ m_Unknown8

COND_GE<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown8

Definition at line 1126 of file allegro_pcb_structs.h.

◆ m_Unknown9

COND_GE<FMT_VER::V_172, uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_Unknown9

Definition at line 1127 of file allegro_pcb_structs.h.

◆ m_UnknownArr8_2

COND_GE_LT<FMT_VER::V_165, FMT_VER::V_172, std::array<uint32_t, 8> > ALLEGRO::BLK_0x1C_PADSTACK::m_UnknownArr8_2

Definition at line 1153 of file allegro_pcb_structs.h.

◆ m_UnknownArrN

std::vector<uint32_t> ALLEGRO::BLK_0x1C_PADSTACK::m_UnknownArrN

Some structure of m_N * 8 or 10:

  • < 17.2: 8
  • >= 17.2: 10

Definition at line 1233 of file allegro_pcb_structs.h.

◆ m_UnknownByte1

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_UnknownByte1

Definition at line 1092 of file allegro_pcb_structs.h.

◆ m_UnknownByte2

uint8_t ALLEGRO::BLK_0x1C_PADSTACK::m_UnknownByte2

Definition at line 1098 of file allegro_pcb_structs.h.

◆ m_V180Trailer

COND_GE<FMT_VER::V_180, std::array<uint32_t, 8> > ALLEGRO::BLK_0x1C_PADSTACK::m_V180Trailer

V180 inserts 8 extra uint32s between the fixed arrays and the component table.

Despite the name, this is read before the components, not after.

Definition at line 1159 of file allegro_pcb_structs.h.


The documentation for this struct was generated from the following file: