Patent Document

BACKGROUND OF THE INVENTION 
     1. Field of Invention 
     This invention is related to determining the probable seating plane for an array of connection elements. In particular, this invention is directed to systems and methods for determining the seating plane of a ball-grid array. 
     2. Description of Related Art 
     As defined by the Joint Electron Device Engineering Council in the “Ball-grid Array Package” JEDEC STANDARD, No. 95-1, Section 14, (the Standard) incorporated herein by reference in its entirety, a ball-grid array is a square or rectangular area of metallized balls, columns or other connection structures formed on an array side of an integrated circuit package. The main body of the package has a metallized circuit pattern applied to a dielectric structure. One or more semiconductor dies are attached to a die side of the dielectric structure, which may be either the top or bottom surface of the dielectric structure. On the array side of the dielectric structure is an array pattern of the metallized balls, columns or other connection structures that form the mechanical and electrical connection from the package to a mating feature such as a printed circuit board. The surface which contains the semiconductor die may be encapsulated by various techniques to protect the semiconductor die. 
     The Standard defines a ball-grid array seating plane as the plane simulated by a horizontal surface that is in contact with the apices of three or more non-collinear balls that support the package when it is placed on the top of this surface. The triangle formed by the three or more balls defining the seating plane must include the center of gravity of the package. If multiple possible seating planes meet these conditions, then the potential seating plane with the worst coplanarity is defined as the actual seating plane, since this will emphasize the potential for “out of plane” connection elements to lead to a connection failure. 
     A seating plane is used as a very important reference when evaluating dimensions and tolerances of a ball-grid array, such as the thickness of the ball-grid array package body, coplanarity and warpage. However, there is no method for seating plane determination proposed in the standard. 
     SUMMARY OF THE INVENTION 
     As mentioned above, the seating plane is used as a reference when evaluating dimensions and tolerances. For instance, the Joint Electron Device Engineering Council has proposed one method for determining the ball-grid array coplanarity. In this method, coplanarity is the distance between the seating plane and the apex of the ball/column which is the furthest from the seating plane among all balls. However, there is not a method to determine the seating plane as proposed in the Standard. 
     As a substitute approach, a second method for determining coplanarity first establishes a least mean square plane. The least mean square plane is determined by calculating the least mean square of the distance between the spherical crowns of all the balls or columns of the ball-grid array. A shifted least mean square plane is then determined by shifting the least mean square plane along the direction normal to the least mean square plane and away from the ball-grid array package until the apex of the ball or column having the greatest distance from the original least mean square plane lies on the shifted least mean square plane. This plane is called lowest ball reference plane and used as a substitute for the defined seating plane in the case of a coplanarity calculation. 
     Actually this substitute “seating plane” is also used in cases of other dimension and tolerance calculations because there is no current method for determining the seating plane. Since the ball-grid array is becoming a major device in the semiconductor industry, there is a strong need for standards to guide design, manufacture and inspection and a need to comply with these standards. 
     The foregoing substitute methods do not consider the location of the center of gravity of the ball grid array. Furthermore, the least mean square plane by it&#39;s nature tends to pick a “least tilted” plane (the average plane) based on the entire array of balls, whereas the seating plane, by it&#39;s definition, is intended to contact only the apices of the balls. The tilt of a seating plane based on only on the most extreme apices has a high probability of being more tilted than the previously described least mean square plane. Furthermore, any measure of coplanarity, one of the most important parameters for determining ball grid array quality, depends very strongly on the tilt of the assumed seating plane. Thus, there is a strong need for a rigorous method of determining the seating plane as defined in the Standard. 
     This invention provides systems and methods that determine the ball-grid array seating plane in conformance with the Standard. 
     Accordingly, the systems and methods for determining the ball-grid array seating plane according to this invention enable a seating plane to be determined that is in accordance with the Joint Electron Device Engineering Council definition of “seating plane.” 
     Specifically, a ball-grid array package is presented to a ball-grid array ball measuring system. The ball-grid array ball measuring system measures the distance from a reference plane to the apex of each of the balls. These distances are then forwarded to the ball-grid array seating plane determining system. The nominal center of gravity, which could be based on design data, may also be forwarded to the ball-grid array seating plane determining system. The ball-grid array seating plane determining system determines the ball-grid array seating plane in accordance with the Standard. 
     Although the following description of the exemplary embodiments of the systems and methods according to this invention refer to a ball grid array, it should be appreciated that this is an exemplary application of the invention. In general, the methods and systems of this invention can be used for determining stable seating planes for any device resting on the most extreme points included within an array of mechanical or electrical connection elements. The apices of a ball grid array are referred to in the following description. However, in general, the apices of any type of array of connection elements should be considered equivalent to the apices of a ball grid array. 
     These and other features and advantages of this invention are described in or are apparent from the following detailed description of the preferred embodiments. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The preferred embodiments of the this invention will be described in detail, with reference to the following figures, wherein: 
     FIG. 1 is an exemplary array-side view of a portion of an exemplary ball-grid array package; 
     FIG. 2 is an exemplary side view of a portion of a ball-grid array package; 
     FIG. 3 illustrates a seating plane for an exemplary ball-grid array package; 
     FIG. 4 illustrates a least mean square plane and a shifted least mean square plane for an exemplary ball-grid array package; 
     FIG. 5 is a functional block diagram showing the ball-grid array seating plane system; 
     FIG. 6 is a functional block diagram illustrating the ball-grid array seating plane determining system of FIG. 1 in greater detail; 
     FIGS. 7-10 illustrate the operation of the ball-grid array seating plane determining system; 
     FIGS. 11A-11C is a flowchart outlining one exemplary embodiment of a method for determining the ball-grid array seating plane according to this invention; and 
     FIG. 12 is a flowchart outlining in greater detail one exemplary embodiment of the potential seating plane determining step of FIG.  11 B. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     The systems and methods of this invention allow for a precise identification of the seating planes that allow the ball grid array package to sit in a stable manner, and at least one seating plane according to the definition in the Standard for a ball-grid array package. A data set including the apices of all the balls of the ball-grid array is input to the ball-grid array seating plane system. The apex of each ball is nominally the point of that ball that is furthest from the array side of the ball-grid array package. Strictly, the apex of each ball is the point on that ball that is closest to the ultimately-determined seating plane. Thus, it may be necessary to measure a plurality of points on the small top crown area of each ball of the ball-grid array. This plurality of points should contain the apex of that ball. If only one point on each ball is measured, that point may not be the true apex, since the apex cannot be strictly determined before a seating plane is determined. 
     The ball-grid array seating plane system fits a series of candidate planes to the input data points. Each candidate plane can be defined by a triangle of three data points The ball-grid array seating plane system compares all candidate planes, and identifies the plane with the worst coplanarity, or the triangle having the largest area, as the seating plane. The ball-grid array seating plane with the worst coplanarity is in compliance with the definition in the Standard. The ball-grid array seating plane with the largest area triangle might be used in some particular applications as this plane possesses the maximum stability. The systems and methods of this invention can be easily applied with these two different criteria. 
     The methods and systems of this invention are also applicable to arrays of other types of connection elements on other electronic packages and substrates, and may generally be used whenever it is of interest to know which apices of a connector element array are the possible, or a likely, stable contact points for a mating array of connection points. That is, which apices of the connector element array determine the possible, or likely, seating planes for the connector element array. When a seating plane is known, the coplanarity of the connection element array may be determined, which provides an indication of whether all of the connection elements are likely to achieve reliable contact with a mating array of connection points, for a given assembly process. 
     FIG. 1 is an array-side view of an exemplary portion of a ball-grid array package  10 . The ball-grid array package  10  contains balls  15  attached to the array side of the ball-grid array package  10 . These balls  15  form the mechanical and electrical connection from the ball-grid array package  10  to, for example, a printed circuit board. 
     FIG. 2 is a side view of the portion of the ball-grid array package  10  shown in FIG.  1 . As previously described, the balls  15  establish the mechanical and/or electrical connection between the ball-grid array package  10  and another surface, for example, a printed circuit board  30 . 
     Each ball  15  of the ball-grid array package  10  is a three dimensional ball attached to an array side  25  of the ball-grid array package. Each of these balls  15  has an apex  20  which is furthest from the array side  25  of the ball-grid array package  10 . The apices  20  of the balls  15  are the points of the balls  15  that are measured when determining the seating plane. 
     FIG. 3 illustrates a ball-grid array package  10  having a seating plane  30 . This seating plane  30  is obtained by establishing a plane that passes through three or more apices  20  that are furthest from the array side  25  of the ball-grid array package  10 . FIG. 4 illustrates a ball-grid array package  10  with a lowest ball reference plane  45  that is obtained by shifting a least means square plane  35  in a first direction normal to the least mean square plane  35  and away from the array side  25  of the ball-grid array package  10  until the shifted least mean square plane  45  contacts the apex  47  of the ball  15  that is furthest away from the least mean square plane  35  in the first direction. This plane is commonly used as a substitute for the seating plane in semiconductor applications. 
     FIG. 5 illustrates a ball-grid array seating plane system  100 . The ball-grid array seating plane system  100  comprises a ball-grid array ball measuring system  110  and a ball-grid array seating plane determining system  120  connected by a link  130 . The ball-grid array measuring system  110  determines a set of data points corresponding to the apices of each of the ball-grid array package balls  15  and defines a distance from each of the apices of the balls to a reference plane. Upon determining a data point for each of these balls, the data, i.e., the distance from the apices of the balls to the reference plane, is forwarded over the link  130  to the ball-grid array seating plane determining system  120 . The ball-grid array seating plane determining system  120  determines the seating plane based on a plane defined by three or more of the data points that have the worst coplanarity and/or the largest area of the resulting triangle. 
     FIG. 6 illustrates in greater detail one exemplary embodiment of the ball-grid array seating plane determining system  120 . Specifically, in this exemplary embodiment, the ball-grid array seating plane determining system  120  comprises a controller  140 , a memory  150 , a search angle determining circuit  160 , a point determining circuit  170 , a projection plane determining circuit  180 , a line rotating circuit  190 , a coplanarity determining circuit  200 , a least mean square plane determining circuit  210 , a line determining circuit  220 , a plane determining circuit  230 , a plane rotating circuit  240  and a sweep angle determining circuit  250 , all connected by a data/control bus  260 . The ball-grid array seating plane determining system  120  receives the set of data points from the ball-grid array measuring system  110  over the link  130 . 
     With reference to FIG. 7, the set of data points is input to the ball-grid array seating plane determining system  120  and stored in the memory  150 . At the direction of the controller  140 , the least mean square plane determining circuit  210  determines a least mean square plane P START  for the set of data points. The least mean square plane determining circuit  210  then shifts the least mean square plane P START  to contact the data point T START  that is furthest from the least mean square plane, in a direction that is normal to the least mean square plane and away from the array side  25  of the ball-grid array package  10 . This is an exemplary plane. In general, any P START  plane that includes one data point furthest away from the array side  25  of the ball-grid array package in a direction normal to the plane, such that all other data points lie on the side of that plane toward the substrate of the connection elements, can be used. The line determining circuit  220  then arbitrarily establishes an initial line L R  in the shifted least mean square plane P START . The sweep angle θ, stored in the memory  150 , and the search angle α, stored in the memory  150 , are both set to 0 at the beginning of processing. Then, the plane determining circuit  230  sets a test plane P 1  equal to the shifted least mean square plane P START  and the point determining circuit  170  sets a first test point T 1  equal to the furthest data point T START . 
     The line determining circuit  220  then creates an arbitrary line L 1  in the test plane P 1  that passes through the first test point T 1 . The line rotating circuit  190  rotates the test line L 1  until the angle between the test line L 1  and the initial line L R  is equal to the sweep angle θ. 
     As shown in FIG. 8, the projection plane determining circuit  180  then establishes a first projection plane PJ 1  that is perpendicular to both the test plane P 1  and the first test line L 1 . The projection plane determining circuit  180 , in cooperation with the point determining circuit  170  and the memory  150 , then projects the data points and the test plane P 1  onto the first projection plane PJ 1 . The plane determining circuit  230 , using the test point T 1  as a pivot point, rotates the test plane P 1 , which becomes a line after it has been projected into the first projection plane PJ 1 , in a chosen direction, such as a counter-clockwise direction in the first projection plane PJ 1  until the test plane P 1  contacts a second test point T 2  within the projection plane PJ 1 . 
     The second test point T 2  is then stored in the memory  150 . Then, as shown in FIG. 9, the line determining circuit  220  defines a second test line L 2  that passes through the first and second test points T 1  and T 2 . The controller  140  then sets a second test plane P 2  equal to the rotated first test plane P 1 . 
     It should be noted that the arbitrary line L 1 , the sweep angle θ, the test plane P 1 , the first projection plane PJ 1 , the second test line L 2 , and the other accompanying constructs, as well as the “rotations” described above, form an exemplary systematic method for establishing a second test plane, but not the only method. The “rotations” described herein are simply one way of describing or visualizing the conditions that the second test plane needs to fulfill in order to support this exemplary systematic method. The effect of a “rotation” may be achieved without actually implementing rotation as a search method in a computing algorithm. For example, the second test plane can be directly established as a plane perpendicular to the first projection plane that includes the furthest data point, and the point whose projection into the first projection plane lies closest to the projection of the first test plane into the first projection plane. In general, the second test plane is a plane that contacts both the furthest data point and a second data point, all other data points lying on a single side of the plane, where the furthest data point and the second data point are furthest from the substrate in a direction normal to the test plane. For purposes of supporting a systematic searching procedure in the following steps, the preferred second test plane also lies at the smallest rotation angle relative to the first test plane, hence the use of the term “rotation” in relation to a plane used in the above-outlined description of an exemplary method. Any method that identifies such a second test plane is acceptable and useful in this systematic method. 
     The search angle determining circuit  160  then sets the search angle α equal to α plus the angle in the projection plane PJ 1  between the first test plane P 1  and the second test plane P 2 . The search angle determining circuit  160  then determines if the search angle α is greater than a preset threshold search angle α T , If the search angle α is greater than the preset threshold search angle α, the search angle determining circuit  160  resets the search angle to zero, while the sweep angle determining circuit  250  sets the sweep angle θ to: 
     
       
         θ=θ+Δθ, 
       
     
     where: 
     θ is the sweep angle; and 
     Δθ is a preset sweep angle increment. 
     The sweep angle determining circuit  250  then checks whether the sweep angle θ is greater than 360°. If the sweep angle θ is greater than 360°, in this exemplary procedure searching for additional seating planes stops and the plane having either the worst coplanarity and/or a triangle having the largest area is selected as the seating plane, as discussed below. 
     If the search angle α is not greater than the preset threshold search angle α T , the projection plane determining circuit  180  establishes a second projection plane PJ 2  that is perpendicular to the second test plane P 2  and the second test line L 2 . The projection plane determining circuit  180 , in cooperation with the point determining circuit  170  and the memory  150 , then projects the data points and the second test plane P 2  into the projection plane PJ 2 . 
     The second test line L 2  is then projected into the second projection plane PJ 2  as a point, while the second test plane P 2  is projected into the second projection plane PJ 2  as a line. The plane rotating circuit  240  rotates the projected second test plane P 2  in the second projection plane PJ 2  using the projected second test line L 2  as a pivot. In particular, as shown in FIG. 10, the plane rotating circuit  240  rotates the projected second test plane P 2  about the projected second test line L 2  in a chosen direction, such as a counter-clockwise direction until the projected second test plane P 2  contacts a third test point T 3 . The plane determining circuit  230  then uses the test points T 1 , T 2  and T 3  to define a third test plane P 3 . 
     Then, the plane rotating circuit  240  rotates the projected test plane P 2  in the opposite direction in the second projection plane PJ 2  using the projected second test line L 2  as a pivot. In particular, the plane rotating circuit  240  rotates the projected second test plane P 2  about the projected second test line L 2  in a clockwise direction, if the previously chosen direction was counter-clockwise, until the projected second test plane P 2  contacts a fourth test point T 4  (not shown). The plane determining circuit  230  then uses the test points T 1 , T 2  and T 4  to define a fourth test plane P 4  (not shown). 
     It should be noted that the second projection plane PJ 2 , and other accompanying constructs, as well as the “rotations” described above, form an exemplary systematic method for establishing third and fourth test planes. The “rotations” described herein are simply one way of describing or visualizing the conditions that the third and fourth test planes need to fulfill in order to support this exemplary systematic method. The effect of a “rotation” may be achieved without actually implementing rotation as a search method in a computing algorithm. For example, the third test plane can be directly established to be a plane that includes the furthest data point, the second data point, and the point whose projection into the second projection plane lies closest to the second test plane. In general, the third and fourth test planes are planes that contact the furthest data point, the second data point, and a third data point, with all other data points lying on a single side of the plane, where the farthest data point and the second and third data points are furthest from the substrate in a direction normal to the test plane. Furthermore, for purposes of supporting a systematic searching procedure in the following steps, the preferred third and fourth test planes are also the two planes which lie at the smallest rotation angles relative to the second test plane. Any method that identifies such third and fourth test planes is acceptable and useful in this systematic method. 
     Next, in this exemplary method, the coplanarity determining circuit  200  checks the triangle R 1  formed by the test points T 1 , T 2  and T 3  and the triangle R 2  formed by the test points T 1 , T 2  and T 4  to determine if either the triangle R 1  and/or the triangle R 2  contains the center of gravity of the ball-grid array package  10 . A center of gravity is defined as the fixed point in a material body through which the resultant force of gravitational attraction acts. Thus, the center of gravity of the ball-grid array package  10  is a point within the ball-grid array package  10  through which the resultant force of gravitational attraction acts. In other words, the center of gravity of the ball-grid array package  10  is a point within the ball-grid array package  10  at which all of the gravitational forces on the ball-grid array package  10  would be balanced if the ball-grid array package  10  were suspended from that point. 
     A triangle formed by the test points “contains” the center of gravity of the ball-grid array package  10  when a line that passes through the center of gravity of the ball-grid array package  10  and that is normal to the test plane containing that triangle also passes through an edge or the interior of the triangle. 
     For each triangle R 1  and/or R 2  that contains the center of gravity, the area of that triangle R 1  and/or R 2 , and/or the coplanarity of the test plane P 3  or P 4  that contains that triangle R 1  or R 2  that contains the center of gravity, is determined and stored. However, if both of the triangles R 1  and R 2  are determined to contain the center of gravity, the triangle R 1  or R 2  with the larger area and/or the corresponding test plane P 3  or P 4  having the greater coplanarity is used. Thus, the test plane P 3  or P 4  having the greater coplanarity and/or containing the triangle R 1  or R 2  having the greater area is stored in the memory  150  as the current potential seating plane S. 
     In this exemplary systematic method, the plane determining circuit  170  then replaces the first test point T 1  with the second test point T 2  and the plane determining circuit  170  replaces the first test plane P 1  with the second test plane P 2  and repeats the above-outlined procedure. That is, the second test point T 2  becomes the first test point T 1 , and the second test plane P 2  becomes the first test plane P 1  for the next iteration of the above-described procedure. The line determining circuit  220  then creates a new first test line L 1  that passes through the first test point T 1  and that is parallel to a line rotated away from the initial line L R  in the initial first test plane P 1  by the sweep angle θ. As illustrated in FIG. 8, the process is then repeated from the point when the projection plane determining circuit  180  forms the first projection plane PJ 1 . 
     However, as previously noted and as shown in FIG. 8, if the search angle determining circuit  160  determines, after projecting the data points into the first projection plane PJ 1 , that the search angle α is greater than a preset threshold search angle α T , the sweep angle determining circuit  250  sets the sweep angle θ equal to the current sweep angle θ plus a preset increment Δθ. The sweep angle determining circuit  250  then determines if the sweep angle θ is greater than 360°. If the sweep angle is less than 360°, the system resets itself by setting the test plane P 1  equal to the shifted least mean square plane P START  and setting the first test point T 1  equal to the data point T START . The search angle α is then set to zero and the process is repeated until the sweep angle θ monitored by the sweep angle determining circuit  250  exceeds 360°. 
     Upon the sweep angle determining circuit  250  determining that the sweep angle θ is greater than 360°, the controller  140  retrieves from memory  150  the potential seating plane S having the greatest coplanarity and/or having a triangle formed by the corresponding points T 1 , T 2  and T 3  or T 4  having the greatest area. This potential seating plane S is selected as the actual seating plane S. 
     FIGS. 11A-11C is a flowchart outlining one exemplary embodiment of the method for determining a seating plane according to this invention. Control begins in step S 1000 . In step S 1100 , the data points, i.e., the lateral positions of the apices and the distance from the apices of the balls to the reference plane, are input. Next, in step S 1200 , a least mean square plane P START  for the set of data points is determined. Then, in step S 1300 , the least mean square plane P START  is shifted along a line normal to the least mean square plane P START  until the least mean square plane P START  contacts the data point T START  that is furthest from the least mean square plane in the normal direction and away from the array side  25  of the ball-grid array package  10 . Control then continues to step S 1400 . 
     In step S 1400 , an initial line L R  is arbitrarily established in the shifted least mean square plane P START . Next, in step S 1500 , the sweep angle θ is set to 0. Then, in step S 1600 , the test plane P 1  is set to the shifted least mean square plane P START  and the first point T 1  is set to the furthest data point T START . Control then continues to step S 1700 . 
     In step S 1700 , the search angle α is set to 0. Next, in step S 1800 , a line L 1  is created in the test plane P 1  which passes through the first test point T 1 . Next, in step S 1900 , the test line L 1  is rotated until the angle between the test line L 1  and the initial line L R  is equal to the sweep angle θ. Then, in step S 2000 , a projection the plane PJ 1  is established that is perpendicular to both the test plane P 1  and the first test line L 1 . Control then continues to step S 2100 . 
     In step S 2100 , the data points and the test plane P 1  are projected onto the first projection plane PJ 1 . Next, in step S 2200 , using the first test point T 1  as a pivot, the test plane P 1 , which is actually a line once projected into the first projection plane PJ 1 , is rotated in a counter-clockwise direction in the first projection plane PJ 1  until the test plane P 1  contacts a second test point T 2  within the projection plane PJ 1 . Then, in step S 2300 , a second test plane P 2  is set equal to the rotated first test plane P 1 . Control then continues to step S 2400 . 
     In step S 2400 , the search angle α is set equal to the search angle α plus the angle in the projection plane PJ 1  between the first test plane P 1  and the second test plane P 2 . Next, in step S 2500 , a determination is made whether the search angle α is greater than a preset threshold search angle α T . If the search angle α is greater than a preset threshold search angle α T , control jumps to step S 3400 . Otherwise, control continues to step S 2600 . 
     In step S 2600 , a second projection plane PJ 2  is established that is perpendicular to a second test line L 2  formed by the test point T 1  and the test point T 2 . Next, in step S 2700 , the data points, the second test plane P 2  and the second test line L 2  are projected into the second projection plane PJ 2 . In particular, the second test plane L 2  is projected into the second projection plane PJ 2  as a point, while the second test plane P 2  is projected into the second projection plane PJ 2  as a line. Then, in step S 2800 , the projected second test plane P 2  is rotated in the second projection plane PJ 2  using the projected second test line L 2  as a pivot. In particular, the projected second test plane P 2  is rotated about the projected second test line L 2  in a counter-clockwise direction until the projected second test plane P 2  contacts a third test point T 3 . Then, in step S 2900 , the test points T 1 , T 2  and T 3  are used to define a third test plane P 3 . Control then continues to step S 3000 . 
     In step S 3000 , the projected test plane P 2  is rotated in the second projection plane PJ 2  clockwise about the projected second test line L 2  as a pivot. In particular, the projected second test plane rotated P 2  about the projected second test line L 2  in a clockwise direction until the projected second test plane P 2  contacts a fourth test point T 4 . Next, in step S 3100 , the test points T 1 , T 2  and T 4  are used to define a fourth test plane P 4 . Then, in step S 3200 , the triangle R 1  formed by the test points T 1 , T 2 , and T 3  and the triangle R 2  formed by the test points T 1 , T 2  and T 4  are checked to see if either or both contain the center of gravity of the ball-grid array. Then, in step S 3300 , the first test point T 1  is replaced with the second test point T 2  and the first test plane P 1  with the second test plane P 2 . That is, the second test point T 2  becomes the first test point T 1 , and the second test plane P 2  becomes the first test plane P 1 . Control thenjumps back to step S 1800 . 
     In step S 3400 , the sweep angle θ is set equal to the sweep angle θ plus a preset sweep angle increment Δθ. Next, in step S 3500 , a determination is made whether the sweep angle θ is greater than 360°. If the sweep angle θ is not greater than 360°, control jumps back to step S 1600 . Otherwise, control continues to step S 3600 . In step S 3600 , the test plane having the worst coplanarity and/or containing the triangle having the greatest area defined by the points T 1 , T 2  and either T 3  or T 4  and is selected as the seating plane S. The points defining this triangle also defines the seating plane S. Control then continues to step S 3700  where the control sequence ends. 
     FIG. 12 illustrates in greater detail the potential seating plane determining step S 3200  of FIG.  11 B. As shown in FIG. 12, control begins in step S 3200 . Next, in step S 3210 , a determination is made whether the center of gravity is contained within the triangle R 1  formed by the test points T 1 , T 2  and T 3 . If the center of gravity is contained within the triangle R 1 , control continues to step S 3220 . Otherwise, control jumps to step S 3260 . 
     In step S 3220 , a determination is made whether the center of gravity is also contained within the triangle R 2  formed by the test points T 1 , T 2  and T 4 . If the center of gravity is also within the triangle R 2 , control continues to step S 3230 . Otherwise, control jumps to step S 3250 . 
     In step S 3230 , a determination is made whether the area of the triangle R 1  is greater than the area of the triangle R 2  and/or if the coplanarity of the plane defined by the triangle R 1  is worse than the coplanarity of the plane defined by the triangle R 2 . If the area of triangle R 1  is greater than the area of triangle R 2  and/or if the coplanarity of the plane defined by the triangle R 1  is worse than the coplanarity of the plane defined by triangle R 2 , control jumps to step S 3650 . Otherwise, control continues to step S 3240 . 
     In step S 3240 , the test plane P 4 , and the area corresponding to the triangle R 2 , is stored as the potential seating plane. Control then jumps to step S 3280 . In contrast, in step S 3250 , the test plane P 3 , and the corresponding area to the triangle R 1 , is stored as the potential seating plane. Control then jumps to step S 3280 . 
     In step S 3260 , a determination is made whether the center of gravity falls within the triangle R 2 . If the center of gravity is within the triangle R 2 , control continues to step S 3270 . Otherwise, control jumps to step S 3280 , where control returns to step S 3300 . In step S 3270 , the area of the triangle R 2  and/or the coplanarity of the plane formed by the triangle R 2  is stored. Control then continues to step S 3280 . 
     As shown in FIGS. 5 and 6, the ball-grid array seating plane determining system  120  is preferably implemented on a program and general purpose computer. However, the ball-grid array seating plane determining system  120  can also be implemented on a special purpose computer, a programmed microprocessor or microcontroller and peripheral integrated circuit element, an ASIC or other integrated circuit, a digital signal processor, a hard wired electronic or logic circuit such as a discrete element circuit, a programmable logic device such as a PLD, PLA, FPGA or PAL, or the like. In general, any device, capable of implementing a finite state machine that is in turn capable of implementing the flowcharts as shown in FIGS. 11A-11C and  12  can be used to implement the ball-grid array seating plane determination system  120 . 
     The links  130  and  260  can be any wired or wireless link, or any known element that is capable of supplying electronic data to and from the connected elements. 
     It should be appreciated that after determining and shifting the least mean square plane P START  to contact the furthest data point T START , that more than one furthest data point may be on the shifted least mean square plane P START . If this occurs, for reasons of computational efficiency, the above method can be modified to provide more efficient processing. In particular, in the case where three or more data points fall on the shifted least mean square plane P START , the three data points that make the largest triangle are selected. If the center of gravity falls within this triangle, the triangle is saved as being a potential seating plane. Processing then continues in accordance with above-outlined procedure by arbitrarily establishing an initial line L R  in the shifted least mean square plane P START  and selecting the point which allows for rotating of the shifted least mean square plan while maintaining all the data points on one side of the shifted least mean square plane. 
     Alternatively, if two points are immediately located on the shifted least mean square plane P START , these two points can immediately be set as the line L 2 . Processing would then continue as outlined above by rotating the line L 2  until the angle between the line L 2  and the initial line L R  is equal to the sweep angle θ. Selection of the second text point T 2  would then be accomplished by selecting the point which allows for rotation of the shifted least means square plane while maintaining all the data points on one side of the shifted least mean square plane. 
     While this invention has been described in conjunction with the exemplary embodiments outlined above, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. For example, the electronic connection elements whose apices are analyzed need not necessarily be those of a conventional ball grid array. Any array of connection elements such as pins, surface mount connection pads, spring-contact connection elements, or the like may be similarly analyzed. Furthermore, the connection elements may be located on a discrete electronic package, a silicon wafer, a silicon die, a printed circuit board, a hybrid circuit, or the like. Furthermore, the foregoing exemplary method of searching for potential seating planes of practical significance is a systematic and computationally efficient method. However, many of the plane identification teachings included herein are still useful if applied in conjunction with other methods for exhaustive searching and screening, such as those allowing redundant computations, point-by-point computations, trial and error screening, and the like. Accordingly, the preferred embodiments of the invention as set forth above, are intended to be illustrative, not limiting. Various changes may be made without departing from the spirit and scope of the invention.

Technology Category: h