US7325216B2 - Method and computer program for spreading trace segments in an integrated circuit package design - Google Patents

Method and computer program for spreading trace segments in an integrated circuit package design Download PDF

Info

Publication number
US7325216B2
US7325216B2 US11/271,991 US27199105A US7325216B2 US 7325216 B2 US7325216 B2 US 7325216B2 US 27199105 A US27199105 A US 27199105A US 7325216 B2 US7325216 B2 US 7325216B2
Authority
US
United States
Prior art keywords
trace
line function
trace segments
segments
segment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US11/271,991
Other versions
US20070104029A1 (en
Inventor
Chengyu Guo
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bell Semiconductor LLC
Original Assignee
LSI Logic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by LSI Logic Corp filed Critical LSI Logic Corp
Priority to US11/271,991 priority Critical patent/US7325216B2/en
Assigned to LSI LOGIC CORPORATION reassignment LSI LOGIC CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: Guo, Chengyu
Publication of US20070104029A1 publication Critical patent/US20070104029A1/en
Application granted granted Critical
Publication of US7325216B2 publication Critical patent/US7325216B2/en
Assigned to DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT reassignment DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT PATENT SECURITY AGREEMENT Assignors: AGERE SYSTEMS LLC, LSI CORPORATION
Assigned to LSI CORPORATION reassignment LSI CORPORATION CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: LSI LOGIC CORPORATION
Assigned to AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. reassignment AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: LSI CORPORATION
Assigned to LSI CORPORATION, AGERE SYSTEMS LLC reassignment LSI CORPORATION TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Assignors: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Assigned to BELL SEMICONDUCTOR, LLC reassignment BELL SEMICONDUCTOR, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD., BROADCOM CORPORATION
Assigned to CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT reassignment CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERAL AGENT SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: BELL NORTHERN RESEARCH, LLC, BELL SEMICONDUCTOR, LLC, HILCO PATENT ACQUISITION 56, LLC
Assigned to HILCO PATENT ACQUISITION 56, LLC, BELL NORTHERN RESEARCH, LLC, BELL SEMICONDUCTOR, LLC reassignment HILCO PATENT ACQUISITION 56, LLC RELEASE BY SECURED PARTY (SEE DOCUMENT FOR DETAILS). Assignors: CORTLAND CAPITAL MARKET SERVICES LLC
Expired - Fee Related legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing

Definitions

  • the present invention is directed to the design and manufacture of integrated circuits. More specifically, but without limitation thereto, the present invention is directed to a method of placement and routing of an integrated circuit package design.
  • a method of spreading trace segments in an integrated circuit package design includes steps of:
  • a computer program product includes:
  • FIG. 1 illustrates a typical placement and routing diagram for a portion of an integrated circuit package design of the prior art
  • FIG. 2 illustrates a new routing diagram after spreading a first set of trace segments in FIG. 1 ;
  • FIG. 3 illustrates a new routing diagram after spreading a second set of trace segments connected to one end of the first set of trace segments in FIG. 2 ;
  • FIG. 4 illustrates a new routing diagram after spreading a third set of trace segments connected to one end of the second set of trace segments in FIG. 3 ;
  • FIG. 5 illustrates a new routing diagram after spreading a fourth set of trace segments connected to the other end of the second set of trace segments in FIG. 4 ;
  • FIG. 6 illustrates a new routing diagram after spreading a fifth set of trace segments connected to one end of the fourth set of trace segments in FIG. 5 ;
  • FIG. 7 illustrates the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines inside the set of selected trace segments;
  • FIG. 8 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 7 ;
  • FIG. 9 illustrates a magnified view of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines outside one of the outer trace segments;
  • FIG. 10 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 9 ;
  • FIG. 11 illustrates the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines connected to define a spreading region for the set of selected trace segments;
  • FIG. 12 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 11 ;
  • FIG. 13 illustrates a magnified view of a placement and routing diagram for a portion of an integrated circuit package design that includes a set of non-parallel trace segments
  • FIG. 14 illustrates a new routing diagram after spreading the set of non-parallel trace segments in FIG. 13 ;
  • FIG. 15 illustrates a flow chart for a method of spreading a set of trace segments
  • FIG. 16 illustrates a flow chart for a computer program product for spreading trace segments in an integrated circuit package design that summarizes the method of FIG. 15 .
  • FIG. 1 illustrates a typical placement and routing diagram 100 for a portion of an integrated circuit package design of the prior art. Shown in FIG. 1 are a trace 102 , trace segments 104 , 106 , 108 and 110 , and a set of selected trace segments 112 .
  • the trace 1021 typically provides an electrical connection between two points in the placement and routing diagram 100 .
  • the trace 102 may be an input/output (I/O) trace that connects a solder bump or finger to a solder ball in an integrated circuit package.
  • An integrated circuit package may have thousands or more traces similar to the trace 102 . Because each trace typically changes angle or direction several times, each trace includes at least one trace segment exemplified by the trace segments 104 , 106 , 108 and 110 . Each of the trace segments 104 , 106 , 108 and 110 is a portion of the trace 102 that extends a given length at a constant angle.
  • the angle may have one of a defined set of values, for example, 0, 45, or 90 degrees. In some integrated circuit package designs, the angle may have any value between 0 and 360 degrees.
  • Typical routing algorithms used in integrated circuit package design software apply minimum spacing design rules for routing each trace segment that do not take into account the spacing of other trace segments that are routed nearby. As a result, some trace segments are routed with closer spacing than others, for example, the set of selected trace segments 112 .
  • Due to design requirements for signal-to-noise ratio design engineers frequently have to spread trace segments in critical routing areas to avoid crosstalk interference that may result in a malfunction of the integrated circuit. In previous routing methods, design engineers visually estimate trace spacing in critical areas and manually spread the trace segments so that they are equally spaced to minimize overall crosstalk between adjacent trace segments. Because the manual spreading procedure is labor intensive and prone to human error, automatically spreading trace segments in the placement and routing portion of the integrated circuit package design may significantly reduce the cost and improve the reliability of integrated circuit package design.
  • a method of spreading trace segments in an integrated circuit package design includes steps of:
  • FIG. 2 illustrates a new routing diagram 200 after spreading the set of selected trace segments in FIG. 1 . Shown in FIG. 2 are a set of rerouted trace segments 202 , outer trace segments 204 and 206 , inner trace segments 208 , and end points 210 .
  • the set of selected trace segments 112 in FIG. 1 has been rerouted so that each of the inner trace segments 208 is equally spaced between the outer trace segments 204 and 206 .
  • the end points 210 of the rerouted inner trace segments 208 have been changed to terminate each of the rerouted inner trace segments 208 at the intersection between the inner trace segments 208 and the trace segments that are connected to each end of the inner trace segments 208 .
  • the length of each of the inner trace segments 208 may be lengthened or shortened, and all of the inner trace segments 208 are equally spaced between the outer trace segments 204 and 206 .
  • the equal spacing of the inner trace segments 208 between the outer trace segments 204 and 206 advantageously minimizes the capacitive coupling among the set of rerouted trace segments 202 .
  • the signal-to-noise ratio of the set of trace segments 202 is significantly improved over the arrangement of FIG. 1 .
  • the spreading of the set of selected trace segments illustrated in FIG. 2 may be continued as follows.
  • FIG. 3 illustrates a new routing diagram 300 after spreading a second set of trace segments connected to one end of the first set of trace segments in FIG. 2 . Shown in FIG. 3 are a first set of rerouted trace segments 202 , a second set of rerouted trace segments 302 , outer trace segments 304 and 306 , inner trace segments 308 , and end points 310 .
  • the second set of rerouted trace segments 302 has been rerouted in the same manner described above for the first set of rerouted trace segments 202 in FIG. 2 .
  • FIG. 4 illustrates a new routing diagram 400 after spreading a third set of trace segments connected to one end of the second set of trace segments in FIG. 3 .
  • Shown in FIG. 4 are a first set of rerouted trace segments 202 , a second set of rerouted trace segments 302 , a third set of rerouted trace segments 402 , outer trace segments 404 and 406 , inner trace segments 408 , and end points 410 .
  • the third set of rerouted trace segments 402 has been rerouted in the same manner described above for the first set of trace segments 202 in FIG. 2 .
  • FIG. 5 illustrates a new routing diagram 500 after spreading a fourth set of trace segments connected to the other end of the second set of trace segments in FIG. 4 .
  • Shown in FIG. 5 are a first set of rerouted trace segments 202 , a second set of rerouted trace segments 302 , a third set of rerouted trace segments 402 , a fourth set of rerouted trace segments 502 , outer trace segments 504 and 506 , inner trace segments 508 , and end points 510 .
  • the fourth set of rerouted trace segments 502 has been rerouted in the same manner described above for the first set of trace segments 202 in FIG. 2 .
  • FIG. 6 illustrates a new routing diagram 600 after spreading a fifth set of trace segments connected to one end of the fourth set of trace segments in FIG. 5 .
  • Shown in FIG. 5 are a first set of rerouted trace segments 202 , a second set of rerouted trace segments 302 , a third set of rerouted trace segments 402 , a fourth set of rerouted trace segments 502 , a fifth set of rerouted trace segments 602 , outer trace segments 604 and 606 , inner trace segments 608 , and end points 610 .
  • the fifth set of rerouted trace segments 602 has been rerouted in the same manner described above for the first set of rerouted trace segments 202 in FIG. 2 .
  • An integrated circuit package designer or other user may select each set of trace segments to be spread in FIGS. 2-6 by a window, by a temp group, or directly by clicking on each segment with a pointing device according to well-known computer automated design (CAD) techniques.
  • CAD computer automated design
  • FIG. 7 illustrates a magnified view 700 of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines inside the outer trace segments. Shown in FIG. 7 are a set of selected trace segments 702 , outer trace segments 704 and 706 , inner trace segments 708 and 710 , boundary lines 712 and 714 , a number of equally distant points 716 and 718 , inner line functions 720 and 722 , and end points 724 and 726 .
  • the boundary lines 712 and 714 are received as input by an integrated circuit package designer or user according to well known computer automated design (CAD) techniques, for example, by clicking on one end point of the boundary line 712 or 714 , dragging a line from the end point, and clicking on the opposite end point with a manually operated pointing device such as a computer mouse.
  • CAD computer automated design
  • the boundary line 712 is drawn approximately through one end of each of the outer trace segments 704 and 706
  • the boundary line 714 is drawn inside the opposite end of each of outer trace segments 704 and 706 .
  • the boundary line 712 is divided into the equally distant points 716 and 718 from the outer trace segments 704 and 706 .
  • the number of equally distant points is equal to the number of inner line segments.
  • the inner line functions 720 and 722 are generated so that they pass through each of the equally distant points 716 and 718 respectively and have the same slope as each of the outer trace segments 704 and 706 .
  • the end point 724 is calculated for the inner line function 720 at the intersection of the inner line function 720 and the trace segment connected to one end of the inner trace segment 708 .
  • the end point 726 is calculated for the inner line function 720 at the intersection of the inner line function 720 and the trace segment connected to the opposite end of the inner trace segment 708 .
  • a pair of end points is generated for the inner line function 722 .
  • FIG. 8 illustrates a new routing diagram 800 after spreading the set of trace segments selected in FIG. 7 . Shown in FIG. 8 are a set of rerouted trace segments 802 , outer trace segments 704 and 706 , boundary lines 712 and 714 , and inner trace segments 804 and 806 .
  • the inner trace segments 804 and 806 are routed collinearly with the inner line functions 720 and 722 in FIG. 7 , rerouting the inner trace segments 708 and 710 .
  • the inner trace segments 802 and 804 are equally spaced along the boundary lines 712 and 714 from the outer trace segments 704 and 706 , advantageously minimizing the capacitive coupling among the set of rerouted trace segments 802 .
  • FIG. 9 illustrates a magnified view 900 of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines outside one of the outer trace segments. Shown in FIG. 9 are a set of selected trace segments 702 , outer trace segments 704 and 706 , inner trace segments 708 and 710 , boundary lines 902 and 904 , a number of equally distant points 906 and 908 , an outer line function 910 , inner line functions 912 and 914 , and end points 916 and 918 .
  • the boundary lines 902 and 904 may be made, for example, in the same manner described above with reference to FIG. 7 .
  • the boundary lines 902 and 904 are drawn outside the end points of the outer trace segment 704 and through the end points of the outer trace segment 706 .
  • the outer line function 910 passes through the point where the trace segment connected to one end of the trace segment 704 intersects the boundary line 902 .
  • the intersection becomes the end point 916 of the outer line function 910
  • the other end point 918 is the intersection of the trace segment connected to the other end of the outer trace segment 704 and the outer line function 910 .
  • the outer line function 910 may then be calculated from the end points 916 and 918 .
  • the outer line function 910 is parallel to the outer trace segment 704 .
  • the boundary line 902 is divided into the equally distant points 906 and 908 from the outer line function 910 and the outer trace segment 706 .
  • the inner line functions 912 and 914 are generated so that they pass through each of the equally distant points 906 and 908 respectively and have the same slope as each of the outer line function 910 and the outer trace segment 706 .
  • a pair of end points for each of the inner line functions 912 and 914 is calculated in the same manner as described above with reference to FIG. 7 .
  • FIG. 10 illustrates a new routing diagram 1000 after spreading the set of trace segments selected in FIG. 9 . Shown in FIG. 10 are a set of rerouted trace segments 1002 , outer trace segments 1004 and 706 , boundary lines 902 and 904 , and inner trace segments 1006 and 1008 .
  • the outer trace segment 1004 is routed collinearly with the outer line function 910
  • the inner trace segments 1006 and 1008 are routed collinearly with the inner line functions 912 and 914 in FIG. 9 , rerouting the inner trace segments 708 and 710 .
  • the inner trace segments 1006 and 1008 are equally spaced along the boundary lines 902 and 904 from the outer trace segments 1004 and 706 , advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1002 .
  • FIG. 11 illustrates a magnified view 1100 of the routing diagram of FIG. 1 in which a set of trace segments is selected by defining a spreading region for the set of selected trace segments. Shown in FIG. 11 are a set of selected trace segments 702 , outer trace segments 704 and 706 , inner trace segments 708 and 710 , a spreading region 1102 , boundary lines 1104 and 1106 , a number of equally distant points 1108 and 1110 , outer line functions 1112 and 1114 , inner line functions 1116 and 1118 , and end points 1120 , 1122 , 1124 , and 1126 .
  • the spreading region 1102 may be received as input, for example, in the same manner as the boundary lines 712 and 714 described above with reference to FIG. 7 , except that the boundary lines 1104 and 1106 are connected to form a polygon that encloses the spreading region 1102 .
  • the spreading region 1102 is drawn so that the boundary lines 1104 and 1106 lie outside the end points of both the outer trace segments 704 and 706 .
  • Drawing the boundary lines 1104 and 1106 outside the end points of either or both of the outer trace segments 704 and 706 may be used to indicate that one or both of the outer trace segments 704 and 706 are to be rerouted so that their end points lie on one of the boundary lines 1104 and 1106 .
  • the outer line functions 1112 and 1114 are calculated for the corresponding outer trace segments 704 and 706 so that the outer line functions 1112 and 1114 have the same slope as each of the outer trace segments 704 and 706 .
  • Each of the outer line functions 1112 and 1114 passes through one of the end points 1120 and 1122 where the trace segment connected to one end of each of the outer trace segments 704 and 706 intersects the boundary line 1104 .
  • the other end point 1124 of the outer line function 1112 is the intersection of the trace segment connected to the other end of the outer trace segment 704 and the outer line function 1112
  • the other end point 1126 of the outer line function 1114 is the intersection of the trace segment connected to the other end of the outer trace segment 706 and the outer line function 1114 .
  • the boundary line 1106 is divided into the equally distant points 1108 and 1110 from the outer line functions 1112 and 1114 .
  • the inner line functions 1116 and 1118 are generated so that they pass through each of the equally distant points 1108 and 1110 respectively and have the same slope as each of the outer line functions 1112 and 1114 .
  • a pair of end points for each of the inner line functions 1116 and 1118 is calculated in the same manner as described above with reference to FIG. 7 .
  • FIG. 12 illustrates a new routing diagram 1200 after spreading the set of trace segments selected in FIG. 11 . Shown in FIG. 12 are a spreading region 1102 , a set of rerouted trace segments 1202 , outer trace segments 1204 and 1206 , and inner trace segments 1208 and 1210 .
  • the outer trace segments 1204 and 1206 are routed collinearly with the outer line functions 1112 and 1114 in FIG. 11
  • the inner trace segments 1208 and 1210 are routed collinearly with the inner line functions 1116 and 1118 in FIG. 11 , rerouting the inner trace segments 708 and 710 .
  • the inner trace segments 1208 and 1210 are equally spaced along the boundary line 1106 from the outer trace segments 1204 and 1206 , advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1202 .
  • FIG. 13 illustrates a magnified view 1300 of a placement and routing diagram for a portion of an integrated circuit package design that includes a set of non-parallel trace segments. Shown in FIG. 13 are a set of selected trace segments 1302 , outer trace segments 1304 and 1306 , inner trace segments 1308 , 1310 , and 1312 , inner line functions 1318 , 1320 , and 1322 , boundary lines 1324 and 1326 , and equally spaced points 1328 , 1330 , 1332 , 1334 , 1336 , and 1338 .
  • step ⁇ ( i ) angle ⁇ ⁇ between ⁇ ⁇ outer ⁇ ⁇ segments N + 1 * i ( 1 )
  • N is the number of inner segments
  • i is the inner line function index.
  • the stepped angle is added to the slope of the outer trace segment having the lowest slope to generate the slope of each inner line function.
  • the inner line functions 1322 , 1320 , and 1318 would have slopes of 50 degrees, 60 degrees, and 70 degrees, respectively.
  • the end points of the outer trace segments 1304 and 1306 and of the inner line functions 1308 , 1310 , and 1312 may be calculated in the same manner as described above with reference to FIG. 9 .
  • a distance between the outer trace segments 1304 and 1306 may be calculated along the second boundary line 1326 and divided by the same number of equally spaced points as the first boundary line 1324 .
  • Each of the inner line functions 1318 , 1320 , and 1322 is calculated to intersect the first and second boundary lines at a corresponding pair of the equally distant points 1328 , 1330 , and 1332 along the first boundary line 1314 and the equally distant points 1334 , 1336 , and 1338 along the second boundary line 1326 .
  • the end points of the inner line functions 1318 , 1320 , and 1322 may be calculated in the same manner as described above with reference to FIG. 9 .
  • FIG. 14 illustrates a new routing diagram 1400 after spreading the set of non-parallel trace segments in FIG. 13 . Shown in FIG. 14 are a set of rerouted trace segments 1402 , outer trace segments 1304 and 1306 , and inner trace segments 1404 , 1406 , and 1408 .
  • the inner trace segments 1404 , 1406 , and 1408 are routed collinearly with the inner line functions 1318 , 1320 , and 1322 in FIG. 13 , rerouting the inner trace segments 1308 , 1310 , and 1312 .
  • the inner trace segments 1404 , 1406 , and 1408 are equally spaced from the outer trace segments 1304 and 1306 , advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1402 .
  • the method of spreading trace segments described in the examples above may be performed by the following steps.
  • FIG. 15 illustrates a flow chart 1500 for a method of spreading a set of trace segments.
  • Step 1502 is the entry point of the flow chart 1500 .
  • a placement and routing of at least a portion of an integrated circuit package design is received as input according to well-known techniques.
  • the placement and routing may include only portions of an integrated circuit package design that are noise critical areas.
  • the placement and routing of the entire integrated circuit package design may be received as input for equally spreading all the trace segments if desired.
  • a set of at least three trace segments is selected from the placement and routing that includes at least one inner trace segment routed between two outer trace segments.
  • the set of trace segments may be selected manually by an integrated circuit package designer or other user, or the set of trace segments may be read from a previously generated list.
  • step 1508 if the selection of the set of trace segments indicates that one or both of the outer trace segments are to be rerouted, then the method continues from step 1510 . Otherwise, the method continues from step 1512 .
  • step 1510 an outer line function and a corresponding pair of end points is calculated for each outer trace segment to be rerouted as described above with reference to FIG. 11 .
  • a distance between the outer trace segments and/or the outer line function is divided by a number of equally spaced points.
  • an inner line function is calculated for each inner trace segment.
  • Each inner line function passes through one of the equally spaced points so that each inner line function is equally spaced from an adjacent inner line function, an adjacent outer line function, or an adjacent outer trace segment on each side of the inner line function.
  • step 1516 the slope of each inner line function is set equal to that of the outer trace segment having a slope that does not exceed the slope of the other outer trace segment. In other words, if the slopes of the outer trace segments are equal, then the slope of each inner line function is set equal to that of either outer trace segment. On the other hand, if the slopes of the outer trace segments are not equal, then the slope of each inner line function is set equal to that of the outer trace segment having the lesser slope.
  • step 1518 if the outer trace segments have the same slope, then the method continues from step 1522 . Otherwise, the method continues from step 1520 .
  • step 1520 the angle between the outer trace segments is divided into a stepped angle, and the stepped angle is added to the slope for each inner line function as described above with reference to equation (1).
  • a distance between the outer trace segments may be calculated along a second boundary line between the two outer segments according to well-known techniques and divided by a number of points that are equally spaced from one another and the outer trace segments in the same manner as the first boundary line.
  • Each inner line function is calculated to intersect the first and second boundary lines at a corresponding pair of equally distant points along the first and second boundary lines.
  • a pair of end points is calculated for each inner line function.
  • Each end point may be found by calculating the intersection point of the inner line function and a trace segment that is connected to one end of the corresponding inner trace segment according to well-known techniques.
  • the trace segment connected to one end of the corresponding inner trace segment may be extended or trimmed as necessary to terminate at the intersection point.
  • step 1524 a new routing is generated as output that reroutes each inner trace segment collinearly with the corresponding inner line function and terminates each inner trace segment by the corresponding pair of end points.
  • Step 1526 is the exit point of the flow chart 1500 .
  • the flow chart described above may also be automated by instructions for a computer.
  • the instructions may be embodied in a disk, a CD-ROM, and other computer readable media according to well known computer programming techniques.
  • FIG. 16 illustrates a flow chart for a computer program product for spreading trace segments in an integrated circuit package design that summarizes the method of FIG. 15 .
  • Step 1602 is the entry point of the flow chart 1600 .
  • step 1604 a placement and routing of at least a portion of an integrated circuit package design is received as input.
  • a set of at least three trace segments is selected from the placement and routing that includes at least one inner trace segment routed between two outer trace segments.
  • an inner line function is calculated for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function.
  • a pair of end points is calculated for the inner line function.
  • one end point of the pair of end points may be the intersection of the inner line function and one of a plurality of equally spaced points along a boundary line between the outer trace segments and/or an outer line function.
  • the other end point of the pair of end points may be the intersection of the inner line function and a trace segment connected to the inner trace segment.
  • a new routing is generated as output that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
  • Step 1614 is the exit point of the flow chart 1600 .
  • the method described above may also be applied to the layout of integrated circuits as well as to integrated circuit package designs within the scope of the appended claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

A method of routing an integrated circuit package includes receiving as input a placement and routing of at least a portion of an integrated circuit package design, selecting a set of at least three trace segments from the placement and routing that includes at least one inner trace segment routed between two outer trace segments, calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function, calculating a pair of end points for the inner line function, and generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.

Description

BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention is directed to the design and manufacture of integrated circuits. More specifically, but without limitation thereto, the present invention is directed to a method of placement and routing of an integrated circuit package design.
2. Description of Related Art
In advanced integrated circuit package designs, sufficient spacing between wire trace interconnects is not only required to meet minimum spacing design rules for manufacturing, but also to avoid capacitively coupled crosstalk that may interfere with proper operation of the manufactured integrated circuit. Previous routing algorithms typically apply minimum spacing design rules for routing nets in each block of the integrated circuit package design.
SUMMARY OF THE INVENTION
A method of spreading trace segments in an integrated circuit package design includes steps of:
    • (a) receiving as input a placement and routing of at least a portion of an integrated circuit package design;
    • (b) selecting a set of at least three trace segments from the placement and routing that includes at least one inner trace segment routed between two outer trace segments;
    • (c) calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function;
    • (d) calculating a pair of end points for the inner line function; and
    • (e) generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
In another embodiment, a computer program product includes:
    • a medium for embodying a computer program for input to a computer; and
    • a computer program embodied in the medium for causing the computer to perform steps of:
    • (a) receiving as input a placement and routing of at least a portion of an integrated circuit package design;
    • (b) selecting a set of at least three trace segments from the placement and routing that includes at least one inner trace segment routed between two outer trace segments;
    • (c) calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function;
    • (d) calculating a pair of end points for the inner line function; and
    • (e) generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
BRIEF DESCRIPTION OF THE DRAWINGS
The above and other aspects, features and advantages will become more apparent from the description in conjunction with the following drawings presented by way of example and not limitation, wherein like references indicate similar elements throughout the several views of the drawings, and wherein:
FIG. 1 illustrates a typical placement and routing diagram for a portion of an integrated circuit package design of the prior art;
FIG. 2 illustrates a new routing diagram after spreading a first set of trace segments in FIG. 1;
FIG. 3 illustrates a new routing diagram after spreading a second set of trace segments connected to one end of the first set of trace segments in FIG. 2;
FIG. 4 illustrates a new routing diagram after spreading a third set of trace segments connected to one end of the second set of trace segments in FIG. 3;
FIG. 5 illustrates a new routing diagram after spreading a fourth set of trace segments connected to the other end of the second set of trace segments in FIG. 4;
FIG. 6 illustrates a new routing diagram after spreading a fifth set of trace segments connected to one end of the fourth set of trace segments in FIG. 5;
FIG. 7 illustrates the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines inside the set of selected trace segments;
FIG. 8 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 7;
FIG. 9 illustrates a magnified view of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines outside one of the outer trace segments;
FIG. 10 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 9;
FIG. 11 illustrates the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines connected to define a spreading region for the set of selected trace segments;
FIG. 12 illustrates a new routing diagram after spreading the set of trace segments selected in FIG. 11;
FIG. 13 illustrates a magnified view of a placement and routing diagram for a portion of an integrated circuit package design that includes a set of non-parallel trace segments;
FIG. 14 illustrates a new routing diagram after spreading the set of non-parallel trace segments in FIG. 13;
FIG. 15 illustrates a flow chart for a method of spreading a set of trace segments; and
FIG. 16 illustrates a flow chart for a computer program product for spreading trace segments in an integrated circuit package design that summarizes the method of FIG. 15.
Elements in the figures are illustrated for simplicity and clarity and have not necessarily been drawn to scale. For example, the dimensions, sizing, and/or relative placement of some of the elements in the figures may be exaggerated relative to other elements to clarify distinctive features of the illustrated embodiments. Also, common but well-understood elements that may be useful or necessary in a commercially feasible embodiment are often not depicted in order to facilitate a less obstructed view of the illustrated embodiments.
DESCRIPTION OF THE ILLUSTRATED EMBODIMENTS
The following description is not to be taken in a limiting sense, rather for the purpose of describing by specific examples the general principles that are incorporated into the illustrated embodiments. For example, certain actions or steps may be described or depicted in a specific order to be performed. However, practitioners of the art will understand that the specific order is only given by way of example and that the specific order does not exclude performing the described steps in another order to achieve substantially the same result. Also, the terms and expressions used in the description have the ordinary meanings accorded to such terms and expressions in the corresponding respective areas of inquiry and study except where other meanings have been specifically set forth herein.
FIG. 1 illustrates a typical placement and routing diagram 100 for a portion of an integrated circuit package design of the prior art. Shown in FIG. 1 are a trace 102, trace segments 104, 106, 108 and 110, and a set of selected trace segments 112.
In FIG. 1, the trace 1021 typically provides an electrical connection between two points in the placement and routing diagram 100. For example, the trace 102 may be an input/output (I/O) trace that connects a solder bump or finger to a solder ball in an integrated circuit package. An integrated circuit package may have thousands or more traces similar to the trace 102. Because each trace typically changes angle or direction several times, each trace includes at least one trace segment exemplified by the trace segments 104, 106, 108 and 110. Each of the trace segments 104, 106, 108 and 110 is a portion of the trace 102 that extends a given length at a constant angle. Depending on the integrated circuit package design, the angle may have one of a defined set of values, for example, 0, 45, or 90 degrees. In some integrated circuit package designs, the angle may have any value between 0 and 360 degrees.
Typical routing algorithms used in integrated circuit package design software apply minimum spacing design rules for routing each trace segment that do not take into account the spacing of other trace segments that are routed nearby. As a result, some trace segments are routed with closer spacing than others, for example, the set of selected trace segments 112. Due to design requirements for signal-to-noise ratio, design engineers frequently have to spread trace segments in critical routing areas to avoid crosstalk interference that may result in a malfunction of the integrated circuit. In previous routing methods, design engineers visually estimate trace spacing in critical areas and manually spread the trace segments so that they are equally spaced to minimize overall crosstalk between adjacent trace segments. Because the manual spreading procedure is labor intensive and prone to human error, automatically spreading trace segments in the placement and routing portion of the integrated circuit package design may significantly reduce the cost and improve the reliability of integrated circuit package design.
In one embodiment, a method of spreading trace segments in an integrated circuit package design includes steps of:
    • (a) receiving as input a placement and routing of at least a portion of an integrated circuit package design;
    • (b) selecting a set of at least three trace segments from the placement and routing that includes at least one inner trace segment routed between two outer trace segments;
    • (c) calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function;
    • (d) calculating a pair of end points for the inner line function; and
    • (e) generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
FIG. 2 illustrates a new routing diagram 200 after spreading the set of selected trace segments in FIG. 1. Shown in FIG. 2 are a set of rerouted trace segments 202, outer trace segments 204 and 206, inner trace segments 208, and end points 210.
In FIG. 2, the set of selected trace segments 112 in FIG. 1 has been rerouted so that each of the inner trace segments 208 is equally spaced between the outer trace segments 204 and 206. Also, the end points 210 of the rerouted inner trace segments 208 have been changed to terminate each of the rerouted inner trace segments 208 at the intersection between the inner trace segments 208 and the trace segments that are connected to each end of the inner trace segments 208. As a result of modifying the end points 210, the length of each of the inner trace segments 208 may be lengthened or shortened, and all of the inner trace segments 208 are equally spaced between the outer trace segments 204 and 206. The equal spacing of the inner trace segments 208 between the outer trace segments 204 and 206 advantageously minimizes the capacitive coupling among the set of rerouted trace segments 202. As a result, the signal-to-noise ratio of the set of trace segments 202 is significantly improved over the arrangement of FIG. 1.
The spreading of the set of selected trace segments illustrated in FIG. 2 may be continued as follows.
FIG. 3 illustrates a new routing diagram 300 after spreading a second set of trace segments connected to one end of the first set of trace segments in FIG. 2. Shown in FIG. 3 are a first set of rerouted trace segments 202, a second set of rerouted trace segments 302, outer trace segments 304 and 306, inner trace segments 308, and end points 310.
In FIG. 3, the second set of rerouted trace segments 302 has been rerouted in the same manner described above for the first set of rerouted trace segments 202 in FIG. 2.
FIG. 4 illustrates a new routing diagram 400 after spreading a third set of trace segments connected to one end of the second set of trace segments in FIG. 3. Shown in FIG. 4 are a first set of rerouted trace segments 202, a second set of rerouted trace segments 302, a third set of rerouted trace segments 402, outer trace segments 404 and 406, inner trace segments 408, and end points 410.
In FIG. 4, the third set of rerouted trace segments 402 has been rerouted in the same manner described above for the first set of trace segments 202 in FIG. 2.
FIG. 5 illustrates a new routing diagram 500 after spreading a fourth set of trace segments connected to the other end of the second set of trace segments in FIG. 4. Shown in FIG. 5 are a first set of rerouted trace segments 202, a second set of rerouted trace segments 302, a third set of rerouted trace segments 402, a fourth set of rerouted trace segments 502, outer trace segments 504 and 506, inner trace segments 508, and end points 510.
In FIG. 5, the fourth set of rerouted trace segments 502 has been rerouted in the same manner described above for the first set of trace segments 202 in FIG. 2.
FIG. 6 illustrates a new routing diagram 600 after spreading a fifth set of trace segments connected to one end of the fourth set of trace segments in FIG. 5. Shown in FIG. 5 are a first set of rerouted trace segments 202, a second set of rerouted trace segments 302, a third set of rerouted trace segments 402, a fourth set of rerouted trace segments 502, a fifth set of rerouted trace segments 602, outer trace segments 604 and 606, inner trace segments 608, and end points 610.
In FIG. 6, the fifth set of rerouted trace segments 602 has been rerouted in the same manner described above for the first set of rerouted trace segments 202 in FIG. 2.
An integrated circuit package designer or other user may select each set of trace segments to be spread in FIGS. 2-6 by a window, by a temp group, or directly by clicking on each segment with a pointing device according to well-known computer automated design (CAD) techniques.
FIG. 7 illustrates a magnified view 700 of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines inside the outer trace segments. Shown in FIG. 7 are a set of selected trace segments 702, outer trace segments 704 and 706, inner trace segments 708 and 710, boundary lines 712 and 714, a number of equally distant points 716 and 718, inner line functions 720 and 722, and end points 724 and 726.
In FIG. 7, the boundary lines 712 and 714 are received as input by an integrated circuit package designer or user according to well known computer automated design (CAD) techniques, for example, by clicking on one end point of the boundary line 712 or 714, dragging a line from the end point, and clicking on the opposite end point with a manually operated pointing device such as a computer mouse. In this example, the boundary line 712 is drawn approximately through one end of each of the outer trace segments 704 and 706, and the boundary line 714 is drawn inside the opposite end of each of outer trace segments 704 and 706.
The boundary line 712 is divided into the equally distant points 716 and 718 from the outer trace segments 704 and 706. In general, the number of equally distant points is equal to the number of inner line segments. The inner line functions 720 and 722 are generated so that they pass through each of the equally distant points 716 and 718 respectively and have the same slope as each of the outer trace segments 704 and 706.
The end point 724 is calculated for the inner line function 720 at the intersection of the inner line function 720 and the trace segment connected to one end of the inner trace segment 708. The end point 726 is calculated for the inner line function 720 at the intersection of the inner line function 720 and the trace segment connected to the opposite end of the inner trace segment 708. In the same manner, a pair of end points is generated for the inner line function 722.
FIG. 8 illustrates a new routing diagram 800 after spreading the set of trace segments selected in FIG. 7. Shown in FIG. 8 are a set of rerouted trace segments 802, outer trace segments 704 and 706, boundary lines 712 and 714, and inner trace segments 804 and 806.
In FIG. 8, the inner trace segments 804 and 806 are routed collinearly with the inner line functions 720 and 722 in FIG. 7, rerouting the inner trace segments 708 and 710. The inner trace segments 802 and 804 are equally spaced along the boundary lines 712 and 714 from the outer trace segments 704 and 706, advantageously minimizing the capacitive coupling among the set of rerouted trace segments 802.
FIG. 9 illustrates a magnified view 900 of the routing diagram of FIG. 1 in which a set of trace segments is selected using boundary lines outside one of the outer trace segments. Shown in FIG. 9 are a set of selected trace segments 702, outer trace segments 704 and 706, inner trace segments 708 and 710, boundary lines 902 and 904, a number of equally distant points 906 and 908, an outer line function 910, inner line functions 912 and 914, and end points 916 and 918.
In FIG. 9, the boundary lines 902 and 904 may be made, for example, in the same manner described above with reference to FIG. 7. In this example, the boundary lines 902 and 904 are drawn outside the end points of the outer trace segment 704 and through the end points of the outer trace segment 706.
The outer line function 910 passes through the point where the trace segment connected to one end of the trace segment 704 intersects the boundary line 902. The intersection becomes the end point 916 of the outer line function 910, while the other end point 918 is the intersection of the trace segment connected to the other end of the outer trace segment 704 and the outer line function 910. The outer line function 910 may then be calculated from the end points 916 and 918. In this example, the outer line function 910 is parallel to the outer trace segment 704.
After generating the outer line function 910, the boundary line 902 is divided into the equally distant points 906 and 908 from the outer line function 910 and the outer trace segment 706. The inner line functions 912 and 914 are generated so that they pass through each of the equally distant points 906 and 908 respectively and have the same slope as each of the outer line function 910 and the outer trace segment 706.
After generating the inner line functions 912 and 914, a pair of end points for each of the inner line functions 912 and 914 is calculated in the same manner as described above with reference to FIG. 7.
FIG. 10 illustrates a new routing diagram 1000 after spreading the set of trace segments selected in FIG. 9. Shown in FIG. 10 are a set of rerouted trace segments 1002, outer trace segments 1004 and 706, boundary lines 902 and 904, and inner trace segments 1006 and 1008.
In FIG. 10, the outer trace segment 1004 is routed collinearly with the outer line function 910, and the inner trace segments 1006 and 1008 are routed collinearly with the inner line functions 912 and 914 in FIG. 9, rerouting the inner trace segments 708 and 710. The inner trace segments 1006 and 1008 are equally spaced along the boundary lines 902 and 904 from the outer trace segments 1004 and 706, advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1002.
FIG. 11 illustrates a magnified view 1100 of the routing diagram of FIG. 1 in which a set of trace segments is selected by defining a spreading region for the set of selected trace segments. Shown in FIG. 11 are a set of selected trace segments 702, outer trace segments 704 and 706, inner trace segments 708 and 710, a spreading region 1102, boundary lines 1104 and 1106, a number of equally distant points 1108 and 1110, outer line functions 1112 and 1114, inner line functions 1116 and 1118, and end points 1120, 1122, 1124, and 1126.
In FIG. 11, the spreading region 1102 may be received as input, for example, in the same manner as the boundary lines 712 and 714 described above with reference to FIG. 7, except that the boundary lines 1104 and 1106 are connected to form a polygon that encloses the spreading region 1102. In this example, the spreading region 1102 is drawn so that the boundary lines 1104 and 1106 lie outside the end points of both the outer trace segments 704 and 706. Drawing the boundary lines 1104 and 1106 outside the end points of either or both of the outer trace segments 704 and 706 may be used to indicate that one or both of the outer trace segments 704 and 706 are to be rerouted so that their end points lie on one of the boundary lines 1104 and 1106.
The outer line functions 1112 and 1114 are calculated for the corresponding outer trace segments 704 and 706 so that the outer line functions 1112 and 1114 have the same slope as each of the outer trace segments 704 and 706. Each of the outer line functions 1112 and 1114 passes through one of the end points 1120 and 1122 where the trace segment connected to one end of each of the outer trace segments 704 and 706 intersects the boundary line 1104. The other end point 1124 of the outer line function 1112 is the intersection of the trace segment connected to the other end of the outer trace segment 704 and the outer line function 1112, while the other end point 1126 of the outer line function 1114 is the intersection of the trace segment connected to the other end of the outer trace segment 706 and the outer line function 1114.
After generating the outer line functions 1112 and 1114, the boundary line 1106 is divided into the equally distant points 1108 and 1110 from the outer line functions 1112 and 1114. The inner line functions 1116 and 1118 are generated so that they pass through each of the equally distant points 1108 and 1110 respectively and have the same slope as each of the outer line functions 1112 and 1114.
After generating the inner line functions 1116 and 1118, a pair of end points for each of the inner line functions 1116 and 1118 is calculated in the same manner as described above with reference to FIG. 7.
FIG. 12 illustrates a new routing diagram 1200 after spreading the set of trace segments selected in FIG. 11. Shown in FIG. 12 are a spreading region 1102, a set of rerouted trace segments 1202, outer trace segments 1204 and 1206, and inner trace segments 1208 and 1210.
In FIG. 12, the outer trace segments 1204 and 1206 are routed collinearly with the outer line functions 1112 and 1114 in FIG. 11, and the inner trace segments 1208 and 1210 are routed collinearly with the inner line functions 1116 and 1118 in FIG. 11, rerouting the inner trace segments 708 and 710. The inner trace segments 1208 and 1210 are equally spaced along the boundary line 1106 from the outer trace segments 1204 and 1206, advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1202.
FIG. 13 illustrates a magnified view 1300 of a placement and routing diagram for a portion of an integrated circuit package design that includes a set of non-parallel trace segments. Shown in FIG. 13 are a set of selected trace segments 1302, outer trace segments 1304 and 1306, inner trace segments 1308, 1310, and 1312, inner line functions 1318, 1320, and 1322, boundary lines 1324 and 1326, and equally spaced points 1328, 1330, 1332, 1334, 1336, and 1338.
In FIG. 13, the difference in slope between the outer trace segments 1304 and 1306 is divided into a stepped angle according to the formula
step ( i ) = angle between outer segments N + 1 * i ( 1 )
where N is the number of inner segments and i is the inner line function index. For example, if the difference in slope between the two outer trace segments 1304 and 1306 is 40 degrees and there are N=3 inner trace segments, then the stepped angle would have a value of (40/4*1)=10 degrees for the first inner line function 1312, and (40/4*2)=20 degrees for the second inner line function 1310, and (40/4*3)=30 degrees for the third inner line function 1308. The stepped angle is added to the slope of the outer trace segment having the lowest slope to generate the slope of each inner line function. For example, if the outer trace segments 1306 and 1304 have slopes of 40 degrees and 80 degrees respectively, then the inner line functions 1322, 1320, and 1318 would have slopes of 50 degrees, 60 degrees, and 70 degrees, respectively. The end points of the outer trace segments 1304 and 1306 and of the inner line functions 1308, 1310, and 1312 may be calculated in the same manner as described above with reference to FIG. 9.
Alternatively, a distance between the outer trace segments 1304 and 1306 may be calculated along the second boundary line 1326 and divided by the same number of equally spaced points as the first boundary line 1324. Each of the inner line functions 1318, 1320, and 1322 is calculated to intersect the first and second boundary lines at a corresponding pair of the equally distant points 1328, 1330, and 1332 along the first boundary line 1314 and the equally distant points 1334, 1336, and 1338 along the second boundary line 1326. The end points of the inner line functions 1318, 1320, and 1322 may be calculated in the same manner as described above with reference to FIG. 9.
FIG. 14 illustrates a new routing diagram 1400 after spreading the set of non-parallel trace segments in FIG. 13. Shown in FIG. 14 are a set of rerouted trace segments 1402, outer trace segments 1304 and 1306, and inner trace segments 1404, 1406, and 1408.
In FIG. 14, the inner trace segments 1404, 1406, and 1408 are routed collinearly with the inner line functions 1318, 1320, and 1322 in FIG. 13, rerouting the inner trace segments 1308, 1310, and 1312. The inner trace segments 1404, 1406, and 1408 are equally spaced from the outer trace segments 1304 and 1306, advantageously minimizing the capacitive coupling among the set of rerouted trace segments 1402.
The method of spreading trace segments described in the examples above may be performed by the following steps.
FIG. 15 illustrates a flow chart 1500 for a method of spreading a set of trace segments.
Step 1502 is the entry point of the flow chart 1500.
In step 1504, a placement and routing of at least a portion of an integrated circuit package design is received as input according to well-known techniques. For example, the placement and routing may include only portions of an integrated circuit package design that are noise critical areas. Alternatively, the placement and routing of the entire integrated circuit package design may be received as input for equally spreading all the trace segments if desired.
In step 1506, a set of at least three trace segments is selected from the placement and routing that includes at least one inner trace segment routed between two outer trace segments. For example, the set of trace segments may be selected manually by an integrated circuit package designer or other user, or the set of trace segments may be read from a previously generated list.
In step 1508, if the selection of the set of trace segments indicates that one or both of the outer trace segments are to be rerouted, then the method continues from step 1510. Otherwise, the method continues from step 1512.
In step 1510, an outer line function and a corresponding pair of end points is calculated for each outer trace segment to be rerouted as described above with reference to FIG. 11.
In step 1512, a distance between the outer trace segments and/or the outer line function is divided by a number of equally spaced points.
In step 1514, an inner line function is calculated for each inner trace segment. Each inner line function passes through one of the equally spaced points so that each inner line function is equally spaced from an adjacent inner line function, an adjacent outer line function, or an adjacent outer trace segment on each side of the inner line function.
In step 1516, the slope of each inner line function is set equal to that of the outer trace segment having a slope that does not exceed the slope of the other outer trace segment. In other words, if the slopes of the outer trace segments are equal, then the slope of each inner line function is set equal to that of either outer trace segment. On the other hand, if the slopes of the outer trace segments are not equal, then the slope of each inner line function is set equal to that of the outer trace segment having the lesser slope.
In step 1518, if the outer trace segments have the same slope, then the method continues from step 1522. Otherwise, the method continues from step 1520.
In step 1520, the angle between the outer trace segments is divided into a stepped angle, and the stepped angle is added to the slope for each inner line function as described above with reference to equation (1).
Alternatively, a distance between the outer trace segments may be calculated along a second boundary line between the two outer segments according to well-known techniques and divided by a number of points that are equally spaced from one another and the outer trace segments in the same manner as the first boundary line. Each inner line function is calculated to intersect the first and second boundary lines at a corresponding pair of equally distant points along the first and second boundary lines.
In step 1522, a pair of end points is calculated for each inner line function. Each end point may be found by calculating the intersection point of the inner line function and a trace segment that is connected to one end of the corresponding inner trace segment according to well-known techniques. The trace segment connected to one end of the corresponding inner trace segment may be extended or trimmed as necessary to terminate at the intersection point.
In step 1524, a new routing is generated as output that reroutes each inner trace segment collinearly with the corresponding inner line function and terminates each inner trace segment by the corresponding pair of end points.
Step 1526 is the exit point of the flow chart 1500.
The flow chart described above may also be automated by instructions for a computer. The instructions may be embodied in a disk, a CD-ROM, and other computer readable media according to well known computer programming techniques.
FIG. 16 illustrates a flow chart for a computer program product for spreading trace segments in an integrated circuit package design that summarizes the method of FIG. 15.
Step 1602 is the entry point of the flow chart 1600.
In step 1604, a placement and routing of at least a portion of an integrated circuit package design is received as input.
In step 1606, a set of at least three trace segments is selected from the placement and routing that includes at least one inner trace segment routed between two outer trace segments.
In step 1608, an inner line function is calculated for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function.
In step 1610, a pair of end points is calculated for the inner line function. For example, one end point of the pair of end points may be the intersection of the inner line function and one of a plurality of equally spaced points along a boundary line between the outer trace segments and/or an outer line function. The other end point of the pair of end points may be the intersection of the inner line function and a trace segment connected to the inner trace segment.
In step 1612, a new routing is generated as output that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
Step 1614 is the exit point of the flow chart 1600.
In alternative embodiments, the method described above may also be applied to the layout of integrated circuits as well as to integrated circuit package designs within the scope of the appended claims.
Although the flowchart descriptions above are described and shown with reference to specific steps performed in a specific order, these steps may be combined, sub-divided, or reordered without departing from the scope of the claims. Unless specifically indicated, the order and grouping of steps is not a limitation of other embodiments that may lie within the scope of the claims.
The specific embodiments and applications thereof described above are for illustrative purposes only and do not preclude modifications and variations that may be made within the scope of the following claims.

Claims (14)

What is claimed is:
1. A method comprising steps of:
(a) receiving as input a placement and routing of at least a portion of an integrated circuit package design;
(b) selecting a set of at least three trace segments from the placement and routing, the set including at least one inner trace segment routed between two outer trace segments;
(c) receiving as input a boundary line for the set of at least three trace segments;
(d) calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function;
(e) calculating a pair of end points for the inner line function; and
(f) generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
2. The method of claim 1 wherein step (d) comprises setting a slope of the inner line function equal to a slope of one of the two outer trace segments.
3. The method of claim 2 wherein step (d) comprises dividing an angle between the two outer trace segments to calculate a stepped angle and adding the stepped angle to the slope of the inner line function.
4. The method of claim 1 wherein step (e) comprises calculating an intersection of the inner line function and a trace segment connected to one end of the inner trace segment.
5. The method of claim 4 wherein step (d) comprises dividing the boundary line into a number of equally distant points.
6. The method of claim 5 farther comprising calculating an outer line function for at least one of the two outer trace segments wherein an intersection of the outer line function and a trace segment connected to one end of the outer trace segment lies on the boundary line.
7. The method of claim 5 wherein step (d) comprises calculating the inner line function to intersect the boundary line at one of the equally distant points.
8. A computer readable storage medium tangibly embodying instructions for a computer that when executed by the computer implement a method, the method comprising steps of:
(a) receiving as input a placement and routing of at least a portion of an integrated circuit package design;
(b) selecting a set of at least three trace segments from the placement and routing, the set including at least one inner trace segment routed between two outer trace segments;
(c) receiving as input a boundary line for the set of at least three trace segments;
(d) calculating an inner line function for the inner trace segment that is equally spaced from one of an adjacent line function, an adjacent outer line function, and an adjacent outer trace segment on each side of the inner line function;
(e) calculating coordinates of a pair of end points for the inner line function; and
(f) generating as output a new routing that reroutes the inner trace segment collinearly with the inner line function and terminates the inner trace segment by the pair of end points.
9. The computer readable storage medium of claim 8 wherein step (d) comprises setting a slope of inner line function equal to a slope of one of the two outer trace segments.
10. The computer readable storage medium of claim 9 wherein step (d) comprises dividing an angle between the two outer trace segments to calculate a stepped angle and adding the stepped angle to the slope of the inner line function.
11. The computer readable storage medium of claim 8 wherein step (e) comprises calculating an intersection of the inner line function and a trace segment connected to one end of the inner trace segment.
12. The computer readable storage medium of claim 11 wherein step (d) comprises dividing the boundary line into a number of equally distant points.
13. The computer readable storage medium of claim 12 further comprising calculating an outer line function for at least one of the two outer trace segments wherein an intersection of the outer line function and a trace segment connected to one end of the outer trace segment lies on the boundary line.
14. The computer readable storage medium of claim 12 wherein step (d) comprises calculating the inner line function to intersect the boundary line at one of the equally distant points.
US11/271,991 2005-11-09 2005-11-09 Method and computer program for spreading trace segments in an integrated circuit package design Expired - Fee Related US7325216B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/271,991 US7325216B2 (en) 2005-11-09 2005-11-09 Method and computer program for spreading trace segments in an integrated circuit package design

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/271,991 US7325216B2 (en) 2005-11-09 2005-11-09 Method and computer program for spreading trace segments in an integrated circuit package design

Publications (2)

Publication Number Publication Date
US20070104029A1 US20070104029A1 (en) 2007-05-10
US7325216B2 true US7325216B2 (en) 2008-01-29

Family

ID=38003611

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/271,991 Expired - Fee Related US7325216B2 (en) 2005-11-09 2005-11-09 Method and computer program for spreading trace segments in an integrated circuit package design

Country Status (1)

Country Link
US (1) US7325216B2 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689964B2 (en) * 2007-12-19 2010-03-30 Suvolta, Inc. System and method for routing connections

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349403B1 (en) * 1998-12-18 2002-02-19 Synopsys, Inc. Interative, gridless, cost-based layer assignment coarse router for computer controlled IC design
US6665852B2 (en) * 2000-12-01 2003-12-16 Sun Microsystems, Inc. Piecewise linear cost propagation for path searching
US7139992B2 (en) * 2000-12-01 2006-11-21 Sun Microsystems, Inc. Short path search using tiles and piecewise linear cost propagation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349403B1 (en) * 1998-12-18 2002-02-19 Synopsys, Inc. Interative, gridless, cost-based layer assignment coarse router for computer controlled IC design
US6665852B2 (en) * 2000-12-01 2003-12-16 Sun Microsystems, Inc. Piecewise linear cost propagation for path searching
US7139992B2 (en) * 2000-12-01 2006-11-21 Sun Microsystems, Inc. Short path search using tiles and piecewise linear cost propagation

Also Published As

Publication number Publication date
US20070104029A1 (en) 2007-05-10

Similar Documents

Publication Publication Date Title
US7143385B2 (en) Wiring design method and system for electronic wiring boards
Ding et al. Pin accessibility-driven detailed placement refinement
US7657859B2 (en) Method for IC wiring yield optimization, including wire widening during and after routing
US20060168551A1 (en) Integrated circuit having a multi-layer structure and design method thereof
US6532572B1 (en) Method for estimating porosity of hardmacs
JP2006323643A (en) Floor plan design program, floor plan design device, and design method of semiconductor integrated circuit
JP4986114B2 (en) Semiconductor integrated circuit and design method of semiconductor integrated circuit
JP2006196627A (en) Semiconductor device and its design program
US8302051B2 (en) System and method for extracting parasitic elements
US20050006781A1 (en) Semiconductor integrated circuit having reduced cross-talk noise
US7086024B2 (en) Methods and apparatus for defining power grid structures having diagonal stripes
JP2013037451A (en) Layout design device, layout design method, and layout design program
JP2007011629A (en) System for checking return path of printed wiring board
JP2007286691A (en) Integrated circuit designing device
US20180268097A1 (en) Interactive Routing of Connections in Circuit Using Auto Welding and Auto Cloning
US7325216B2 (en) Method and computer program for spreading trace segments in an integrated circuit package design
US8671376B2 (en) Computer system and method for performing a routing supply and demand analysis during the floor planning stage of an integrated circuit design process
JP5128204B2 (en) Differential wiring method, differential wiring apparatus, program, and computer-readable recording medium
US8402417B2 (en) Spine selection mode for layout editing
US10198547B2 (en) Support apparatus, design support method, program, and memory medium
US20110066266A1 (en) Interconnection design method, recording medium containing program and manufacturing method of interconnection substrate
CN100592494C (en) Method for correcting layout design for correcting metallic coating of contact hole
US7913216B2 (en) Accurate parasitics estimation for hierarchical customized VLSI design
US20190340325A1 (en) Wire routing algorithm
US8402422B2 (en) Wiring design device, method and recording medium

Legal Events

Date Code Title Description
AS Assignment

Owner name: LSI LOGIC CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GUO, CHENGYU;REEL/FRAME:017235/0793

Effective date: 20051108

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

FPAY Fee payment

Year of fee payment: 4

AS Assignment

Owner name: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AG

Free format text: PATENT SECURITY AGREEMENT;ASSIGNORS:LSI CORPORATION;AGERE SYSTEMS LLC;REEL/FRAME:032856/0031

Effective date: 20140506

AS Assignment

Owner name: LSI CORPORATION, CALIFORNIA

Free format text: CHANGE OF NAME;ASSIGNOR:LSI LOGIC CORPORATION;REEL/FRAME:033102/0270

Effective date: 20070406

AS Assignment

Owner name: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LSI CORPORATION;REEL/FRAME:035390/0388

Effective date: 20140814

REMI Maintenance fee reminder mailed
LAPS Lapse for failure to pay maintenance fees
AS Assignment

Owner name: AGERE SYSTEMS LLC, PENNSYLVANIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039

Effective date: 20160201

Owner name: LSI CORPORATION, CALIFORNIA

Free format text: TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031);ASSIGNOR:DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT;REEL/FRAME:037684/0039

Effective date: 20160201

STCH Information on status: patent discontinuation

Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FP Lapsed due to failure to pay maintenance fee

Effective date: 20160129

AS Assignment

Owner name: BELL SEMICONDUCTOR, LLC, ILLINOIS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.;BROADCOM CORPORATION;REEL/FRAME:044887/0109

Effective date: 20171208

AS Assignment

Owner name: CORTLAND CAPITAL MARKET SERVICES LLC, AS COLLATERA

Free format text: SECURITY INTEREST;ASSIGNORS:HILCO PATENT ACQUISITION 56, LLC;BELL SEMICONDUCTOR, LLC;BELL NORTHERN RESEARCH, LLC;REEL/FRAME:045216/0020

Effective date: 20180124

AS Assignment

Owner name: BELL NORTHERN RESEARCH, LLC, ILLINOIS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CORTLAND CAPITAL MARKET SERVICES LLC;REEL/FRAME:059720/0223

Effective date: 20220401

Owner name: BELL SEMICONDUCTOR, LLC, ILLINOIS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CORTLAND CAPITAL MARKET SERVICES LLC;REEL/FRAME:059720/0223

Effective date: 20220401

Owner name: HILCO PATENT ACQUISITION 56, LLC, ILLINOIS

Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CORTLAND CAPITAL MARKET SERVICES LLC;REEL/FRAME:059720/0223

Effective date: 20220401