IN THE UNITED STATES PATENT AND TRADEMARK OFFICE
SPECIFICATION accompanying
Application for Grant of U.S. Letters Patent
TITLE: BALL GRID ARRAY INSPECTION SYSTEM AND METHOD
FIELD OF THE INVENTION
[0001] The present invention pertains to the field of inspection systems, and ' more particularly to a system and method for inspecting ball grid arrays to determine co- planarity and ball contact tip flatness from two sets of two-dimensional image data.
BACKGROUND [0002] Systems for inspecting ball grid arrays are known in the art. Such systems are used to determine whether the co-planarity of each ball contact of the ball grid array is adequate to allow the ball grid array to be used in an application. For example, if the tops of each of the ball contacts of the ball grid array do not have a suitable co- planarity, then it is possible that some of the ball contacts will not make contact when the ball grid array package is placed into an application.
[0003] The processes for determining the co-planarity of ball contacts of ball grid arrays include mechanical measuring devices or generating three-dimensional data through three-dimensional imaging devices. Such methods are time intensive, which greatly increases inspection cost and slows down the speed at which semiconductor packages that use ball grid arrays can be inspected.
SUMMARY OF THE INVENTION
[0004] In accordance with the present invention, a system and method for inspecting ball grid arrays are provided that overcome known problems with systems and methods for inspecting ball grid arrays .
[0005] In particular, a system and method for inspecting ball grid arrays are provided that use two sets of two- dimensional image data to determine co-planarity and ball contact tip flatness for each ball contact of the ball grid array.
[0006] In accordance with an exemplary embodiment of the present invention, a system for determining co-planarity of a ball grid array is provided. The system includes a lateral lighting system that illuminates the ball grid array from one or more locations that are adjacent to the ball grid array. An inner diameter system generates inner diameter data of an inner region of each illuminated ball contact of the ball grid array, such as an inner diameter of an annulus or other suitable shapes formed by the lateral lighting of the ball contacts. An outer diameter system generates outer diameter data of an inner region of each illuminated ball contact of the ball grid array, such as the outer diameter of the annulus. A ball contact height system receives the inner diameter data and the outer diameter data for each ball contact of the ball grid array and determines a height for each ball contact, such as by cross-referencing the difference in inner and out diameter to a predetermined height associated with the difference. [0007] The present invention provides many important technical advantages. One important technical advantage of the present invention is a system and method for inspecting ball grid arrays that allows the co-planarity and ball
contact tip flatness of each ball contact of the ball grid array to be quickly determined from two sets of image data, where each set of image data is generated using a different light source.
[0008] Those skilled in the art will further appreciate the advantages and superior features of the invention together with other important aspects thereof on reading the detailed description that follows in conjunction with the drawings .
BRIEF DESCRIPTION OF THE DRAWINGS [0009] FIGURE 1 is a diagram of a system for inspecting ball grid arrays in accordance with an exemplary embodiment of the present invention; [0010] FIGURE 2 is a diagram of a system for rough and fine diameter coordinate determination in accordance with an exemplary embodiment of the invention; [0011] FIGURE 3 is a diagram of a system for determining ball contact tip flat part area in accordance with exemplary embodiment of the present invention; [0012] FIGURE 4 is a diagram of a system for determining ball contact height in accordance with an exemplary embodiment of the present invention; [0013] FIGURE 5 is a diagram of system for determining ball contact height co-planarity in accordance with an exemplary embodiment of the present invention; [0014] FIGURE 6 is a flow chart of a method for performing a ball grid array inspection in accordance with an exemplary embodiment of the present invention; and [0015] FIGURE 7 is flow chart of a method for determining co-planarity of a ball grid array in accordance with an exemplary embodiment of the present invention.
DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS [0016] In the description that follows, like parts are marked throughout the specification and drawings with the same reference numerals, respectively. The drawing figures might not be to scale, and certain components can be shown in generalized or schematic form and identified by commercial designations in the interest of clarity and conciseness . [0017] FIGURE 1 is a diagram of a system 100 for inspecting ball grid arrays in accordance with an exemplary embodiment of the present invention. System 100 allows the tip flatness and height of each ball contact of a ball grid array to be determined from two sets of image data. [0018] System 100 includes image data analysis system 102, which can be implemented in hardware, software, or a suitable combination of hardware and software, and which can be one or more software systems operating on a general purpose processing platform. As used herein, a hardware system can include discrete semiconductor devices, an application-specific integrated circuit, a field programmable gate array or other suitable devices. A software system can include one or more objects, agents, threads, lines of code, subroutines, separate software applications, user-readable (source) code, machine-readable (object) code, two or more lines of code in two or more corresponding software applications, databases, or other suitable software architectures. In one exemplary embodiment, a software system can include one or more lines of code in a general purpose software application, such as an operating system, and one or more lines of code in a specific purpose software application. [0019] Image data analysis system 102 is coupled to image data system 104, which can be implemented in hardware or a
suitable combination of hardware and software, and which can be one or more software systems operating on a general purpose processing platform. As used herein, the term "couple" and its cognate terms, such as "couples" and "coupled," can include a physical connection (such as a copper conductor) , a virtual connection (such as through randomly assigned memory locations of a data memory device) , a logical connection (such as through logical gates of a semiconducting device), other suitable connections, or a suitable combination of such connections. In one exemplary embodiment, systems and components are coupled to other systems and components through intervening systems ' and components, such as through an operating system. Communications media can be a local area network, a wide area network, a public network such as the Internet, the public switched telephone network, a wireless network, a fiber optic network, other suitable media, or a suitable combination of such media. [0020] Image data system 104 generates image data when ball grid array 116 (shown with a single exemplary ball contact) is illuminated by direct or overhead lighting system 118 and indirect or lateral lighting systems 120A and 120B. Image data system 104 includes overhead lighting control system 110 and lateral lighting control system 112, which control overhead lighting system 118 and lateral lighting systems 120A and 120B, respectively. Lateral lighting systems 120A and 120B are located a height H above the surface upon which ball grid array support 114 and ball grid array 116 rest. Overhead lighting control system 110 causes overhead lighting system 118 to illuminate the ball grid array 116 while image data system 104 generates two- dimensional image data of ball grid array 116 for analysis by image data analysis system 102. Likewise, lateral 7
015113.0000 DALLAS 602656 vl
lighting control system 112 causes lateral lighting systems 120A and 12OB to illuminate ball grid array 116 while image data system 104 generates image data of ball grid array 116 for analysis by image data analysis system 102. Image data system 104 is coupled to overhead lighting system 118 and lateral lighting systems 120A and 120B, such that these lighting systems can be controlled to be on, off, or alternately on and off, as suitable. In this manner, ball grid array 116 can be inspected for co-planarity and ball tip flatness without the need to move ball grid array 116 to different inspection positions.
[0021] Image data set 122 is an exemplary set of image data that is generated when ball grid array 116 is illuminated by overhead lighting system 118. In this exemplary embodiment, image data set 122 includes an area of dark pixels having a diameter of Dl and an area of light pixels having a diameter of D2. Likewise, ball grid array support 114 generates light pixel values when illuminated by overhead lighting system 118. [0022] Image data set 124 is an exemplary set of image data generated by when ball grid array 116 is illuminated by lateral lighting systems 120A and 120B. In this exemplary embodiment, an annulus or other suitable shape of light pixels is formed, such as by the reflection of light from the lateral sources off the sides of each ball contact of ball grid array 116 towards image data system 104. Likewise, because lateral lighting systems 120A and 120B do not illuminate ball grid array support 114 or the top of the ball contacts of ball grid array 116, these areas appear dark. Thus, an annulus having two diameters, Dl and D3 , is formed by illumination of ball contacts of ball grid array 116 with lateral lighting systems 120A and 120B. The difference between Dl and D3 will be a function of the height of the corresponding ball contact . While a
mathematical formula can be derived to determine the difference based on the spatial Relationship between image data system 104, lateral lighting systems 120A and 120B, and the height H of lateral lighting systems 120A and 120B over the reference plane, it is also possible to calibrate the height, such as by using physically-measured ball contact heights and cross-referencing those heights to the difference between diameters Dl and D3. In this manner, the ball contact height can be determined from the difference between diameter Dl and diameter D3. In one exemplary embodiment, ball contact height system 108 can store a table of such values, and can also receive diameter data from a plurality of locations around the circumference of the light annulus of image data set 124. For example, the light annulus of image data set 124 may have a different diameter value for D3 and Dl around the circumference of each ball contact, such that an accurate estimate of the ball contact height for each ball contact of ball grid array 116 can be obtained by checking the difference between diameter Dl and D3 at different circumferential locations, and selecting the difference which correlates to the maximum height. Ball contact height system 108 can perform this function based on image data set 124 or other image data generated by image data system 104. [0023] In operation, system 100 is used to inspect the ball contacts of ball grid array 116 for co-planarity and ball contact tip flatness. Image data system 104 generates a first image data set when ball grid array 116 is illuminated by overhead lighting system 118, and a second set of image data when ball grid array 116 is illuminated by the lateral lighting systems 120A and 120B. Likewise, a greater or lesser number of lateral lighting sources can be used, lateral lighting sources at different heights H can be used, or other suitable lighting sources can be used to
generate image data for performing ball contact height analysis .
[0024] In addition, when ball grid array 116 is illuminated by overhead lighting system 118, image data such as that shown as image data set 122 can be generated. In this exemplary embodiment, a flat part on the top of a ball contact can reflect light back such that a light area is formed, such as one having a diameter D2 as shown. Likewise, ball grid array support 114 of ball grid array 116 will also reflect light, but the ball contacts of ball grid array 116 will diffuse such overhead lighting and appear darker. In this exemplary embodiment, the circumference of the flat part having a diameter of D2 can be determined, such that the area of the flat part can be determined from the circumference. Likewise, other analytical techniques can be used to determine the size of a flat part, such as for areas that are irregular in shape . [0025] System 100 thus allows ball grid array 116 to be inspected to determine co-planarity and ball 'Contact tip flatness using two sets of image data while ball grid array 116 is held at a single inspection location. In this manner, repeated registering of ball grid array 116 to a golden template or other related processes do not have to be performed, thus allowing the inspection to be performed quickly and accurately. [0026] FIGURE 2 is a diagram of a system 200 for rough and fine diameter coordinate determination in accordance with an exemplary embodiment of the invention. System 200 includes rough diameter coordinate boxes 202A through 202D, and fine diameter coordinate boxes 204A through 204K. As shown in FIGURE 2, the rough diameter coordinate boxes 202A through 202D can be used to determine the coordinates of the ball contact at four locations that are approximately 90 degrees apart from each other circumferentially . The edge
of a ball contact can be determined by comparing changes in pixel brightness values for ' adjacent pixels, such as by moving from one end of box 202A to the other end. For example, starting at the top of box 202A as shown in FIGURE 2, the image data generated when ball grid array 116 is illuminated by overhead lighting system 118 results in light pixel values for the base and dark pixel values for the ball contact. As pixel values are compared to adjacent pixel values moving from the top of box 202a down towards the bottom the direction of box 202b, the pixel values will be close in value until the edge of a ball contact of ball grid array 116 is reached, at which point the pixel values will change to dark values. Thus, using predetermined differences in pixel value rays, it is possible to' locate a rough edge coordinate for a ball contact in box 202a. Similar process can be used in boxes 202B, 202C and 202d. [0027] After coordinate locations are found in the rough diameter system or process, they can be verified against expected ball contact dimension data. A fine diameter process can then be used by rotating the boxes angularly around the circumference to generate additional coordinate data for the circumference of each ball contract . In this manner, the coordinates of the diameter or the circumference of each ball contact of ball grid array 116, or of another area of interest such as thep annulus shown in exemplary image data set 124, or such as a flat part shown in exemplary image data set 122, or other features can be determined for subsequent analysis . [0028] FIGURE 3 is a diagram of a system 300 for determining ball contact tip flat part area in accordance with exemplary embodiment of the present invention. System 300 includes ball contact tip flatness system 106 and flat part detection system 302, rough diameter system 304, fine diameter system 306, and flat part area system 308, each of
which can be implemented in hardware, software, or a suitable combination of hardware and software, and which can be one or more software systems operating on a general purpose processing platform. [0029] Flat part detection system 302 detects changes in brightness values of pixels within an area that has been determined to be a ball contact in an image data set generated when overhead lighting is used to illuminate ball grid array 116 and generates flat part edge coordinate data. In one exemplary embodiment, flat part detection system 302 can look for variations in pixel brightness values that exceed predetermined allowable variations within an area bounded by a diameter determined through a rough and/or subsequent fine diameter determination processes, so that only pixels within the diameter of a ball contact are analyzed to locate flat parts. Other suitable processes can also be used. [0030] Rough diameter system 304 performs rough diameter analysis of a ball contact, a flat part, an annulus, or other suitable features within image data. In one exemplary embodiment, rough diameter system 304 can be used in conjunction with a golden template or other suitable processes to confirm the location of ball contacts at predetermined locations. Likewise, rough diameter system 304 can also be used to find ball contacts in an undefined set of image data such as by using a template of rough diameter blocks such as that shown on FIGURE 2 and determining whether patterns in the image data match expected ball contact image pattern. Rough diameter system 304 generates circumference coordinate data. [0031] Fine diameter system 306 generates additional circumference coordinate data, such as by moving boxes 204A through 204K circumferentially, by a predetermined angular amount, or in other suitable manners. In this exemplary
embodiment, fine diameter system 306 can be used to generate ball' contact diameter data, ball contact circumference data, ball contact perimeter data, annulus diameter data, annulus circumference data, annulus perimeter data, flat part diameter data, flat part circumference data, flat part perimeter data, or other suitable data.
[0032] Flat part area system 308 receives flat part edge coordinate data and performs area calculations based on the edge coordinate data. In one exemplary embodiment, a flat part area system 308 can compare the calculated area to predetermined criteria for such areas, such as where it is specified that a ball contact is allowed to have flat parts with a total area that is less than a predetermined amount. Flat part' area system 308 can also generate pass/fail test data, such as identifying ball contacts having unacceptable amounts of flatness . [0033] In operation, system 300 is used to perform ball contact tip flatness analysis. System 300 receives image data from a direct or overhead lighting system and analyzes ball contacts to determine whether any flat parts are present, and whether the surface area of such flat parts is within allowable limits. Likewise, rough diameter system 304 and fine diameter system 306 can also be used to determine the edge, perimeter, or circumference coordinates of other suitable features or objects, or with other suitable sets of image data. [0034] FIGURE 4 is a diagram of a system 400 for determining ball contact height in accordance with an exemplary embodiment of the present invention. System 400 includes ball contact height system 108 and direct outer diameter system 402, lateral outer diameter system 404, lateral inner diameter system 406 and height analysis system 408,' each of which can be implemented in hardware, software, or a suitable combination of hardware and software, and
which can be one or more software systems operating on a general purpose processing platform.
[0035] Direct outer diameter system 402 receives image data generated while ball grid array 116 is illuminated by overhead lighting system 118 and determines the diameter of each ball contact in ball grid array 116. In one exemplary embodiment, direct outer diameter system 402 can use rough and fine diameter analysis to determine the diameter, can perform deviation analyses of the diameter measurements to determine whether diameter variations for a ball contact are unacceptable, and can perform other suitable analyses. [0036] Lateral outer diameter system 404 receives image data generated while ball grid array 116 is illuminated with a lateral lighting source such as lateral lighting systems 120A and 120B of FIGURE 1, and determines the outer diameter of the annulus formed when a ball contact is illuminated in that manner, such as shown in image data set 124 of FIGURE 1. Lateral outer diameter system 404 can use rough and fine diameter processes to generate diameter data, can perform analysis of diameter variations, and can perform other suitable analyses. For example, when performing rough and fine diameter analysis on a set of image data, rough diameter system 304 and fine diameter system 306 can be used to detect changes from dark pixel values to light pixel values for the lateral outer diameter data values. [0037] Lateral inner diameter system 406 receives image data generated while ball grid array 116 is illuminated with a lateral lighting source such as lateral lighting systems 120A and 120B of FIGURE 1, and determines the inner diameter of the annulus formed when a ball contact is illuminated in that manner, such as shown in image data set 124 of FIGURE 1. Lateral inner diameter system 406 can use rough and fine diameter processes to generate diameter data, can perform analysis of diameter variations, and can perform other
suitable analyses. For example, when performing rough and fine diameter analysis on a set of image data, rough diameter system 304 and fine diameter system 306 can be used to detect changes from dark pixel values to light pixel values for the lateral inner diameter data values . [0038] Height analysis system 408 receives inner diameter and outer diameter data for an annulus formed when a ball contact is illuminated with a lateral lighting source and determines the ball contact height from the difference between the inner diameter and outer diameter data. In one exemplary embodiment, height analysis system 408 can be calibrated such that the differences in diameters are correlated to measured ball contact heights. In another exemplary embodiment, the mathematical relationship between the illumination source providing the lateral lighting and the size of the ball can be used to determine the expected difference between an inner diameter and outer diameter. Likewise, other suitable processes can be used to determine the ball contact height from the inner diameter and outer diameter measurements or the suitable measurements. [0039] In operation, system 400 allows the height of ball contacts of a ball grid array to be determined, such as by using image data generated by overhead lighting and image data generated through lateral lighting or other suitable processes. System 400 allows the height of each ball contact to be determined for use in determining co-planarity of the ball contacts of the ball grid array. [0040] FIGURE 5 is a diagram of system 500 for determining ball contact height co-planarity in accordance with an exemplary embodiment of the present invention. System 500 includes height analysis system 408 and datum plane height system 502, best fit plane system 504, and co- planarity system 506, each of which can be implemented in hardware, software, or a suitable combination of hardware
and software, and which can be one or more software systems operating on a general purpose processing platform. [0041] Datum plane height system 502 determines the height of each of a plurality of ball contacts in a ball grid array from a datum plan. In one exemplary embodiment, the datum plane can be ball grid array support 114 of ball grid array 116 in FIGURE 1, an inspection base on which ball grid array support 114 rests, or other suitable datum planes. Datum plane height system 502 can also associate an ■^X'' and """Y" coordinate with each height or *~*~Z'' coordinate of an associated ball contact.
[0042] Best fit plane system 504 generates best fit plane coordinate data based on height coordinate data for ball contacts of a ball grid array, such as using a regression analysis, a lease squares fit analysis, or other suitable analyses. Best fit plane system 504 generates plane coordinate data that is used to determine the difference between the best fit plane and the tops of each of the ball contacts of the ball grid array. In one exemplary embodiment, best fit plane system 504 can also move the best fit plane axially to the top of the highest ball contact, such that all other ball contacts lie at or below the best fit plane, and can perform other suitable processes. [0043] Co-planarity system 506 generates co-planarity data based on ball contact height data. In one exemplary embodiment, co-planarity system 506 can determine a deviation of a ball contact top from a best fit plane and can determine whether the deviation exceeds a maximum allowable deviation. For example, the maximum allowable deviation may be specified by customer requirements or standards as being within a certain number of microns, a certain percentage of total ball contact height, or other figures of merit. Co-planarity system 506 can determine whether the deviation for each ball contact exceed the
maximum allowable deviation. Likewise, co-planarity system 506 can determine whether co-planarity data relevant to a relocated best, fit plane have been met, or whether other suitable co-planarity indicators as specified by customers or standards are present or absent. Co-planarity system 506 can also generate pass/fail data, so as to indicate whether a particular ball grid array is acceptable or in accordance with specifications. [0044] In operation, system 500 is used to analyze ball contact height in a ball grid array to determine whether the ball grid array meets manuf cturing specifications. System 500 allows customer or standard specified processes to be implemented for analysis of ball grid array ball contact heights . [0045] FIGURE 6 is a flow chart of a method 600 for performing • a ball grid array inspection in accordance with an exemplary embodiment of the present invention. Method 600 begins at 602 where the ball contacts are illuminated with a direct or overhead illumination source. The direct or overhead illumination source can be approximately directly overhead of the ball grid array, such that the light impinging on the ball grid array tends to be dispersed on ball contacts but to illuminate the base of the ball grid array. Likewise, any flat spots on the tops of ball contacts will also be illuminated such that the flat parts appear brighter than the ball contacts. The method then proceeds to 604. [0046] At 604 rough ball contact location is performed at four points. In one exemplary embodiment, a golden template or other suitable processes can be used to locate the approximate location of ball contacts and a rough location process can be used to calculate the coordinates at each of four locations that are roughly 90 degrees apart, such as by analyzing changes in pixel brightness values for adjacent
pixels over a pre-determined pixel range. When a change in pixel brightness values exceeds a predetermined allowable change, the rough ball location process can indicate that the diameter or circumference edge of the ball contact has been located. Other suitable processes can also be used. The method then proceeds to 606.
[0047] At 606 fine ball location is performed at additional points. In one exemplary embodiment, the pixel boxes can be moved circumferentially by a predetermined distance, a predetermined angular distance, or in other suitable manners so as to generate coordinate data for the circumferential edge of a ball contact . The method then proceeds to 608.
[0048] At 608 it is determined whether there are additional ball contacts to be analyzed. If additional contacts remain the method returns to 604. Otherwise the method proceeds to 608 where it is determined whether there are any flat parts contained within the circumference of the ball contacts. In one exemplary embodiment, when direct or overhead illumination of ball contacts is used, flat parts will be indicated by areas within the perimeter or circumference of the ball contact having brightness values that are greater than a pre-determined brightness level. If it is determined that flat parts exist, additional processes can be used to measure the area of the flat part, such as by performing rough ' and fine perimeter analysis or other suitable analysis. Likewise, if pass/fail specification data exists for such flat parts, pass/fail testing can be performed such that subsequent analysis of the ball grid array is suspended if it is determined that the ball grid array has unacceptable flat parts. The method then proceeds to 612. [0049] At 612 the ball contacts are illuminated with indirect illumination, such as from a lateral source that is
placed at a lateral distance from the ball grid array, so as to illuminate only the sides of the ball contacts and not the tops or the base, thus forming an annulus or other suitable shapes. The method then proceeds to 614 where the inner diameter of the annulus that is created from indirect illumination of ball contacts is determined, such as by using a rough and fine location technique or in other suitable manners. In this exemplary embodiment, the inner diameter can be determined or analyzed by traversing a pixel box from an outer edge to an inner edge pixel by pixel and looking for a change from bright to dark pixel values in adjacent pixels, or other suitable processes can be used. The method then proceeds to 616. [0050] At 616 an outer diameter of a light 'annulus formed by illumination of ball contacts with lateral illumination is performed. In one exemplary embodiment, the rough and fine diameter processes can be used to ' determine the diameter/perimeter/circumference, deviations in diameter can be determined so as to determine whether an unacceptable level of deviation exists, or other suitable processes can be used. The method then proceeds to 618. [0051] At 618, the ball contact height is determined from the difference between the inner and outer diameters determined at step 614 and 616. In one exemplary embodiment, the coordinates for inner and outer diameters can be determined at the same angular locations, such that the difference between the inner and outer diameter as a function of angular location on the annulus can be determined. Likewise, additional analyses of the differences can be performed, such as to determine whether an unacceptable degree of variation exists, to determine the maximum height, or other suitable analyses. The height of the ball contact can be determined by using the difference between the inner and outer diameter as cross correlated to calibrated height
measurements that have been compared to previously measured differences between inner and outer diameter under similar lighting conditions, the mathematical relationship of the light to the ball grid array can be used to calculate the expected difference between the inner or outer diameter, or other suitable processes can be used. The method then proceeds to 620.
[0052] At 620, it is determined whether there are more contacts requiring analysis. If it is determined that more contacts exist, the method returns to 612. Otherwise, the method proceeds to 622 where co-planarity of the ball grid array is determined. In one exemplary embodiment, co- planarity can be determined by determining the distribution of ball contact heights and analyzing whether the variation in the distribution exceed predetermined allowable variations . [0053] In operation method 600 allows a ball grid array to be examined or inspected by using direct or overhead illumination and lateral or indirect illumination, to generate two sets of image data, each of which illuminates different types of features of the ball contacts of the ball grid array. Method 600 thus allows a ball grid array to be inspected for co-planarity and ball contact tip flatness using two dimensional image data that is generated while the package is in a single locat'ion by alternating lighting sources . [0054] FIGURE 7 is flow chart of a method' 700 for determining co-planarity of a ball grid array in accordance with an exemplary embodiment of the present invention. Method 700 begins at 702 where the ball contact height from a datum plate is determined for each ball contact of the ball grid array. In one exemplary embodiment, the ball contact heights from a datum plane can include (X,Y,Z) coordinates for a ball contact height as determined from lateral or
indirect lighting measurements or other suitable data. The method then proceeds to 704.
[0055] At 704 a best fit plane is determined based on the ball contact heights of the ball grid array. In one exemplary embodiment, a regression analysis can be used to determine a least squares fit plane based on all measured ball contact heights. In this exemplary embodiment, the coordinates for the plane can be generated and the method proceeds to 706. [0056] At 706 the best fit plane is moved axially to be aligned with the tallest ball contact or contacts. In one exemplary embodiment, the best fit- plane can be moved by adding a """~Z*' coordinate displacement equal to the difference between the location of the best fit plane and " ZM coordinate of the tallest ball contact or contacts to the coordinates for the best fit plane. The method then proceeds to 708. [0057] At 708 the ball contact height of each ball contact from the best fit plane is determined, such as by subtracting the ball contact coordinate height data from the height data for the best fit plane as shifted to the highest ball contact. The method then proceeds to 710. [0058] At 710 it is determined whether the difference in height from the best fit plane for any contact is greater than the maximum allowable height variation. For example, a predetermined absolute distance for a given ball contact array can be determined, a percentage of the ball contact height can be used, or other suitable processes can be used. If it is determined that no contact exceeds the maximum allowable variation, the method proceeds to 714 and pass data is generated, such as data that allows the ball grid array piece to be picked up and moved to another inspection station, to be placed in shipping materials, or for other suitable processes to be performed. Likewise, if it is
determined at 710 that the difference between the best fit plane and the ball contact height is greater than the maximum allowable variation, the method proceeds to 712 where ball grid array failure data is generated. Likewise, the failed ball grid array can be removed and placed in a storage area for subsequent analysis by an operator. [0059] In operation method 700 allows the co-planarity of a ball grid array to be determined, such as by determining whether the variation in ball contact heights for each ball contact in the ball grid array exceeds allowable parameters. [0060] Although exemplary embodiments of a system and method of the present invention have been described in detail herein, those skilled in the art will also recognize that various substitutions and modifications can be made to the systems and methods without departing from the scope and spirit of the appended claims.