Claims
- 1. A method of calculating a linear minimum convolution of a weight value α with a continuous piecewise linear function L including a plurality of line segments connected at knot points, the method comprising:
performing a forward leg sweep over the function L in a first direction with a clipping function comprised of a knot point connecting a first leg of slope α and a second leg of slope −α; and performing a backward leg sweep over the function L in a second direction with the clipping function.
- 2. The method of claim 1 wherein the performing the forward leg sweep comprises:
selecting a first point of the knot points of the function L as a current point; removing a portion of the function L if the first leg is determined to clip said portion of the function L; selecting a next point in the first direction of the knot points of the function L as the current point; and repeating the determining and the selecting the next point until the determining has been performed for all knot points of the function L.
- 3. The method of claim 2 wherein the removing the portion of the function L comprises:
finding an intersection point of the function L in the first direction from the current point at which the first leg intersects the function L; discarding all knot points between the current point and the intersection point from a list of knot points of the function L; and inserting the intersection point into the list of knot points of the function L; and wherein the selecting the next point begins with the intersection point as the current point.
- 4. The method of claim 2 wherein the first leg is determined to clip said portion of the function L if the absolute value of the slope of the function L is greater than the absolute value of α at all points of said portion of the function L.
- 5. The method of claim 2 wherein the first leg is determined to clip said portion of the function L if the value of the function L at all points of said portion are less than the value of the clipping function.
- 6. The method of claim 1 wherein the performing the backward leg sweep comprises:
selecting a first point of the knot points of the function L as a current point; removing a portion of the function L if the second leg is determined to clip said portion of the function L; selecting a next point in the second direction of the knot points of the function as the current point; and repeating the determining and the selecting the next point until the determining has been performed for all knot points of the function L.
- 7. The method of claim 6 wherein the removing the portion of the function L comprises:
finding an intersection point of the function L in the second direction from the current point at which the second leg intersects the function L; discarding all knot points between the current point and the intersection point from a list of knot points of the function L; and inserting the intersection point into the list of knot points of the function L; and wherein the selecting the next point begins with the intersection point as the current point.
- 8. The method of claim 2 wherein the a list of knot points of the function L is unaffected each time the second leg is determined not to clip a portion of the function L.
- 9. The method of claim 1 wherein the performing the forward leg sweep comprises:
setting an index pointer p to an initial value corresponding to a first end of the function L; scanning line segments of the function L in a first direction from a first end line segment lp towards a second end line segment to determine a line segment lj having a slope greater than the weight α; defining a forward leg g(x)=α(x−αj)+L(αj) where αj is an x-location on the line segment lj; if a line segment lj is found, scanning in the first direction from the line segment lj and removing line segments from the function L until an intersecting line segment li of the function L intersects the forward leg; if an intersecting line segment li is encountered, inserting a new segment g(x)=α(x−αj)+L(αj) in place of the first removed line segment lj, wherein the new segment g(x) is defined from intersecting point αj to the intersection point αi; inserting a new segment from the intersection point αi to the first direction end point of li; incrementing p by two; and repeating the above steps except the step of setting the index pointer p to the initial value; and if an intersecting line segment li is not encountered, inserting a new segment g(x) in place of the first removed line segment lj, wherein the new segment g(x) is defined from the first direction end of line segment lj to the second end of the function L.
- 10. The method of claim 1 wherein the function L is a cost function for providing a cost of a path across a segment at various points along the segment.
- 11. The method of claim 10 further comprising:
providing the weight value α to a processor module; providing the cost function L to the processor module, wherein the cost function L is a source cost function providing a cost from a source to a segment; receiving from the processor module an output linear minimal convolution of the weight value α and the cost function L.
- 12. The method of claim 11 wherein
the weight value α is a weight for a cost in a first direction; and the method further comprises using the output linear minimal convolution to calculate a clear path in at least the first direction from a first location to a second location.
- 13. The method of claim 12 wherein the first and second locations are in a routing area of an integrated circuit.
- 14. The method of claim 1 wherein
the function L is a continuous piecewise linear function ƒ(x) defined for points λ over an x-axis interval [a,b]; and the linear minimum convolution (α*ƒ)(x) of the weight value α with the function ƒ(x) is defined as follows: 10(α*f)(x)=minλ e[a,b](f(λ)+α&LeftBracketingBar;λ-x&RightBracketingBar;).
- 15. A computer program product encoded in computer readable media for calculating a linear minimum convolution of a value with a function, the function including a plurality of line segments connected at knot points, the computer program product comprising:
a software module for performing a forward leg sweep over the function in a first direction with a clipping function comprised of a knot point connecting a first leg of a first slope and a second leg of a second slope, the second slope being a negative of the first slope; and a software module for performing a backward leg sweep over the function in a second direction with the clipping function.
- 16. The product of claim of claim 15 wherein the software module for performing the forward leg sweep comprises:
first instructions, executable by an information processing system for selecting a first point of the knot points of the function as a current point; second instructions, executable by an information processing system for determining if the first leg clips a portion of the function; third instructions, executable by an information processing system for selecting a next point in the first direction of the knot points of the function as the current point; and fourth instructions, executable by an information processing system for repeating the determining and the selecting the next point until the determining has been performed for all knot points of the function.
- 17. The product of claim of claim 16 wherein the software module for performing the backward leg sweep comprises:
first instructions, executable by an information processing system for selecting a first point of the knot points of the function L as a current point; second instructions, executable by an information processing system for determining if the second leg clips a portion of the function L; third instructions, executable by an information processing system for selecting a next point in the second direction of the knot points of the function as the current point; and fourth instructions, executable by an information processing system for repeating the determining and the selecting the next point until the determining has been performed for all knot points of the function L.
- 18. The product of claim 17 wherein some of the instructions of the software module for performing the forward leg sweep are also instructions of the software module for performing the backward leg sweep:
- 19. The product of claim 16 further comprising:
fifth instructions, executable by an information processing system if the first leg is determined to clip a portion of the function L, the first instructions for finding an intersection point of the function L in the first direction from the current point at which the first leg intersects the function L; sixth instructions, executable by an information processing system after the first instructions for finding the intersection point, the second instructions discarding all knot points between the current point and the intersection point from a list of knot points of the function L; and seventh instructions, executable by an information processing system after the second instructions for discarding knot points, the third instructions inserting the intersection point into the list of knot points of the function L; and wherein the third instructions for selecting the next point first select the intersection point as the current point after the fifth instructions find the intersection point.
- 20. The product of claim 15 further comprising:
instructions for providing the weight value a to a processor module; instructions for providing the cost function L to the processor module, wherein the cost function L is a source cost function providing a cost from a source to a segment; instructions for receiving from the processor module an output linear minimal convolution of the weight value a and the cost function L.
- 21. The product of claim 20 further comprising:
instructions for using the output linear minimal convolution to calculate a clear path in at least the first direction from a first location to a second location.
- 22. The product of claim 15 wherein the product is for routing an integrated circuit design.
- 23. The product of claim 15 wherein the computer readable media comprises at least one data storage medium, the at least one data storage medium including at least one of the group consisting of:
magnetic disk media; magnetic tape storage media; compact disk storage media; digital video disk storage media; and nonvolatile memory.
- 24. The product of claim 15 wherein the computer readable media comprises at least one data transmission medium, the at least one data transmission medium including at least one of the group consisting of:
a computer network; a point-to-point telecommunication system; and carrier wave transmission media.
- 25. An information processing system configured for calculating a linear minimum convolution of a weight value α with a continuous piecewise linear function L including a plurality of line segments connected at knot points, the system comprising:
at least one processor; a first module configured to be coupled to the processor for performing a forward leg sweep over the function L in a first direction with a clipping function comprised of a knot point connecting a first leg of slope α and a second leg of slope −α; and a second module configured to be coupled to the processor for performing a backward leg sweep over the function L in a second direction with the clipping function.
- 26. The system of claim of claim 1 wherein the modules are software modules encoded on a data-storage computer readable medium coupled to the processor.
- 27. The system of claim of claim 1 wherein the system includes computer instructions used by both the first and second modules.
CROSS-REFERENCE TO RELATED APPLICATION(S)
[0001] This application relates to and claims priority from the following co-pending provisional patent applications:
[0002] U.S. provisional patent application Serial No. 60/250,627 (Attorney Reference No. 004-5619-V), filed on Dec. 1, 2000, entitled “Minimum Cost Path Search Algorithm Through Tile Obstacles”, naming Zhaoyun Xing and Russell Kao as inventors; and
[0003] U.S. provisional patent application Serial No. 60/309,672 (Attorney Reference No. 004-6815-V), filed on Aug. 2, 2001, entitled “Shortest Path Search Using Tiles and Piecewise Linear Cost Propagation”, naming Zhaoyun Xing and Russell Kao as inventors.
[0004] This application also relates to the following co-pending patent applications which are filed on the same day as the present application:
[0005] U.S. patent application Ser. No. ______ (Attorney Reference No. 004-5619) entitled “Piecewise Linear Cost Propagation for Path Searching,” naming Zhaoyun Xing and Russell Kao as inventors; and
[0006] U.S. patent application Ser. No. ______ (Attorney Reference No. 004-6815) entitled “Short Path Search Using Tiles and Piecewise Linear Cost Propagation,” naming Zhaoyun Xing and Russell Kao as inventors.
[0007] All of the above referenced patent applications (provisional and utility) are hereby incorporated by reference in their entirety.
Provisional Applications (2)
|
Number |
Date |
Country |
|
60250627 |
Dec 2000 |
US |
|
60309672 |
Aug 2001 |
US |