Abstract:
Connection assignments of differential signals within an integrated circuit (IC) package are automatically made in the design and manufacturing process of the IC package, for use in automated computing systems. Either predefined pairs of pins at both ends or pairs of pins automatically paired or a combination of both are used in the creation of an imaginary pin or midpoint between the pair. Then the point-to-point connections of the pair are automatically detangled. Once the imaginary midpoint-to-midpoint connections are created, the real differential connections can then be assigned.

Description:
TECHNICAL FIELD 
       [0001]    The present invention relates generally to the design and manufacturing of integrated circuits (ICs) packages, for use in automated computing systems. More particularly, the present invention relates to the design and configuration of signal wires for differential pairs on ICs. 
       BACKGROUND 
       [0002]    Known solutions exist for routing differential wire pairs and completing pin assignments for adjacent differential wire pairs in IC packages using either manual assignments with either visual tools or with pencil and paper and then transferring the information into a visual tool. The manual assignment method can be quite time consuming and may need to be repeated for multiple iterations of the pin assignments. 
         [0003]    In addition, manual methods for using a midpoint connection concept for detangling the wire pairs are known. However, there are no known automated methods of detangling wire pairs in regard to using a midpoint connection concept; and there are no known methods that allow various input parameters for an initial pairing algorithm. 
         [0004]    Therefore, the need exists for an automated and less time intensive method of completing pin assignments for adjacent differential wire pairs in IC packages. 
         [0005]    An additional need exists for providing an easier method to try multiple iterations or for quick sizings of possible differential wire pair assignments. 
         [0006]    Further the need exists for an automated method of detangling wire pairs in regard to using a midpoint connection concept. 
         [0007]    And, the need exists for an automated method that allows various input parameters for an initial pairing algorithm. 
       SUMMARY OF THE INVENTION 
       [0008]    A method, an automated apparatus and a program including computer readable program code are disclosed herein for assigning connections for a plurality of differential, signals between a first plurality of pins on a first component and a second plurality of pins on a second component of an IC. The method stored in the form of a segment of program code comprising a main program which is stored on a computer executable medium and includes operations and sub operations of accordingly automatically assigning a first predetermined pair of pins on the first component and automatically assigning a second predetermined pair of pins on the second component, for each differential signal in the plurality of differential signals, including inputting a list of pins selected for differential pairing and inputting pin coordinate information. 
         [0009]    The method, includes determining if pins in the list of selected pins are paired. If it is determined that pins in list of selected pins are not paired, then running a program that pairs the pins in the list of selected pins, where pairing parameters are provided to the program as program arguments. When the program is executed in a computer, the program causes the computer to perform four sub operations of checking in a first checking sub operation for an even, number of pins to pair; checking in a second checking sub operation for any pins that cannot be paired with any other pins defined by a minimum pairing distance; selecting, in a selecting sub operation, a pin closest to one of eight points approaching infinity and a 0,0 point within an infinity box; and pairing, in a pairing sub operation, the pin selected in the selecting sub operation, with one of a possible pair of pin neighbors which have the least number of pairing opportunities. The first checking, the second checking, the selecting and the pairing sub operations are repeated until either no solution is found or all possible pairs have been identified. When no solution is found, a report is generated reporting “no solution found”. When a solution is found, the program causes the computer to create a first and second imaginary midpoints for the pin pairs. 
         [0010]    If it is determined that pins in the list of selected pins are paired, then the method performs two creating operations. In the first creating operation, an imaginary first midpoint between a first predefined pair of pins on the first component and a second midpoint between a second predetermined pair of pins on the second component, for each differential signal on the plurality of differential signals are created. The second creating operation is that of creating a routing from the first midpoint to the second midpoint, for each differential signal in the plurality of differential signals. 
         [0011]    In addition, the method detangles point to point crossover connections by reducing tangling between a first routing and a second routing; and reassigning the first predetermined pair of pins to a third pair of pins on the first component. This method can be reapplied for easy iterations and sizings, during early package development stages of IC packages. 
     
    
     
       DETAILED DESCRIPTION OF THE DRAWINGS 
         [0012]    The subject matter that is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings, which are meant to be exemplary, and not limiting, wherein: 
           [0013]      FIG. 1  illustrates a method for carrying out the operations of automated assignment and interconnection of differential pin pairs of a plurality of pins configured in a ball grid array within an electronic package. 
           [0014]      FIG. 2  illustrates a computer workstation that implements the procedure illustrated in  FIG. 1 . 
           [0015]      FIG. 3  illustrates an infinity box, which represents the starting points used in an algorithm for automatically pairing sets of pins of differential pin pairs. 
           [0016]      FIG. 4  illustrates an interim phase during operation A 20  of  FIG. 1 , where midpoint connections are regrouped as pin-to-pin connections. 
           [0017]      FIG. 5  illustrates pin connections alter reassigning is complete. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]    An exemplary embodiment of a computer systems software development service offering method and system is described in detail below. The disclosed exemplary embodiment is intended to be illustrative only, since numerous modifications and variations therein will be apparent to those of ordinary skill in the art. In reference to the drawings, like numbers will indicate like parts continuously throughout the view. Further, the terms “a”, “an”, “first” and “second” herein do not denote a limitation of quantity, but rather denote the presence of one or more of the referenced item. 
         [0019]    Referring to  FIGS. 1 ,  2  and  3 , disclosed herein are a method, an apparatus and an article of manufacture for automatically assigning pin connections. The method of assigning pin connections A 10  (herein referred to as “method A10”) and an article of manufacture including a program  41  composed of computer readable program code stored on a computer executable medium, executable by a computer workstation processor  22  and when executed by computer workstation processor  22  causing computer workstation  20  to perform operations and sub operations of method A 10  of assigning connections for a plurality of differential signals between a first plurality of pins P 1  on a first component C 101  and a second plurality of pins P 2  on a second component C 102 . Examples of the plurality of pins P 1  and P 2  are illustrated in  FIGS. 2 and 3 . In the examples of  FIGS. 2 and 3 , pins are arranged in ball grid array (BGA) configurations on the first and second components C 101  and C 102  respectively. However, in various applications, the plurality of pins P 1  and P 2  can be configured in configurations other than ball grid array configurations. 
         [0020]    Referring to  FIG. 2 , the apparatus upon which method A 10  is implemented includes computer workstation  20 , containing computer processor  22 . Computer workstation  20  contains a combination of computer peripheral devices including display  12 , mouse  29 , keyboard  60 , output device  34  and network interface  28 . Network interface  28  connects to network  50 , which in turn is connected to an integrated circuit test cradle  51 . Integrated circuit test cradle  51  can hold integrated circuits for testing and exercising by various test and exercise programs. In the present embodiment, Integrated circuit test cradle  51 , holds integrated circuit under pin assignment exercise  52  which is exercised to by program  41  to assign pin connections for the first and second plurality of pin pairs P 1  and P 2  respectively. In addition, computer workstation processor  22  contains a combination of controllers. The combination of controllers, residing in computer workstation processor  22 , include display controller  23 , memory controller  25  and input/output controller  27  (herein referred to as “I/O controller 27”). Computer workstation processor  22  also contains memory  24 . Residing in memory  24  is repository  26 , which contains repository entry locations R 91 , R 92  through Rn, where the value of n is limited only by the physical size of repository  26 . Repository entry location R 91  can hold a list of selected pins for differential pairing P 54 , a set of pin coordinate information P 55 , and a set of pin pairing parameters P 59 , where the set of pin pairing parameters includes a set of algorithm A 31  starting points P 9 , illustrated as nine points in and around Infinity box  71 , where the nine points include nine sets of starting point values: 0,0; 0,∞; ∞,∞; ∞,0; ∞,−∞; 0,−∞; −∞,∞; −∞,0; and −∞,∞ (see  FIG. 3 ). Memory  24  also includes algorithm unit  30 . Residing in algorithm  30  is a plurality of algorithms from a first algorithm A 31 , a second algorithm A 32  up to an nth algorithm An. Each algorithm in the plurality of algorithms A 31 , A 32  up to An can be called by program  41  to perform an operation or sub operation of the method A 10 . In addition, computer workstation processor  22  contains program unit  40  which in turn contains program  41 , which, as discussed above, when executed by computer workstation processor  22  causes computer workstation  20  to perform the operations and sub operations of method A 10 . 
         [0021]    Method A 10  includes the operations of assigning a first predetermined pair of pins P 1  on the first component C 101  and assigning a second predetermined pair of pins P 2  on the second component C 102 , for each differential signal in the plurality of differential signals, where program  41  prompts via display  12  for input of a list of pins selected for differential pairing P 54  and also prompts for input of pin coordinate information P 55 , where, once entered into entry locations R 91 , R 92 , algorithms from the plurality of algorithms A 31 , A 32  up to An are called to retrieve the list of pins selected for differential pairing P 54  and the pin coordinate information P 55  for use in operations and sub operations performed by program  41  in carrying out method A 10 . 
         [0022]    The method A 10  includes determining at operation A 14  if pins in the list of selected pins are paired. If it is determined by program  41  at operation A 14  that the pins in the list of selected pins are not paired (NO), then program  41  calls first algorithm A 31  which when executed and running, pairs the pins in the list of selected pins for differential pairing P 54  at operation A 16 , based on pairing parameters inputted at operation A 15  as a set of arguments for first algorithm A 31 . If is determined by program  41  at operation A 14  that the pins in the list of selected pins are paired (YES), then method A 10  performs two creating operations A 17  and A 18 . In the first creating operation A 17 , an imaginary first midpoint M 3  between a first predefined pair of pins on the first component and an imaginary second midpoint M 4  between the second predetermined pair of pins on the second component, for each differential signal in the plurality of differential signals. The second creating operation A 18  is that of creating a routing from the imaginary first midpoint M 3  to the second imaginary midpoint M 4 , for each differential signal in the plurality of differential signals. 
         [0023]    When program  41  of method A 10  calls for first algorithm A 31  to run, which pairs pins in the list of selected pins at operation A 16 , program code of first algorithm A 31  when executed by a computer workstation  22  causes the computer workstation  20  to perform four sub operations (herein referred to as “4 sub ops”) of checking in a first checking sub operation for an even number of pins to pair; checking in a second checking sub operation for any pins that cannot be paired with any other pins defined by a minimum pairing distance; selecting, in a selecting sub operation, a pin closest to one of eight points approaching infinity and a 0,0 point (i.e., the nine sets of starting point values) within infinity box  71 ; and pairing, in a pairing sub operation, the selected pin selected in the selecting sub operation, with one of a possible pair of pin neighbors which have the least number of pairing opportunities, where the first checking, the second checking, the selecting and the pairing sub operations are repeated until either all possible pairs have been identified or no solution is found. If no solution is found a report is generated indicating “no solution found” and output to display  12  and/or output device  34 . If a solution is found, then as discussed above, method A 10  creates the first and second imaginary midpoints for the pin pairs at operation A 17 . 
         [0024]    In addition, method A 10  detangles point to point crossover connections by running a program to reducing tangling between a first routing and a second routing at operation A 19 , and at operation A 20 , method A 10  reassigns the first predetermined pair of pins to a third pair of pins on the first component. At return/end operation A 21 , method A 10  can be reapplied for easy iterations and sizings, during early package development stages of IC packages or method A 10  can end at return/end operation A 21 . 
         [0025]    While the disclosure has been described with reference to an exemplary embodiment, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the disclosure. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the disclosure without departing from the essential scope thereof. Therefore, it is intended that the disclosure not he limited to the particular exemplary embodiment disclosed as the best mode contemplated for carrying out this disclosure, but that the disclosure will include all embodiments falling within the scope of the appended claims.