The invention relates generally to placing cells in a circuit design, and more particularly, to a solution for incrementally placing a cell based on the resulting wire length.
Numerous approaches have been proposed to address cell placement in gate-array and/or standard-cell circuit designs. In general, these approaches assume that the circuit design is largely unplaced, e.g., a relatively small number of important cells, such as arrays or registers, may be pre-placed. In these approaches, cells are globally placed (e.g., anywhere within the circuit design).
The amount of wire required to implement all the connections in the circuit design is an important consideration in current and future silicon technologies. For example, as circuit feature sizes are reduced, wire delay is becoming the dominant source of delay in the resulting circuit designs. Further, wire delay is anti-scaling with feature size. That is, wire delay is becoming both relatively slower as well as actually slower as technology has gone below ninety nanometer feature sizes. As a result, it is important for cell placement to consider the amount of wire required by the placement.
After most or all of the cells in a circuit design have been placed, it is often desirable to add an additional cell and/or optimize the location of one or more cells. For example, it may be desirable to implement a particular set of functionality in a slightly different manner, thereby requiring one or more new cells (e.g., add an inverter in order to replace an AND gate with a NAND gate). However, due to the nature of the algorithms implemented, most current cell placement approaches cannot incrementally place a cell so as to minimize additional wire length.
Some approaches have been proposed to address incremental placement. For example, one approach identifies a bounding box within which the cell should be placed and places the cell in a centroid or weighted centroid of the bounding box. The bounding box can be identified based on the locations of the pins to which the cell is to be connected. An alternative approach is described in the co-owned U.S. Pat. No. 5,825,661, which is hereby incorporated herein by reference. In this approach, a first centroid for the source(s) of the cell input(s) and a second centroid for the sink(s) of the cell output(s) are computed. The cell is then placed within a bounding rectangle defined by the two centroids and along a forty-five degree diagonal line that intersects a placement location calculated from the two centroids.
In view of the foregoing, there exists a need in the art to overcome one or more of the deficiencies indicated herein and/or one or more other deficiencies not expressly discussed herein.
The invention provides a solution for managing a circuit design, which enables a cell to be incrementally placed in the circuit design based on a resulting wiring distance. A cell to be placed in the circuit design is obtained along with a corresponding set of nets in the circuit design to which the cell is to be connected. A routing grid, which defines a plurality of tiles in the circuit design for consideration in placing the cell, can be generated based on the set of nets for the cell. A wire distance measure can be calculated for each of the tiles in the routing grid using the set of nets. The wire distance measure is then used to identify a target tile for placing the cell. The target tile can be used to find an exact and/or rough placement for the cell.
A first aspect of the invention provides a method of managing a circuit design, the method comprising: obtaining a cell to be placed in the circuit design and a set of nets in the circuit design to which the cell is to be connected; obtaining a routing grid for the cell, the routing grid defining a plurality of tiles in the circuit design; obtaining a wire distance measure for each of the plurality of tiles based on the set of nets; and identifying a target tile in the plurality of tiles for placing the cell based on the corresponding wire distance measures.
A second aspect of the invention provides a system for managing a circuit design, the system comprising: a system for obtaining a cell to be placed in the circuit design and a set of nets in the circuit design to which the cell is to be connected; a system for obtaining a routing grid for the cell, the routing grid defining a plurality of tiles in the circuit design; a system for obtaining a wire distance measure for each of the plurality of tiles based on the set of nets; and a system for identifying a target tile in the plurality of tiles for placing the cell based on the corresponding wire distance measures.
A third aspect of the invention provides a program product stored on a computer-readable medium, which when executed, enables a computer infrastructure to manage a circuit design, the program product comprising computer program code for enabling the computer infrastructure to: obtain a cell to be placed in the circuit design and a set of nets in the circuit design to which the cell is to be connected; obtain a routing grid for the cell, the routing grid defining a plurality of tiles in the circuit design; obtain a wire distance measure for each of the plurality of tiles based on the set of nets; and identify a target tile in the plurality of tiles for placing the cell based on the corresponding wire distance measures.
A fourth aspect of the invention provides a method of generating a system for managing a circuit design, the method comprising: providing a computer infrastructure operable to: obtain a cell to be placed in the circuit design and a set of nets in the circuit design to which the cell is to be connected; obtain a routing grid for the cell, the routing grid defining a plurality of tiles in the circuit design; obtain a wire distance measure for each of the plurality of tiles based on the set of nets; and identify a target tile in the plurality of tiles for placing the cell based on the corresponding wire distance measures.
A fifth aspect of the invention provides a business method for managing a circuit design, the business method comprising managing a computer infrastructure that performs the process described herein; and receiving payment based on the managing.
The illustrative aspects of the present invention are designed to solve one or more of the problems herein described and/or one or more other problems not discussed.
These and other features of the invention will be more readily understood from the following detailed description of the various aspects of the invention taken in conjunction with the accompanying drawings that depict various embodiments of the invention, in which:
FIGS. 4A-C show matrices of illustrative net-specific wire distances corresponding to each net shown in
FIGS. 5A-B show matrices of illustrative wire distance measures that can be generated based on the net-specific wire distances shown in FIGS. 4A-C.
It is noted that the drawings are not to scale. The drawings are intended to depict only typical aspects of the invention, and therefore should not be considered as limiting the scope of the invention. In the drawings, like numbering represents like elements between the drawings.
As indicated above, the invention provides a solution for managing a circuit design, which enables a cell to be incrementally placed in the circuit design based on a resulting wiring distance. A cell to be placed in the circuit design is obtained along with a corresponding set of nets in the circuit design to which the cell is to be connected. A routing grid, which defines a plurality of tiles in the circuit design for consideration in placing the cell, can be generated based on the set of nets for the cell. A wire distance measure can be calculated for each of the tiles in the routing grid using the set of nets. The wire distance measure is then used to identify a target tile for placing the cell. The target tile can be used to find an exact and/or rough placement for the cell. As used herein, unless otherwise noted, the term “set” means one or more (i.e., at least one) and the phrase “any solution” means any now known or later developed solution.
Turning to the drawings,
Computing device 14 is shown including a processor 20, a memory 22A, an input/output (I/O) interface 24, and a bus 26. Further, computing device 14 is shown in communication with an external I/O device/resource 28 and a storage system 22B. As is known in the art, in general, processor 20 executes computer program code, such as design management system 30, which is stored in memory 22A and/or storage system 22B. While executing computer program code, processor 20 can read and/or write data, such as circuit design 50, to/from memory 22A, storage system 22B, and/or I/O interface 24. Bus 26 provides a communications link between each of the components in computing device 14. I/O device 28 can comprise any device that enables an individual to interact with computing device 14 or any device that enables computing device 14 to communicate with one or more other computing devices using any type of communications link.
In any event, computing device 14 can comprise any general purpose computing article of manufacture capable of executing computer program code installed thereon (e.g., a personal computer, server, handheld device, etc.). However, it is understood that computing device 14 and design management system 30 are only representative of various possible equivalent computing devices that may perform the process described herein. To this extent, in other embodiments, the functionality provided by computing device 14 and design management system 30 can be implemented by a computing article of manufacture that includes any combination of general and/or specific purpose hardware and/or computer program code. In each embodiment, the program code and hardware can be created using standard programming and engineering techniques, respectively.
Similarly, computer infrastructure 12 is only illustrative of various types of computer infrastructures for implementing the invention. For example, in one embodiment, computer infrastructure 12 comprises two or more computing devices (e.g., a server cluster) that communicate over any type of communications link, such as a network, a shared memory, or the like, to perform the process described herein. Further, while performing the process described herein, one or more computing devices in computer infrastructure 12 can communicate with one or more other computing devices external to computer infrastructure 12 using any type of communications link. In either case, the communications link can comprise any combination of various types of wired and/or wireless links; comprise any combination of one or more types of networks (e.g., the Internet, a wide area network, a local area network, a virtual private network, etc.); and/or utilize any combination of various types of transmission techniques and protocols.
As discussed herein, design management system 30 enables computer infrastructure 12 to manage circuit design 50. To this extent, design management system 30 is shown including a cell component 32, a grid component 34, a location component 36, and a placement component 36. Operation of each of these systems is discussed further herein. However, it is understood that some of the various systems shown in
Regardless, the invention provides a solution for managing circuit design 50. In general, design management system 30 enables one or more users 16 to view, modify, delete, and/or the like, one or more circuit designs 50. To this extent, design management system 30 can read and write data for circuit design 50 to/from storage systems 22A-B using any solution. In one embodiment, data for circuit design 50 is stored as one or more files in a file system, which can define various objects/structures that can be manipulated (e.g., modified, added, deleted, etc.) in a dynamic memory using design management system 30 and subsequently stored in the one or more files. However, it is understood that data for circuit design 50 can be managed using any solution.
In any event,
In step S2, cell component 32 can obtain a set of nets in circuit design 50 to which the cell is to be connected. As known in the art, a “net” comprises a set of terminals in circuit design 50 that require electrical connection. Further, the “net” can include existing wiring used to connect some or all of the set of terminals. In general, each cell in circuit design 50 will comprise a unique net for each input and each output for the cell. Cell component 32 can obtain the set of nets for the cell using any solution. For example, user 32 can designate (e.g., using a user interface, API, or the like) the source terminal corresponding to each input of the cell, and the sink terminal corresponding to each output of the cell. Additionally, when the cell is currently included in circuit design 50, cell component 32 can automatically determine the source/sink terminal(s) for the cell using the existing wiring information in circuit design 50. In this case, cell component 32 can remove any wiring information included in each net that is only used to connect the cell being placed.
In step S3, grid component 34 can obtain a routing grid for the cell in circuit design 50. For example,
In one embodiment, grid component 34 (
Next, grid component 34 (
In step S4 (
To obtain the wire distance measure for each tile 54A-F, location component 36 (
For example, location component 36 (
To this extent, location component 36 (
Subsequently, location component 36 (
Returning to
In any event, returning to
Location component 36 can use any type of heuristic technique in selecting the target tile. In one embodiment, location component 36 selects the tile that is closer to a center of routing grid 52 (
In any event, once a target tile, such as tile 54C (
Placement of cell 60 (
Placement also can comprise a rough placement for cell 60 (
When location 82D does not include sufficient resources for cell 60 (
As discussed herein, various systems and components are described as “obtaining” data (e.g., circuit design, cell to be placed, grid(s), etc.). It is understood that the corresponding data can be obtained using any solution. For example, the corresponding system/component can generate and/or be used to generate the data, retrieve the data from one or more data stores (e.g., a database), receive the data from another system/component, and/or the like. When the data is not generated by the particular system/component, it is understood that another system/component can be implemented apart from the system/component shown, which generates the data and provides it to the system/component and/or stores the data for access by the system/component.
While shown and described herein as a method and system for managing a cell design, it is understood that the invention further provides various alternative embodiments. For example, in one embodiment, the invention provides a program product stored on a computer-readable medium, which when executed, enables a computer infrastructure to manage a cell design. To this extent, the computer-readable medium includes program code, such as design management system 30 (
In another embodiment, the invention provides a method of generating a system for managing a circuit design. In this case, a computer infrastructure, such as computer infrastructure 12 (
In still another embodiment, the invention provides a business method that performs the process described herein on a subscription, advertising, and/or fee basis. That is, a service provider, such as an application service provider, could offer to manage a circuit design as described herein. In this case, the service provider can manage (e.g., create, maintain, support, etc.) a computer infrastructure, such as computer infrastructure 12 (
As used herein, it is understood that the terms “program code” and “computer program code” are synonymous and mean any expression, in any language, code or notation, of a set of instructions that cause a computing device having an information processing capability to perform a particular function either directly or after any combination of the following: (a) conversion to another language, code or notation; (b) reproduction in a different material form; and/or (c) decompression. To this extent, program code can be embodied as one or more types of program products, such as an application/software program, component software/a library of functions, an operating system, a basic I/O system/driver for a particular computing and/or I/O device, and the like. Further, it is understood that the terms “component” and “system” are synonymous as used herein and represent any combination of hardware and/or software capable of performing some function(s).
The foregoing description of various aspects of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed, and obviously, many modifications and variations are possible. Such modifications and variations that may be apparent to an individual in the art are included within the scope of the invention as defined by the accompanying claims.