Spare latch distribution

Aspects of the invention provide for spare latch distribution for an integrated circuit design. In one embodiment, aspects of the invention include a method of generating a computer system for spare latch distribution in an integration circuit design, the method including: providing a computer system operable to: receive design data for the integrated circuit design, the design data including a plurality of latches; segment the integrated circuit design into a plurality of equal sections; determine a latch density within each of the equal sections; and determine a number of spare latches, based on the latch density, for each of the equal sections. Further, it is understood that the above are performed for each clock domain within the integrated circuit design.

BACKGROUND OF THE INVENTION

The subject matter disclosed herein relates generally to integrated circuits. More specifically, the disclosure provided herein relates to spare latch distribution for an integrated circuit design.

Typically, design changes come up in the final phase of the circuit design, which need to be implemented without affecting the processed sections. These changes are conventionally known as an engineering change order (ECO). In order to satisfy the need to implement these ECOs, spare circuitry is normally included in the circuit design. Spare latches are an example of this spare circuitry and are often used to implement the ECOs.

During the initial design phase, spare latches are not part of the data path, and so, latch clustering and placement give the spare latches the least priority. This leads to all spare latches to be pushed to the least dense region of the circuit. However, if the ECO is needed to adjust for timing issues, if the spare latch is not physically in close proximity to the region of the circuit that needs to utilize the spare latch, additional timing delays can accrue due to the distance between the latch and the region of the circuit.

BRIEF DESCRIPTION OF THE INVENTION

Aspects of the invention provide for spare latch distribution for an integrated circuit design. In one embodiment, aspects of the invention include a method of generating a computer system for spare latch distribution in an integration circuit design, the method comprising: providing a computer system operable to: receive design data for the integrated circuit design, the design data including a plurality of latches; segment the integrated circuit design into a plurality of equal sections; determine a latch density within each of the equal sections; and determine a number of spare latches, based on the latch density, for each of the equal sections. Further, it is understood that the above are performed for each clock domain within the integrated circuit design.

A first aspect of the invention provides a method of generating a computer system for spare latch distribution in an integration circuit design, the method comprising: providing a computer system operable to: receive design data for the integrated circuit design, the design data including a plurality of latches; segment the integrated circuit design into a plurality of equal sections; determine a latch density within each of the equal sections; and determine a number of spare latches, based on the latch density, for each of the equal sections.

A second aspect of the invention provides a non-transitory computer-readable medium, which when executed, enables a computer system to implement a method for spare latch distribution in an integrated circuit design, the method comprising: receiving design data for the integrated circuit design, the design data including a plurality of latches; segmenting the integrated circuit design into a plurality of equal sections; determining a latch density within each of the equal sections; and determining a number of spare latches, based on the latch density, for each of the equal sections.

A third aspect of the invention provides a computer system, comprising: at least one computing device configured for to perform spare latch distribution of an integrated circuit design by: receiving design data for the integrated circuit design, the design data including a plurality of latches; segmenting the integrated circuit design into a plurality of equal sections; determining a latch density within each of the equal sections; and determining a number of spare latches, based on the latch density, for each of the equal sections.

DETAILED DESCRIPTION OF THE INVENTION

The subject matter disclosed herein relates generally to integrated circuits. More specifically, the disclosure provided herein relates to spare latch distribution for an integrated circuit design.

Typically, design changes come up in the final phase of the circuit design, which need to be implemented without affecting the processed sections. These changes are conventionally known as an engineering change order (ECO). In order to satisfy the need to implement these ECOs, spare circuitry is normally included in the circuit design. Spare latches are an example of this spare circuitry and are often used to implement the ECOs.

During the initial design phase, spare latches are not part of the data path, and so, latch clustering and placement give the spare latches the least priority. This leads to all spare latches to be pushed to the least dense region of the circuit. However, if the ECO is needed to adjust for timing issues, if the spare latch is not physically in close proximity to the region of the circuit that needs to utilize the spare latch, additional timing delays can accrue due to the distance between the latch and the region of the circuit.

Aspects of the invention provide for spare latch distribution for an integrated circuit design. In one embodiment, aspects of the invention include a method of generating a computer system for spare latch distribution in an integration circuit design, the method comprising: providing a computer system operable to: receiving design data for the integrated circuit design, the design data including a plurality of latches; segmenting the integrated circuit design into a plurality of equal sections; determining a latch density within each of the equal sections; and determining a number of spare latches, based on the latch density, for each of the equal sections. Further, it is understood that the following are performed for each clock domain within the integrated circuit design.

As indicated above, aspects of the invention provide for spare latch distribution for an integrated circuit design. 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,FIG. 1shows an illustrative environment10for spare latch distribution for an integrated circuit according to an embodiment. To this extent, environment10includes a computer system20that can perform a process described herein in order to perform spare latch distribution for an integrated circuit. In particular, computer system20is shown including a distribution program30, which makes computer system20operable to perform spare latch distribution for an integrated circuit by performing a process described herein.

Computer system20is shown including a processing component22(e.g., one or more processors), a storage component24(e.g., a storage hierarchy), an input/output (I/O) component26(e.g., one or more I/O interfaces and/or devices), and a communications pathway28. In general, processing component22executes program code, such as distribution program30, which is at least partially fixed in storage component24. While executing program code, processing component22can process data, which can result in reading and/or writing transformed data from/to storage component24and/or I/O component26for further processing. Pathway28provides a communications link between each of the components in computer system20. I/O component26can comprise one or more human I/O devices, which enable a human user12to interact with computer system20and/or one or more communications devices to enable a system user12to communicate with computer system20using any type of communications link. To this extent, distribution program30can manage a set of interfaces (e.g., graphical user interface(s), application program interface, and/or the like) that enable human and/or system users12to interact with distribution program30. Further, distribution program30can manage (e.g., store, retrieve, create, manipulate, organize, present, etc.) the data, such as distribution data40, using any solution.

In any event, computer system20can comprise one or more general purpose computing articles of manufacture (e.g., computing devices) capable of executing program code, such as distribution program30, installed thereon. As used herein, it is understood that “program code” means any collection of instructions, in any language, code or notation, that cause a computing device having an information processing capability to perform a particular action 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, distribution program30can be embodied as any combination of system software and/or application software.

Further, distribution program30can be implemented using a set of modules32. In this case, a module32can enable computer system20to perform a set of tasks used by distribution program30, and can be separately developed and/or implemented apart from other portions of distribution program30. As used herein, the term “component” means any configuration of hardware, with or without software, which implements the functionality described in conjunction therewith using any solution, while the term “module” means program code that enables a computer system20to implement the actions described in conjunction therewith using any solution. When fixed in a storage component24of a computer system20that includes a processing component22, a module is a substantial portion of a component that implements the actions. Regardless, it is understood that two or more components, modules, and/or systems may share some/all of their respective hardware and/or software. Further, it is understood that some of the functionality discussed herein may not be implemented or additional functionality may be included as part of computer system20.

When computer system20comprises multiple computing devices, each computing device can have only a portion of distribution program30fixed thereon (e.g., one or more modules32). However, it is understood that computer system20and distribution program30are only representative of various possible equivalent computer systems that may perform a process described herein. To this extent, in other embodiments, the functionality provided by computer system20and distribution program30can be at least partially implemented by one or more computing devices that include any combination of general and/or specific purpose hardware with or without program code. In each embodiment, the hardware and program code, if included, can be created using standard engineering and programming techniques, respectively.

Regardless, when computer system20includes multiple computing devices, the computing devices can communicate over any type of communications link. Further, while performing a process described herein, computer system20can communicate with one or more other computer systems using any type of communications link. In either case, the communications link can comprise any combination of various types of optical fiber, wired, and/or wireless links; comprise any combination of one or more types of networks; and/or utilize any combination of various types of transmission techniques and protocols.

As discussed herein, distribution program30enables computer system20to perform spare latch distribution for an integrated circuit. To this extent, computer system20may perform the method according to aspects of the invention, as shown inFIG. 2.

Referring now toFIG. 2, and with reference to FIGS.1and3-4, at step51, design data35is received by the computer system20. The design data35is for an integrated circuit design100and includes information regarding the placement of a plurality of latches on the integrated circuit design. Next, at step S2, the integrated circuit design100is segmented into a plurality of equal sections101A,101B, . . . ,101P. AlthoughFIG. 3shows that integrated circuit design100is segmented into16(A-P) equal sections, it is understood that the integrated circuit design100may be segmented into any number of equal sections. Further, it is understood that the following are performed for each clock domain within the integrated circuit design100. The integrated circuit design100may include any number of clock domains. That is, the integrated circuit design100may be segmented for each of the clock domains.

Next, at step S3, a latch density within each of the equal sections101A,101B, . . .101P is determined by distribution program30of computer system20. The latch density (li) within each of the equal sections101A may be determined by dividing the number of latches (ni) within each of the equal sections101A,101B, . . .101P by the total number of latches (N) within each of the equal sections101A,101B, . . .101P. That is, li=ni/N. In the example shown inFIG. 3, section101A of the integrated circuit design100includes 1 latch. The total number of latches within the integrated circuit design100is 20 latches. Therefore, the latch density of section101A of the integrated circuit design100is 1/20.

At step S4, the number (si) of spare latches (i.e., the distribution data40) that indicates how many spare latches to place within each of the equal sections101A,101B, . . .101P is determined. The number siof spare latches to place within each of the equal sections101A,101B, . . .101P is based on the latch density for each of the equal sections101A,101B, . . .101P and the total number (S) of spare latches available for the integrated circuit design100. That is, si=li*S. In other words, the latch density liof the equal sections101A,101B, . . .101P within the integrated circuit design100corresponds to the total number (S) of spare latches that are available to the design (i.e., user12).

For example, in the integrated circuit design100shown inFIG. 4, in equal section101A, the latch density is 1/20. If, for example , the total number of spare latches that are available for the integrated circuit design100is 40, then, for equal section101A, the number of spare latches is 2. This way, the spare latch density of equal section101A matches the latch density of equal section101A. As clearly seen inFIG. 4, spare latches110are placed within the integrated circuit design100.

Although it is not shown, the center (not shown) of each of the equal sections101A,101B, . . .101P may be determined and the spare latches110may be positioned within the center of the equal sections101A,101B, . . .101P. That way, if any logic within an equal sections101A,101B, . . .101P, where there is dense logic, needs to be repaired and/or updated, the spare latches, which are proximate to the dense logic will be easily accessible to implement the change, without incurring additional timing delays within the integrated circuit design100.

While shown and described herein as a method and system for spare latch distribution for an integrated circuit, it is understood that aspects of the invention further provide various alternative embodiments. For example, in one embodiment, the invention provides a computer program fixed in at least one computer-readable medium, which when executed, enables a computer system to perform spare latch distribution for an integrated circuit. To this extent, the computer-readable medium includes program code, such as distribution program30(FIG. 1), which implements some or all of a process described herein. It is understood that the term “computer-readable medium” comprises one or more of any type of tangible medium of expression, now known or later developed, from which a copy of the program code can be perceived, reproduced, or otherwise communicated by a computing device. For example, the computer-readable medium can comprise: one or more portable storage articles of manufacture; one or more memory/storage components of a computing device; paper; and/or the like.

In another embodiment, the invention provides a method of providing a copy of program code, such as distribution program30(FIG. 1), which implements some or all of a process described herein. In this case, a computer system can process a copy of program code that implements some or all of a process described herein to generate and transmit, for reception at a second, distinct location, a set of data signals that has one or more of its characteristics set and/or changed in such a manner as to encode a copy of the program code in the set of data signals. Similarly, an embodiment of the invention provides a method of acquiring a copy of program code that implements some or all of a process described herein, which includes a computer system receiving the set of data signals described herein, and translating the set of data signals into a copy of the computer program fixed in at least one computer-readable medium. In either case, the set of data signals can be transmitted/received using any type of communications link.

In still another embodiment, the invention provides a method of generating a system for spare latch distribution for an integrated circuit. In this case, a computer system, such as computer system20(FIG. 1), can be obtained (e.g., created, maintained, made available, etc.) and one or more components for performing a process described herein can be obtained (e.g., created, purchased, used, modified, etc.) and deployed to the computer system. To this extent, the deployment can comprise one or more of: (1) installing program code on a computing device; (2) adding one or more computing and/or I/O devices to the computer system; (3) incorporating and/or modifying the computer system to enable it to perform a process described herein; and/or the like.

It is understood that aspects of the invention can be implemented as part of a business method that performs a process described herein on a subscription, advertising, and/or fee basis. That is, a service provider could offer to perform spare latch distribution for an integrated circuit as described herein. In this case, the service provider can manage (e.g., create, maintain, support, etc.) a computer system, such as computer system20(FIG. 1), that performs a process described herein for one or more customers. In return, the service provider can receive payment from the customer(s) under a subscription and/or fee agreement, receive payment from the sale of advertising to one or more third parties, and/or the like.