A method for designing a system to be implemented on a target device includes generating bounding boxes on the target device for nets in the system where a bounding box identifies routing resources available for routing its corresponding net. The nets in the system are assigned to a plurality of threads to be routed. The threads are executed so that a plurality of the nets are routed in parallel within their corresponding bounding box.
Legal claims defining the scope of protection. Each claim is shown in both the original legal language and a plain English translation.
1. A method for designing a system to be implemented on a target device, the method comprising: generating bounding boxes on the target device for a plurality of nets in the system, wherein a bounding box corresponds to an area on the target device; and routing the plurality of nets in parallel, wherein each net of the plurality of nets is routed within its corresponding bounding box, wherein at least one of the generating and the routing is performed by a processor.
A method for designing an electronic system on a target device (like a chip) involves two main steps. First, "bounding boxes" are created for each "net" (connection between components) on the device. A bounding box represents the available routing area for that net. Second, these nets are routed in parallel, meaning multiple nets are routed simultaneously. Each net's route is constrained to stay within its corresponding bounding box. At least one of these steps (bounding box generation or routing) is performed by a processor.
2. The method of claim 1 , wherein each bounding boxes defines routing resources that can be used for routing its corresponding net.
In the system routing method described above, each bounding box not only represents an area on the target device but also explicitly defines the specific routing resources (e.g., wires, vias) that are available and permitted for routing the corresponding net. This means the bounding box acts as a constraint, limiting the routing algorithm to only use pre-approved resources within that area for that particular net.
3. The method of claim 1 further comprising determining which nets of the plurality of nets in the system to be routed in parallel.
The system routing method described above also includes a step to determine which nets will be routed in parallel. This decision-making process identifies which nets from the total set of nets in the system are suitable for concurrent routing, optimizing the overall routing process by intelligently selecting which nets can be processed simultaneously.
4. The method of claim 3 , wherein the determining which nets of the plurality of nets in the system to be routed in parallel comprises: partitioning the target device with a partition line; assigning nets having bounding boxes that cross the partition line to be routed serially first; and assigning remaining nets in a first partition to be routed in parallel with remaining nets in a second partition.
The system routing method described above determines which nets to route in parallel by first dividing the target device into sections using a "partition line." Nets whose bounding boxes cross this line are assigned to be routed serially (one after the other) first. Then, the remaining nets within the first partition are assigned to be routed in parallel with the remaining nets in the second partition, optimizing parallel routing while addressing cross-partition dependencies.
5. The method of claim 3 , wherein the determining which nets of the plurality of nets in the system to be routed in parallel comprises: partitioning the target device with a partition line, wherein the partition line partitions the target device into equally sized areas; and assigning nets in a first partition to be routed in parallel with nets in a second partition.
The system routing method described above determines which nets to route in parallel by dividing the target device into equally sized sections using a "partition line." Then, the nets within the first section are assigned to be routed in parallel with the nets in the second section. The partition line ensures a balanced workload distribution for parallel processing, enhancing efficiency.
6. The method of claim 3 , wherein the determining which nets of the plurality of nets in the system to be routed in parallel comprises: partitioning the target device with a partition line, wherein the partition line partitions the target device balances an amount of routing work for nets in each partition; and assigning nets in a first partition to be routed in parallel with nets in a second partition.
The system routing method described above determines which nets to route in parallel by dividing the target device using a "partition line" that balances the routing workload between each partition. This means the partition line is positioned to ensure a roughly equal amount of routing effort is required in each section. Nets within the first partition are then routed in parallel with nets in the second partition.
7. The method of claim 3 , wherein the determining which nets of the plurality of nets in the system to be routed in parallel comprises: partitioning the target device with a partition line, wherein the partition line partitions the target device such that an amount of routing work to be done for nets in each partition is balanced, and wherein the partition line intersect a fewest number of bounding boxes; and assigning nets in a first partition to be routed in parallel with nets in a second partition.
The system routing method described above determines which nets to route in parallel by dividing the target device using a "partition line" which balances the routing workload in each partition, AND also minimizes the number of bounding boxes that the partition line intersects. Nets within the first partition are then routed in parallel with nets in the second partition. Minimizing bounding box intersections reduces dependencies between partitions, enabling more efficient parallel routing.
8. The method of claim 3 , wherein the determining which nets in the system to be routed in parallel comprises: identifying dependencies of the nets; identifying sets of nets such that nets in each of the sets are free from dependencies from nets from other sets; assigning a different thread to route each of the sets of nets; and routing the sets of nets in parallel.
The system routing method described above determines which nets to route in parallel by identifying dependencies between the nets. It groups nets into independent sets, where nets within a set don't rely on the routing of nets in other sets. Each of these independent sets is then assigned to a different thread and routed in parallel. This approach allows for maximal concurrency by eliminating inter-thread dependencies.
9. The method of claim 8 further comprising assigning nets with a greatest number of dependencies to be routed before nets with fewer or no dependencies.
The system routing method described above, which routes independent sets of nets in parallel, further prioritizes nets with the most dependencies to be routed first, before nets with fewer or no dependencies. This approach ensures that critical nets are resolved early, potentially simplifying the routing of subsequent, less-dependent nets.
10. The method of claim 1 , wherein the plurality of nets routed in parallel have bounding boxes free from overlap.
In the system routing method described above, the nets that are routed in parallel have bounding boxes that do not overlap with each other. This non-overlapping constraint simplifies the routing process by avoiding potential conflicts or interference between simultaneously routed nets, leading to faster and more reliable parallel routing.
11. The method of claim 1 further comprising routing nets with overlapping bounding boxes serially.
In addition to routing nets with non-overlapping bounding boxes in parallel, the system routing method described above also routes nets with overlapping bounding boxes serially (one at a time). This ensures that potential conflicts arising from shared routing resources are avoided, maintaining routing integrity even when parallel routing isn't possible.
12. A non-transitory computer readable medium including sequences of instructions stored thereon for causing a computer to execute a method comprising: generating bounding boxes on a target device for nets in a system, wherein a bounding box corresponds to an area on the target device; and routing a plurality of nets in parallel, wherein each net of the plurality of nets is routed within its corresponding bounding box.
A non-transitory computer-readable medium (like a hard drive or flash drive) contains instructions that, when executed by a computer, cause the computer to design an electronic system. The design process involves generating "bounding boxes" for each "net" (connection between components) on a target device. A bounding box represents the available routing area for that net. Instructions then cause the computer to route multiple nets in parallel, with each net's route staying within its assigned bounding box.
13. The non-transitory computer readable medium of claim 12 , wherein each bounding boxes defines routing resources that can be used for routing its corresponding net.
The non-transitory computer readable medium with routing instructions described above ensures each bounding box defines the specific routing resources (e.g., wires, vias) available and permitted for routing its corresponding net. Thus, the bounding box constrains the routing algorithm to utilize only pre-approved resources within that area for that specific net.
14. The non-transitory computer readable medium of claim 12 , wherein each of the nets comprises a source and a sink.
The non-transitory computer readable medium with routing instructions described above recognizes that each "net" comprises at least a source and a sink (destination). This is a standard model for electrical connections, where a signal originates from a source and travels to a destination (sink).
15. The non-transitory computer readable medium of claim 12 , wherein the plurality of nets routed in parallel have bounding boxes free from overlap.
The non-transitory computer readable medium with routing instructions described above specifies that the multiple nets routed in parallel have bounding boxes that do not overlap. This avoids routing conflicts by only routing independent nets simultaneously.
16. The non-transitory computer readable medium of claim 12 , wherein the method further comprises routing nets with overlapping bounding boxes serially.
The non-transitory computer readable medium with routing instructions described above, besides routing nets with non-overlapping bounding boxes in parallel, also handles nets with overlapping bounding boxes. These overlapping nets are routed serially (one after the other) to prevent potential conflicts and ensure accurate routing.
17. The non-transitory computer readable medium of claim 12 , wherein the method further comprises routing a subset of connections of a net serially to produce a partial routing tree divided into two or more portions, wherein each portion is within a partition of the target device and each of the partial routing tree portions is sent to a separate thread to route a subset of remaining net connections within that partition in parallel, and wherein routing of each thread is constrained to lie within a device partition it has been assigned.
The non-transitory computer readable medium with routing instructions described above routes a subset of connections of a net serially to produce a partial routing tree divided into two or more portions. Each portion is within a partition of the target device. Each of these partial routing tree portions is sent to a separate thread to route a subset of remaining net connections within that partition in parallel. Routing of each thread is constrained to lie within a device partition it has been assigned.
18. The non-transitory computer readable medium of claim 12 , wherein the method further comprises: partitioning the target device with a partition line; assigning nets having bounding boxes that cross the partition line to be routed serially first; and assigning remaining nets in a first partition to be routed in parallel with remaining connections in a second partition.
The non-transitory computer readable medium with routing instructions described above partitions the target device with a partition line, assigns nets having bounding boxes that cross the partition line to be routed serially first, and assigns remaining nets in a first partition to be routed in parallel with remaining connections in a second partition. This method prioritizes nets that span partitions, routing them before parallel routing within partitions.
19. A routing unit comprising: a bounding box unit operable to identify bounding boxes on a target device for nets, wherein a bounding box corresponds to an area on the target device; and a scheduling unit operable to schedule routing a plurality of nets in parallel, wherein each net of the plurality of nets is routed within its corresponding bounding box.
A routing unit (a hardware or software component) includes a bounding box unit and a scheduling unit. The bounding box unit identifies bounding boxes for nets on a target device, where each bounding box represents an area for routing. The scheduling unit then schedules multiple nets to be routed in parallel, ensuring each net's route stays within its assigned bounding box.
20. The routing unit of claim 19 , wherein each bounding boxes defines routing resources available for routing its corresponding net.
The routing unit described above ensures that each bounding box defines the specific routing resources (e.g., wires, vias) that are available for routing the corresponding net. This bounding box acts as a routing constraint.
21. The routing unit of claim 19 , wherein the plurality of nets scheduled to be routed in parallel have bounding boxes free from overlap.
The routing unit described above only schedules nets with non-overlapping bounding boxes to be routed in parallel. This eliminates the possibility of routing conflicts.
22. The routing unit of claim 19 , wherein the scheduling unit is operable to schedule routing nets with overlapping bounding boxes serially.
The routing unit described above schedules nets with overlapping bounding boxes to be routed serially (one at a time). This avoids conflicts in shared routing resources.
23. The routing unit of claim 19 , wherein the scheduling unit is operable to schedule routing the plurality of nets based upon positions of the bounding boxes relative to one or more partition lines.
The routing unit described above schedules the parallel routing of nets based on the positions of their bounding boxes relative to one or more partition lines on the target device. This allows the scheduling to optimize routing across partitioned regions.
24. The routing unit of claim 19 further comprising a work assessment unit operable to estimate an amount of work required for routing each net of the plurality of nets based upon a number of fanouts in each net.
The routing unit described above includes a work assessment unit that estimates the amount of routing work required for each net based on the number of fanouts (connections) in that net. This provides a measure of complexity for each net.
25. The routing unit of claim 19 , wherein the scheduling unit is operable to schedule routing the plurality of nets based upon the amount of work required for routing each of the nets.
The routing unit described above schedules the parallel routing of nets based on the estimated amount of routing work required for each net. This aims to balance the workload across different routing threads.
Cooperative Patent Classification codes for this invention. Click any code to explore related patents in that topic.
September 13, 2012
September 10, 2013
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.