PinData Verification Checks

Missing Pin Checks

Starting after v18.11.1 PartBuilder has improved facilities to describe the expected pins in a device.

The combination of the PCHK_DEVICE_PIN_NUMBERS Entry and the PCHK_VALID_MISSING_PINS Entry allow the user to easily define a very complex array of pins to expect (and not expect)

If the user takes the time to setup these entries, They will have added confidence that the pinData has been extracted properly. 

The PCHK_DEVICE_PIN_NUMBERS

This entry allows the user to enter the pins the tool should expect to extract when reading the pinData

Leaded Devices

For simple Leaded Devices like DIP, SOIC and QFN QFP packages, It accepts a simple comma separated list of pins

eg 1,2,3,4,5,6,7,8

or ranges of pins,

eg 1..68 

or a mix of the 2 


eg 1...7,9..14,15..20,22..28

BGA Devices

For BGA Devices the entry allows the user to input a code to tell it to build up the expected BGA Pins

BGA_PINS[A1..AF26] will build a list of all the standard BGA Pins while skipping the row letters I,O,S,X and Z

BGA_PINS[A1..AE8]!SKIP_PINS(IOSXY) would be used for a non standard BGA which skips row 'Y' but uses row 'Z'

Version 19.9.x update

Beginning with Version 19.9.0, The BGA_PINS[] operator, which is difficult to type is no longer needed.

If the start Row Letter and the Ending Row Letter are Different.

The tools assume that the user wants to expand the full BGA array

so A1..A6 will still expand to A1,A2,A3,A4,A5,A6

and A1..C5 will use the BGA_PINS operation to create A1,A2,A3,A4,A5,B1,B2,B3,B4,B5,C1,C2,C3,C4,C5


EVEN and ODD BGA PIN Modifiers

Support for an ODD/EVEN modifier was also added  in version 19.9.0 
This is very useful to defined newer fine Pitch BGAS where the Pins alternate between the even and odd row slots

this picture shows such a device



The user can use the EVEN/ODD modifiers to quickly define the expected pins for this device,

A2..U12!EVEN will expand to A2,A4,A6,A8,A10,A12, C2,C4..C12, ...U2,U4,U6,U8,U10,U12
(skipping all the odd rows and columns)

B1..T13!ODD will expand to B1,B3,B5,B7,B9,B11,B13, D1,D3,D5...D13 ...T1,T3,T5,T7,T9,T11,T13
(skipping all the even rows and columns)


So the combination of  A2..U12!EVEN,B1..T13!ODD together can be used to define a BGA where every the pin slots alternate between the even and odd numbers/columns

The PCHK_VALID_MISSING_PINS Entry

This entry tells partBuilder which pins are not present in the device. Many BGA devices leave off corner pins or have a large gap of pins in the Middle.

The PCHK_VALID_MISSING_PINS entry allows the user to enter a very simple list of missing pins like A1,AE26

or use Fancy range operators to create large voids 

A[1..6],AY[2..4],B2  will expand to A1,A2,A3,A4,A5,A6,AY2,AY3,AY4,B2

or you can use a double range with letters first and numbers next like this:

A1,[G..K][2..4],AE26 will expand to A1,G2,G3,G4,H2,H3,H4,K2,K3,K5,AE26  (notice that the 'I'  row was skipped)

Example to define the expected pins for a challenging device

This 516 Pin BGA has a large rectangle of missing pins in the middle. 



This BGA's rows range from A1..A26, B1..B26, all the way to AF1..AF26. 

The standard row letters I,O,Q,S,X and Z are skipped.

Rows G,H,J,K and U,V,W and Y are missing pins 7..20

Rows L,M,N,P,R and T are missing pins 7..10 and 17..20 

Part Builder makes it simple to define the expected pins using the 2 Entries.


We set the PCHK_DEVICE_PIN_NUMBERS entry to BGA_PIN_NUMS[A1..AF26]  which creates every pin in the array.

Then we enter  [G..K][7..20],[U..Y][7..20],[L..T][7..10],[L..T][17..20] in the PCHK_VALID_MISSING_PINS


When PartBuilder extracts pins from the  Pin Report, it will make sure that all the expected pins are present  

!!!CODE UPDATE!!!

With Releases starting at v19.9.0 the CSET Values shown above may be simplified even more using

PCHK_DEVICE_PIN_NUMBERS =A1:AF26

and 

PCHK_VALID_MISSING_PINS=G7:K20,U7:Y20,L7:T10,L17:T20

Benefits of Pin Verification with the GENERIC_CSV and SPREADSHEET PIN_REPORT_TYPES

If the user sets up the 2 Pin Verification Entries when using the GENERIC_CSV or the new SPREADSHEET PIN_REPORT_TYPES, PartBuilder will be better able to identify valid rows of pinData in the input spreadsheet. As it reads each row, it  will check the contents of the Columns that are designated as PIN_NUM (by the GENERIC_CSV_COL_DEF entry) and if they don't contain one of the expected pin_numbers, The row will be skipped and the user will be warned.