The present disclosure is generally directed toward Integrated Circuits and methods of designing the same.
The process of building an Integrated Circuit (IC) or integrated circuit chip typically involves physical implementation followed by verification. Part of this verification process involves static timing analysis. Often times, design changes require that blocks (e.g., components or groupings of components on the integrated circuit) be moved around to address gate growth or to address other floorplan needs. Unfortunately, these changes often have a negative impact on static timing closure. Because timing reports are textual, there is no easy way to see how far blocks can be moved before seeing a negative impact on timing without detailed analysis of the timing reports. This results in significant engineering attention which, in turn, results in wasted machine and license resource use and schedule delay.
The present disclosure is described in conjunction with the appended figures, which are not necessarily drawn to scale:
The ensuing description provides embodiments only, and is not intended to limit the scope, applicability, or configuration of the claims. Rather, the ensuing description will provide those skilled in the art with an enabling description for implementing the described embodiments. It being understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the appended claims.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this disclosure belongs. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and this disclosure.
As used herein, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprise,” “comprises,” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. The term “and/or” includes any and all combinations of one or more of the associated listed items.
While embodiments of the present disclosure will be described in connection with the design of integrated circuits and integrated circuit chips, it should be appreciate that embodiments of the present disclosure can be applied to any design process where modification of one variable (e.g., physical position of an element or component in a system) impacts another variable (e.g., communication delays between components of the system).
Integrated circuits consist of a large number of electronic components that are fabricated by layering several different materials on a silicon base or wafer. The physical design of an integrated circuit transforms a circuit description into a geometric description which is known as a layout. A layout consists of a set of planar geometric shapes in several layers.
The objective of physical design is to determine an optimal arrangement of devices in a plane or in a three dimensional space, and an efficient interconnection or routing scheme between the devices to obtain the desired functionality. Since space on a wafer is very expensive real estate, algorithms must use the space efficiently to lower costs and improve yield.
The input to the physical design problem is a circuit diagram, and the output is the layout of the circuit. The physical design is accomplished in several stages including partitioning, floor-planning, placement, and routing.
A chip may contain several million transistors. Layout of the entire circuit cannot typically be handled by currently available floor-planning tools due to the limitation of memory space as well as the computational power available. Therefore, the circuit is normally partitioned by grouping the components into functional blocks such as subcircuits and modules. The actual partitioning process considers many factors such as the size of the blocks, number of blocks and number of interconnections between the blocks.
The output of partitioning is a set of blocks, along with the interconnections required within and between blocks. The set of interconnections required is referred to as a netlist. In large circuits, the partitioning process is often hierarchical, although non-hierarchical (e.g. flat) processes can be used, and at the topmost level a circuit typically has between 5 to 25 blocks. However, greater numbers of blocks are possible and contemplated. Each block is then partitioned recursively into smaller blocks or sub-blocks.
The floor-planning step is concerned with selecting good layout alternatives for each block of the entire chip, as well as between blocks and to the edges. Floor-planning is an important step as it sets up the ground work for a good layout. However it is computationally quite hard. Very often the task of floorplan layout is done by a design engineer using a CAD tool. This is necessary as the major components of an integrated circuit are often intended for specific locations on the integrated circuit.
During placement, the blocks and locations of the block terminals, referred to hereinafter as block “pins”, within the blocks are exactly positioned on the chip. The goal of placement is to find a minimum area arrangement for the blocks that allows completion of interconnections defined by the netlist. Placement is typically done in two phases. In the first phase, an initial placement is created. In the second phase, the initial placement is evaluated and iterative improvements are made until the layout has minimum area and conforms to design specifications.
It is one aspect of the present disclosure to provide an integrated circuit designer with a method of displaying the timing margin available between blocks during the verification or design phase of an integrated circuit. Specifically, the visualization of timing margin during verification enables a designer to quickly identify changes in timing of the integrated circuit when a block is physically moved on the layout. As used herein, the term “block” refers to a grouping of digital circuit components on an integrated circuit that perform a particular function for the integrated circuit.
This allows the designer to quickly see which paths have minimal margin and which have margin to spare (e.g., communication delays are less than communication delay requirements). The analysis is much faster than sifting through the detailed timing reports looking for specific block-to-block paths.
In accordance with at least some embodiments of the present disclosure, a floor planning tool is provided as executable programming code (e.g., software, firmware, hardware, combinations thereof) on a client device and/or a server. The floor planning tool is configured to first read in a summary of the worst timing path slack per sequential input pin (e.g., top-level registers, top-level blocks, etc.). This information is then associated with the top-level block-to-block connectivity in an integrated circuit floorplanning tool. A flyline is then drawn from the launch instance (e.g., hierarchical stdcell block or top-level register) to the capturing instance (e.g., hierarchical stdcell block or top-level register). The worst-case slack for each block-to-block bus is used to determine what color to draw for the bus. The colors are chosen based on the slack tiers as defined by the user, a system administrator, or the like. For instance, white might be used to indicate less than 0 ps of margin (e.g., failing timing), red might be used to indicate timing margin from 0 ps to 300 ps (e.g., near-failing timing), yellow might be used to indicate timing margin from 300 ps to 500 ps, and green might be used to indicate timing margin above 500 ps.
These slack tiers can be adjusted based on the specifics of the integrated circuit design and other design considerations. The end result is a graphical visualization of the timing margin that exists between the blocks of interest. Furthermore, each flyline can be queried by the user to see what the slack is for the flyline and what pin the depicted slack is associated with.
Referring now to
The communication network 104 may correspond to any type of well-known computing or network environment (e.g., interconnection of two or more computing or communication devices). The communication network 104 may facilitate communications between all devices connected therewith using any type of known communication protocol. In accordance with at least some embodiments of the present disclosure, the communication network 104 may comprise any type of known communication medium or collection of communication media and may use any type of protocols to transport messages between endpoints. The communication network 104 may include wired and/or wireless communication technologies. The Internet is an example of the communication network 104 that constitutes and Internet Protocol (IP) network consisting of many computers, computing networks, and other communication devices located all over the world, which are connected through many telephone systems and other means. Other examples of the communication network 104 include, without limitation, a standard Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a LAN, a WAN, a Session Initiation Protocol (SIP) network, a Voice over IP (VoIP) network, a cellular network, an enterprise network, a contact center, and any other type of packet-switched or circuit-switched network known in the art. In addition, it can be appreciated that the communication network 104 need not be limited to any one network type, and instead may be comprised of a number of different networks and/or network types. Moreover, the communication network 104 may comprise a number of different communication media such as coaxial cable, copper cable/wire, fiber-optic cable, antennas for transmitting/receiving wireless messages, and combinations thereof.
In some embodiments, a computing device(s) 108 may include a personal communication device, a dedicated computing device, or a combined communication/computational device. Examples of suitable computing devices 108 include, without limitation, a Personal Computer (PC), a tablet, a laptop, a Personal Digital Assistant, a thin client, a smartphone, or the like. The computing device 108 may be configured for operation by one or more users and may include local software and drivers that enable the user to utilize the processing and/or memory components of the computing device 108. Thus, the computing device 108 may include one or more user interface components including user inputs, user outputs, and combined user input/output devices.
The server 112 may include any type of dedicated processing component that is accessible to one or a plurality of computing devices 108 (e.g., client devices). The server 112 may store one or more instances of executable instructions thereon and the computing devices 108 may request the server 112 to execute some or all of those instructions on behalf of the computing device 108. Results of such computations can be provided to the computing device 108 via the communication network 104, which can then be rendered for presentation to the user via a user interface of the computing device 108.
The database 124 may include one or multiple types of data storage technologies. The database 124 may further include a database interface that enables the computing devices 108 and/or server 112 to interact with the database 124, store information on the database 124, retrieve information from the database 124, modify information stored on the database 124, etc. Suitable non-limiting examples of databases 124 that may be used to circuit design information 128 and/or any other content that is useful in the process of designing integrated circuits and layouts for the same include a hierarchical database, a graph database, a relational database, a network database, an object-oriented database, or the like. The database interface for the database 124 may utilize a language or format that is operable to extract useful information from the database 124. Examples of languages that may be used by the database interface include, without limitation, SQL, noSQL, NewSQL, and/or any other type of Database Management System (DBMS) known in the art.
As shown in
The floor planning tool 116 may include instructions programmed to perform the floor planning process(es) described herein. Typically, the floor planning process can be implemented as a set of procedures in Tool Command Language (TCL), which is a well known scripting language. The floor planning tool 116, in some embodiments, performs the floor planning and block partitioning processes in a known manner. As will be described in further detail herein, during these design iterations, the floor planning tool 116 may be configured to determining timing information for some or all block-to-block connections in the floor plan and present such information to the user in a way that facilitates a quick and efficient understanding of whether or not certain timing constraints or requirements for the integrated circuit can be met with the current layout or whether improvements to timing conditions have been made as a result of the layout change.
In particular, a user may be allowed to retrieve circuit design information 128 in the form of a netlist or the like that defines the blocks to be included in an integrated circuit design and the physical layout of such blocks and/or sub-blocks on the silicon of the integrated circuit. With the floor planning tool 116, the user of the computing device 108 may further be enabled to modify the floorplan and analyze timing constraints, among other things, for block-to-block connections and sub-block-to-sub-block connections. As the layout of the integrated circuit is changed, the floor planning tool 116 may enable the user of the computing device 108 to visualize, in real-time or near-real-time, changes to the timing margins for various block-to-block connections and how changes to block layout impact may improve or deteriorate timing performance of the integrated circuit. By enabling the user to see such impacts of layout modification in real-time or near-real-time, the user is allowed to more efficiently develop an optimal and workable integrated circuit design.
One advantage to using the server 112 to implement the floor planning tool 116 is that superior processing resources of the server 112 or a server cluster may be leveraged to execute what is often a processor-intensive application in the floor planning tool 116. In particular, the circuit design information 128 that is read and modified via the floor planning tool 116 is often on the order of Terabytes or more. Another advantage to using the server 112 is that user preferences 120 can be stored on the server 112, thereby enabling each user to have their visualization and presentation preferences accommodated even though shared resources of the server are being utilized by multiple users. The server 112 further facilitates efficient collaboration among users, thereby assisting in the team development of an optimal integrated circuit design. In some embodiments, the user preferences 120 may define each user's presentation preferences, each user's tool preferences, each user's input preferences, administrator preferences, sharing preferences, and the like.
As can be appreciated, the ultimate goal of using the floor planning tool 116 is to achieve a final circuit design 136. When such an integrated circuit design is finalized, the final version of the circuit design information 128 may be shared from the database 124 to a manufacturing facility 132 thereby enabling the production of one or more integrated circuits in accordance with the final circuit design 136.
With reference now to
The device 108/server 112 is shown to include a processor 204, memory 208, a network interface 212, an optional peripheral interface 216 (in the implementation of a computing device 108), and one or more drivers 220. The memory 208 may include any type or combination of known computer memory devices, whether volatile or non-volatile. Suitable non-limiting examples of memory 208 include Read Only Memory (ROM), Random Access Memory (RAM), Flash Memory, Buffer Memory, Electronically Programmable ROM (EPROM), Electronically Erasable Programmable ROM (EEPROM), magnetic memory, optical memory, quantum memory, variants thereof, or the like. In other words, the format of memory 208 may include any known or yet-to-be-developed memory format.
The instructions stored in memory 208 may be called, parsed, and executed by the processor 204. The process 204, in some embodiments, includes one or more processors. More specifically, the processor 204 may include one or more microprocessors that are capable of executing the instructions stored in memory 208. The processor 204 may also have internal memory that assists the processor 204 in executing instructions and performing various tasks. Although the contents of memory 208 are shown and primarily described as processor-executable instructions (e.g., software), it should be appreciated that the floor planning tool 116, the floor planning module 236, and other instructions shown to be stored in memory 208 may be partially or completely implemented in software, firmware, hardware, combinations thereof, or the like.
The network interface 212 provides the device 108/server 112 to connect with the communication network 104 and, therefore, interact with other computing devices 108 and servers 112 as well as other network-connected components (e.g., databases, other networks, etc.). The network interface 212, in some embodiments, may correspond to a wired network interface port or wireless interface (e.g., antenna and drivers). Some non-limiting examples of a wired network interface port correspond to an Ethernet port, a CAT-5 port, a CAT-6 port, or the like. Some non-limiting examples of a wireless network interface port corresponds to a Bluetooth® interface, a 802.11N interface (e.g., a WiFi interface), a cellular interface, an Infrared interface, or the like.
The peripheral interface 216 may be optionally provided in the implementation of a computing device 108, although a server 112 may also be equipped with one or more peripheral interfaces 116. The peripheral interface 216 provides an interconnection between components of the computing device 108 and external devices (e.g., peripherals). Peripheral devices most likely used in connection with embodiments of the present disclosure include one or more user interface 224 peripherals. The user interface(s) 224 may include user input devices (e.g., a mouse, pointer, keyboard, stylus, microphone, camera, etc.), user output devices (e.g., a printer, a speaker, a visual display such as an LCD or LED monitor, lights, buzzers, etc.), and/or combination user input/user output devices (e.g., touch-sensitive displays).
The driver(s) 220 may be configured for specific components of the device 108/server 112. As an example, each network interface 212 may have a corresponding driver 220, each peripheral interface 216 or specific peripheral device connected thereto may have a corresponding driver 220, and each user interface 224 may have a corresponding driver 220. The driver(s) 220 enable operation of the various components by control of the processor 204 when executing certain basic functions of the device 108/server 112.
As shown in
The O/S 228 may correspond to a general-purpose application that enables a user of the device 108 to access other applications 232 and the floor planning tool 236. The O/S 228 may also include functionality that enables navigation of documents stored in memory 208 as well as an interface with database 124. Examples of suitable O/S 228 include, without limitation, Windows®, Linux, Mac O/S, Android®, IOS®, or the like. The O/S 228 may even be configured to include some or all functionality of the floor planning module 236 without departing from the scope of the present disclosure.
The other applications 232 may correspond to any type of known or yet-to-be-developed applications, applets, web-based applications, or the like. The applications 232 may include communication applications (e.g., phone applications, web browser applications, searching applications, email applications, text applications, etc.), integrated circuit design applications, collaboration applications, or the like.
The floor planning module 236 is shown to include a number of modules and components therein that help provide the functionality of the floor planning module 236. The illustrated components of the floor planning module 236 include a design editor 240, a timing analyzer 244, a filter module 252, and a visualization module 248. The design editor 240 may correspond to a portion of the floor planning module 236 that enables a user to view, create, add, modify, delete, or otherwise interact and edit integrated circuit layouts. The design editor 240 may provide editing tools and tools for presenting the current layout of an integrated circuit as well as tools for modifying locations or properties of blocks on the layout of the integrated circuit.
The timing analyzer 244 may provide the floor planning module 236 with the ability to analyze block-to-block and sub-block-to-sub-block connections on some or all of an integrated circuit layout. The timing analyzer 244 may perform such analysis in real-time (e.g., as changes are made to the layout with the design editor 240), in near-real-time (e.g., after changes are made to the layout but before committed to a circuit design iteration stored in the database 124), or after a layout has been saved to the database 124. As will be discussed in further detail herein, the timing analyzer 244 may be configured to determine timing information for blocks and block-to-block connections, association such timing information with the appropriate blocks and block-to-block connections, and present the timing information to a user in an easy to understand format. With the help of the visualization module 248, the presentation of timing information can be provided all at once or selectively, perhaps depending upon user preferences 120. In some embodiments, the visualization module 248 may help highlight certain blocks or block-to-block connections that have timing information associated therewith that may be of interest or concern to the user. The way in which such information is highlighted or presented to a user may include highlighting interesting blocks and/or connections, hiding of non-interesting blocks and/or connections, highlighting particular pins of blocks, preparing reports in an ordered fashion, or the like.
The filter module 252 may provide another mechanism for the user to view and refine views of an integrated circuit layout and, in particular, to query the entire layout for blocks or connections having certain properties (e.g., timing properties) associated therewith. The filter module 252 may also provide the ability to limit the amount of timing information presented to a user to only a subset of timing information that is deemed relevant and useful to the user at a particular time (e.g., as determined by a user's query for such information or as determined by the user's current utilization of the floor planning module 236).
With reference now to
Additionally, since a block may comprise two or more sub-blocks, there may be multiple intra-block connections (e.g., block-to-block connections between sub-blocks in a common block). For instance, block B 16 shows two intra-block connections between sub-blocks s2/s3 and s7/s8. These intra-block connections do not contribute to timing constraints on inter-block connections. Thus, as shown in
As shown in
Further still, as shown in
As used herein, timing margin may be determined by determining an amount of time for a signal to travel from one block to another block along a block-to-block connection. That determined amount of time may be subtracted from a predetermined timing requirement or limitation to determine a timing margin. If the determined amount of time exceeds the predetermined timing requirement, then the timing margin is zero and the timing requirement is determined to be violated. As can be appreciated, a particular flyline presentation (color, type, weight, etc.) may be used to depict such block-to-block connections.
With reference to
With reference now to
Thereafter, the timing analyzer 244 associates the determined timing information and/or timing path slack values with each connection and/or each block involved in a connection (step 412). This timing information, timing path slack value information, and association information is then communicated to the visualization module 248, which prepares a presentation of the timing path slack value information, other timing information, or the like with the associated connection and/or block involved in the connection (step 416). In some embodiments, the visualization module 248 may simplify the display of the timing information and timing slack path values by only displaying the connections between a pair of blocks that have the worst timing path slack value among all connections between that pair of blocks. Thus, all other connections that are not limiting timing with respect to a pair of blocks may not be depicted, thereby enabling the user of the floor planning module 236 to easily identify the constraining connections and further determine when changes to block position negatively impact timing between the moved block and another block in the layout. Furthermore, the visualization module 248 may highlight or alter the type of display used for the constraining connections. For instance, if the most constraining connection has an acceptable amount of timing path slack, then the connection may be depicted as green whereas another connection that does not have an acceptable amount of timing path slack (or no timing path slack) may be depicted in red or bolded. Other presentation techniques can also be employed to facilitate the user's perception of timing information for connections between blocks or sub-blocks.
With reference now to
Thereafter, the user may provide the floor planning module 236 with a query to view detailed connection information (step 512). The query may be in the form of selecting a particular connection of flyline displayed to the user, selecting one or more blocks, selecting one or more sub-blocks, or entering search criteria into a search field. With respect to a detailed search query, the user may be allowed to indicate that he/she wants to view all connections having a timing path slack value less than a user-defined amount (e.g., less than 200 ps). Alternatively or additionally, the user may be allowed to indicate that he/she wants to view the five (or some other user-defined value) connections having the worst timing path slack values. Other restrictions on the search criteria may also be envisioned and the examples provided herein are not intended to limit the scope of the present disclosure.
Based on the query received from the user, the filter module 252 may determine which blocks or connection meet the query requirements and prepare a response to the query (step 516). Specifically, the filter module 252 may remove or minimize the display of connections that do not meet the query requirements. The filter module 252 may also display detailed connection information 304 about one or more connections or blocks that do meet the query requirements. This detailed connection information 304 can be presented to the user in any fashion.
With reference now to
The timing analyzer 244 updates the timing information and timing path slack values computed for the analyzed connections and then informs the visualization module 248 of the changes. The visualization module 248 of those changes, thereby allowing the visualization module 248 to update the presentation of flylines and information associated therewith (step 612). It may be that a depicted flyline now represents a different block-to-block connection (e.g., a connection between different pins of a pair of blocks) because the block movement resulted in a different connection becoming the constraining connection. However, since a flyline is used to depict the connection information, the flyline may be adjusted by simply changing the information depicted in connection therewith.
Finally, the visualization module 248 may highlight flylines or blocks with timing changes that exceed a predetermined threshold or are the newest constraining connections (step 616). In other words, a user is allowed to visualize, in real-time or near-real-time, whether changes to a layout have a positive or negative impact on timing of the layout.
Specific details were given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
While illustrative embodiments of the disclosure have been described in detail herein, it is to be understood that the inventive concepts may be otherwise variously embodied and employed, and that the appended claims are intended to be construed to include such variations, except as limited by the prior art.