The present disclosure relates generally to integrated circuit design tools, and, in particular, to spare circuitry distribution in an integrated circuit design.
In designing integrated circuits, such as application specific integrated circuits (ASICs), programmable logic devices (PLDs), microprocessors, microcontrollers, memory devices, and the like, spare circuitry is often incorporated early in the design process to support additions or changes as the design matures. While adding spare circuitry to a design increases flexibility for future modifications, it is difficult to determine where to place the spare circuitry such that it can be effectively utilized in the future. A common approach is to place all required circuitry first and then place spare circuitry in an arbitrary available location within the integrated circuit. This approach can lead to clustering spare circuitry in areas of the integrated circuit where the spare circuitry is not readily accessible when needed. Some spare circuitry is specifically intended to adjust for timing issues that can appear when a design is physically placed within an integrated circuit. However, if the spare circuitry is not in physical proximity to a circuit that needs to utilize the spare circuitry, additional timing delays can accrue due to the distance between the spare circuitry and the circuit that utilizes it. The additional timing delays make successful utilization of the spare circuitry difficult.
Another approach to placing spare circuitry is to identify locations next to circuits that designers anticipate will be problematic. Identifying potential problem areas with spare circuitry can be time consuming for designers, involving a substantial effort to locate potential problem areas and carefully integrate and/or hand place the spare circuitry in those areas. This approach is sometimes helpful, but unanticipated problems often arise near non-identified circuits due to design issues, layout and routing constraints, or requirements changes. Thus, both the clustering approach and the identifying potential problem areas approach to placing spare circuitry within an integrated circuit may be ineffective in practice. Accordingly, there is a need in the art for automated spare circuitry distribution in an integrated circuit design.
An embodiment of the invention includes a method for spare circuitry distribution in an integrated circuit design. The method includes receiving design data for the integrated circuit design. The design data includes descriptions of spare circuitry and physical area available for circuitry placement. The method further includes determining target placement locations for the spare circuitry, where the target placement locations create a balanced distribution of the spare circuitry throughout the physical area available for circuitry placement. The method also includes shifting the location of the spare circuitry from each target placement location towards a nearest clock block within the integrated circuit design, resulting in an updated integrated circuit design. The method additionally includes outputting the updated integrated circuit design.
An additional embodiment includes a system for spare circuitry distribution in an integrated circuit design. The system includes a data storage device holding design data for the integrated circuit design, where the design data includes descriptions of spare circuitry and physical area available for circuitry placement. The system also includes a host system in communication with the data storage device. The host system executes a spare circuitry distribution tool (SCDT). The SCDT receives the design data and determines target placement locations for the spare circuitry. The target placement locations create a balanced distribution of the spare circuitry throughout the physical area available for circuitry placement. The SCDT also shifts the location of the spare circuitry from each target placement location towards a nearest clock block within the integrated circuit design, resulting in an updated integrated circuit design. The SCDT outputs the updated integrated circuit design.
Another embodiment includes a computer program product for spare circuitry distribution in an integrated circuit design. The computer program product includes a storage medium readable by a processing circuit and storing instructions for execution by the processing circuit for implementing a method. The method includes receiving design data for the integrated circuit design, where the design data includes descriptions of spare circuitry and physical area available for circuitry placement. The method also includes determining target placement locations for the spare circuitry. The target placement locations create a balanced distribution of the spare circuitry throughout the physical area available for circuitry placement. The method further includes shifting the location of the spare circuitry from each target placement location towards a nearest clock block within the integrated circuit design, resulting in an updated integrated circuit design. The method additionally includes outputting the updated integrated circuit design.
Other systems, methods, and/or computer program products according to embodiments will be or become apparent to one with skill in the art upon review of the following drawings and detailed description. It is intended that all such additional systems, methods, and/or computer program products be included within this description, be within the scope of the present invention, and be protected by the accompanying claims.
Referring now to the drawings wherein like elements are numbered alike in the several FIGURES:
Exemplary embodiments, as shown and described by the various figures and the accompanying text, provide a method, system and computer program product for spare circuitry distribution in an integrated circuit design. In designing an integrated circuit, spare circuits may be incorporated in the design to provide some margin for future modifications. As the design matures, changes to the original design can occur for a number of reasons, such as design issues, layout and routing constraints, or requirements changes. When spare circuitry is needed to correct or otherwise modify circuit timing, it is beneficial for the spare circuitry to be located in close physical proximity to the circuits that connect to the spare circuitry, as longer paths result in greater delay. Examples of spare circuitry include latches, buffers, clocking structures, and other such elements. While increasing the overall spare circuitry within the design could help mitigate proximity issues, there is increased cost and decreased efficiency when employing a large number of spare circuits. Therefore, applying a spare circuitry placement strategy is a preferable solution to simply increasing the total number of spare circuits.
In an exemplary embodiment, a spare circuitry distribution tool determines a target distribution for spare circuitry through analyzing design data. The design data may include descriptions of spare circuitry and physical area available for circuitry placement. The target distribution spreads the spare circuitry across the physical area available for circuitry placement to establish a balanced distribution. The balanced distribution need not be perfectly symmetric and may take other factors into account, such as preferred regions of the integrated circuit to locate spare circuitry. In an exemplary embodiment, the balanced distribution approximates a checkerboard pattern. Once the target locations for the spare circuitry are determined, the placement locations are shifted to better align the spare circuitry with other circuits in the design. In an exemplary embodiment, the spare circuitry is shifted towards the nearest clock block in the design, e.g., a local clock block. Placing the spare circuitry near clock blocks increases the probability that the spare circuitry will be in close proximity to other circuits that may need to interface with the spare circuitry in the future. The spare circuitry distribution tool or a separate logic synthesizer can shift the spare circuitry towards the nearest clock block, applying an optional relative weighting to adjust the strength of attraction between the spare circuitry and the nearest clock block. Further details regarding spare circuitry distribution in an integrated circuit design are provided herein.
Turning now to the drawings, it will be seen that in
The network 106 may be any type of communications network known in the art. For example, the network 106 may be an intranet, extranet, or an internetwork, such as the Internet, or a combination thereof. The network 106 can include wireless, wired, or fiber optic links.
The data storage device 108 refers to any type of storage and may comprise one or more secondary storage elements, e.g., a hard disk drive or tape storage system that is external to the host system 102. In an alternate exemplary embodiment, the data storage device 108 is internal to the host system 102. Types of data that may be stored in the data storage device 108 include databases and/or files of design data 110, as well as output files 112. It will be understood that the data storage device 108 shown in
In an exemplary embodiment, the host system 102 executes various applications, including a spare circuitry distribution tool (SCDT) 114 and a synthesizer 116. Other applications, e.g., electronic design automation (EDA) software, business applications, a web server, etc., may also be implemented by the host system 102 as dictated by the needs of the enterprise of the host system 102. The SCDT 114 interacts with databases and/or files stored on the data storage device 108, such as the design data 110, generating the output files 112. The SCDT 114 may also interact with the synthesizer 116. In an alternate exemplary embodiment, the synthesizer 116 reads and writes files to the data storage device 108, passing data to the SCDT 114 through files or data structures. In an exemplary embodiment, the design data 110 include one or more Very-high-speed integrated circuit Hardware Description Language (VHDL) files providing design descriptions for an integrated circuit design. The design data 110 may also include an abstract containing physical cell placement information defining the physical area available for circuitry placement within the integrated circuit design. All or a portion of the SCDT 114 and the synthesizer 116 may be located on the user systems 104 with processing shared between the user systems 104 and the host system 102, e.g., a distributed computing architecture. In addition, all or a portion of the data utilized by the SCDT 114 and the synthesizer 116 may be located on the user systems 104.
In an exemplary embodiment, the user systems 104 access the host system 102 to request spare circuitry distribution while designing an integrated circuit. The user systems 104 may also access the host system 102 to create or modify the design data 110 using other EDA software (not depicted). In an exemplary embodiment, the SCDT 114 is capable of analyzing the design data 110 to determine a spare circuitry distribution for the integrated circuit design. The SCDT 114 and the synthesizer 116 may each be implemented as a stand-alone application, a plug-in, a module, or an executable script in a development environment. The SCDT 114 and the synthesizer 116 can also be combined or further subdivided in any combination. For example, the SCDT 114 may be a module integrated with the synthesizer 116. In an exemplary embodiment, when the host system 102 receives a request to execute the SCDT 114, the design data 110 is read from the data storage device 108 and received by the SCDT 114. The SCDT 114 parses the design data 110 to determine target placement locations for the spare circuitry. Either the SCDT 114 or the synthesizer 116 may shift the location of the spare circuitry from each target placement location towards a nearest clock block within the integrated circuit design, with the results of the updated integrated circuit design output to the output files 112.
Turning now to
Through executing the SCDT 114 of
In an exemplary embodiment, after the target placement locations for the spare circuitry 206 are determined, the spare circuitry 206 is shifted in location to account for the placement of other elements within the integrated circuit 200. Shifting the spare circuitry 206 towards the local clock blocks 202 increases that probability that the spare circuitry 206 will be positioned near the utilized circuitry 204 that will interface with the spare circuitry 206. Each arrow 302 indicates the direction in which the spare circuitry 206 is shifted. The distance that the spare circuitry 206 is shifted may be controlled through a relative weighting to adjust the strength of attraction between the spare circuitry 206 and the nearest local clock block 202. For example, the relative weighting may be set to 50%, shifting the spare circuitry 206 in the direction indicated by each arrow 302 within approximately half of the distance between the spare circuitry 206 and the local clock block 202. The relative weighting may be user programmable. In an exemplary embodiment, the SCDT 114 of
Turning now to
At block 402, the SCDT 114 receives design data 110 for the integrated circuit design. In an exemplary embodiment, the design data includes descriptions of spare circuitry and physical area available for circuitry placement. The spare circuitry can be a latch, a buffer, a clocking structure, or other circuit structures known in the art. The descriptions of spare circuitry may be received from one or more VHDL files as part of the design data 110. The physical area available for circuitry placement may be received from an abstract containing physical cell placement information as part of the design data 110.
At block 404, the SCDT 114 determines target placement locations for the spare circuitry. The target placement locations create a balanced distribution of the spare circuitry throughout the physical area available for circuitry placement. In an exemplary embodiment, the target placement locations for the spare circuitry includes distributing the spare circuitry evenly using a grid coordinate system in the physical area available for circuitry placement. The balanced distribution need not be perfectly symmetric and may take other factors into account, such as preferred regions of the integrated circuit to locate spare circuitry. For example, the target placement locations for the spare circuitry may be closer to the periphery of the integrated circuit, as depicted in
At block 406, the SCDT 114 shifts the location of the spare circuitry from the each target placement location towards a nearest clock block within the integrated circuit design, resulting in an updated integrated circuit design. The clock block may be a local clock block, such as the local clock blocks 202 depicted in
At block 408, the SCDT 114 outputs the updated integrated circuit design. In an exemplary embodiment, the synthesizer 116 creates a physical implementation definition of the updated integrated circuit design. The output may be formatted as files or data for storage in the data storage device 108 as the output files 112. Manufacturing tools or device programmers (not depicted) can then use the output files 112 to create a physical embodiment of the integrated circuit.
Technical effects include spare circuitry distribution in an integrated circuit design. The distribution of the spare circuitry is balanced to spread the spare circuitry in an approximately even manner throughout the integrated circuit design. An advantage includes more efficient allocation of spare circuitry within an integrated circuit design. Further technical effects include determining target placement locations for the spare circuitry and shifting the spare circuitry from the target locations towards clock blocks. Placing the spare circuitry near clock blocks may reduce wire length and improve signal-timing margin when the spare circuitry is integrated with other circuits. Improving the placement of spare circuitry in an automated manner may reduce human designer effort, while increasing productivity and efficiency. Automated distribution of spare circuitry may enhance flexibility to respond to engineering change orders through placing spare circuitry in areas of the integrated circuit where it is most likely to be needed and utilized.
As described above, embodiments can be embodied in the form of computer-implemented processes and apparatuses for practicing those processes. In an exemplary embodiment, the invention is embodied in computer program code executed by one or more network elements. Embodiments include computer program code containing instructions embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, universal serial bus (USB) drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. Embodiments include computer program code, for example, whether stored in a storage medium, loaded into and/or executed by a computer, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits.
While the invention has been described with reference to exemplary embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted for elements thereof without departing from the scope of the invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the invention without departing from the essential scope thereof. Therefore, it is intended that the invention not be limited to the particular embodiment disclosed as the best mode contemplated for carrying out this invention, but that the invention will include all embodiments falling within the scope of the appended claims. Moreover, the use of the terms first, second, etc. do not denote any order or importance, but rather the terms first, second, etc. are used to distinguish one element from another. Furthermore, the use of the terms a, an, etc. do not denote a limitation of quantity, but rather denote the presence of at least one of the referenced item.