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.