The present invention relates to the design of integrated circuits, in particular to the correction of timing failures of a network of conductors and repowering structures in an integrated circuit design.
During the design of an integrated circuit, signals carried on a network of conductors may degrade due to parasitic capacitances, resistance, and noise. This may result in timing errors such as the signal edge arriving too late (a slack fail) or the signal edge not being steep enough (a slew fail). Correcting these timing errors may involve making adjustments to the network of conductors or adding repowering structures (e.g., buffers or inverters). This however may be a very labor intensive and time-consuming process that is performed manually.
In one aspect the invention provides for a computer-implemented method of correcting a timing failure of a network of conductors and repowering structures in an integrated circuit design using a reinforcement learning agent. The reinforcement learning agent comprises a neural network. The method comprises receiving a graph comprising nodes and edges that encodes the network of conductors and repowering structures. The design of the network of conductors and repowering structures is encoded in the graph. A repowering structure as used herein encompasses an electronic circuit that functions as a unity gain amplifier or inverter. Examples of repowering structures may include buffers, repeaters, and inverters. The method further comprises receiving a modification recommendation from the reinforcement learning agent in response to inputting the graph into the reinforcement learning agent.
According to a further aspect of the present invention, the invention provides for a computer program product that comprises a computer-readable storage medium that has computer-readable program code embodied on it. The computer-readable program code is configured to implement a method according to an embodiment.
According to a further aspect of the present invention, the invention provides for a computer system that comprises a processor configured for controlling the computer system. The computer system further comprises a memory storing machine-executable instructions and a reinforcement learning agent. The reinforcement learning agent comprises a neural network. Execution of the instructions causes the processor to receive a graph comprising nodes and edges that encode a network of conductors and repowering structures in an integrated circuit design. Execution of the instructions further causes the processor to receive a modification recommendation in response to inputting the graph into the neural network reinforcement learning agent.
According to a further aspect of the present invention, the invention provides for a computer program product.
In the following embodiments of the invention are explained in greater detail, by way of example only, making reference to the drawings in which:
The descriptions of the various embodiments of the present invention will be presented for purposes of illustration but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Embodiments may be beneficial because it may provide for a means of automating the correction of timing failures for networks of conductors and repowering structures in an integrated circuit design.
In another embodiment, the method further comprises generating modification commands that are configured for modifying the integrated circuit design using the modification recommendation. This embodiment may be beneficial because the modification commands may be used to control a software model or agent that is used to modify the integrated circuit design.
In another embodiment, the method further comprises inputting the integrated circuit design into circuit simulation module to detect the timing failure of the network of conductors and repowering structures. The method further comprises encoding the network of conductors and repowering structures as the graph. The method further comprises constructing a modified integrated circuit design by modifying the integrated circuit design using the modification commands. The method further comprises inputting the modified integrated circuit design into the circuit simulation module to detect a status of the timing failure. For example, it can be determined if the timing failure has been corrected or if the timing failure is worse than it was before.
The method further comprises determining a training reward for the reinforcement learning agent using the status of the timing failure. The method further comprises training the reinforcement learning agent using the training reward. This embodiment may be beneficial because the reinforcement learning agent may be improved during the process of correcting the timing failure. This for example may then be applied to other integrated circuit designs as well as improving the performance of correcting the timing failure for the current integrated circuit design.
In another embodiment, the method further comprises repeating the method until the timing failure is resolved.
In another embodiment, the training reward is calculated as a constant penalty for action taken by the reinforcement learning agent. This embodiment may be beneficial because it will prioritize the correction of the timing failure as well as to minimize the time to solution and computation time that is used.
In another embodiment, the training reward is calculated as a per-action penalty. In this embodiment the per-action penalty may be determined by a hyper parameter. For example, particular actions may have a particular penalty assigned to them. These penalties may be defined by the operator or user or a hyper parameter optimizer based on impact on side constraints. The benefit of this may include the agent minimizes the number of steps to solution and minimizes the computational time. This may be done while heuristically taking side constraints into account which are encoded as the per action penalties. This may eliminate the need to evaluate side constraints in a circuit editor or circuit CAD system for designing the integrated circuit design. This may mean that the evaluation is performed quite quickly.
In another embodiment, the training reward is calculated using the weighted constraint of power consumption by the integrated circuit. This may be beneficial because it may be used to reduce the amount of power used by the integrated circuit.
In another embodiment, the training reward is calculated using the weighted constraint of the length of the network of conductors. This may be useful in reducing the total length or amount of conductive material.
In another embodiment, the training reward is calculated using the noise of the network of conductors. This may be beneficial because it may be used for reducing the noise level.
In another embodiment, the training reward is calculated using the weighted constraint of route congestion of the network of conductors. This may be beneficial because it may be useful in reducing the route congestion.
In another embodiment, the training reward is calculated using the weighted constraint of the placement congestion of the network of conductors. This may be beneficial in reducing the amount of congestion of the network of conductors.
In another embodiment, the nodes comprise an instance in the conductor network. The edges are directed edges representing a conductor between two instances in the conductor network. The nodes comprise a set of property vectors descriptive of the nodes and the edges. An instance in the conductor network may for example be a repowering structure. This may be beneficial because it may provide for an accurate means of encoding the network of conductors and repowering structures such that they can be modified by a reinforcement learning agent. In another embodiment the property vectors are descriptive of the directed edges either directed into or directed out of the nodes.
In another embodiment, the method further comprises normalizing the set of property vectors of the graph before inputting the graph into the reinforcement learning agent. This normalization process may enable the reinforcement learning agent to be reused for a variety of integrated circuit designs. This may also enable any improvements made to the reinforcement learning agent during the determination of the timing failure to be applied to other integrated circuit designs.
In another embodiment, the graph is normalized relative to the source coordinates as a multiple of or a fraction of the lowest metal layer cycle reach of said integrated circuit design. This normalization may be beneficial because it then enables the reinforcement learning agent to be used for a variety of designs which is not dependent on the actual dimensions of the lowest metal layer cycle reach of the integrated circuit design.
In another embodiment, the graph is normalized such that it is a multiple of or a fraction of the signal cycle time of the integrated circuit design. This embodiment may be beneficial because then the reinforcement learning agent functions independently of the actual signal cycle time.
In another embodiment, the graph is normalized as a multiple of or a fraction of a signal slew limit of the integrated circuit design. This embodiment is beneficial because this normalization generalizes the operation of the reinforcement learning agent to be independent of the actual signal slew limit.
In another embodiment, the neural network of the reinforcement learning agent is configured to provide a score for possible circuit modifications. Receiving the modification recommendation in response to inputting the graph into the neural network reinforcement learning agent comprises selecting the modification recommendation from the score for the possible circuit modifications by the reinforcement learning agent or is received from a user interface. For example, an automated algorithm may use the score to automatically select the modification recommendation. In other instances, several may be displayed on a user interface along with the score and this may then be entered into the user interface by a user. The score may take different forms in different examples. In one example the score may be a probability metric. In other examples the score may be a state-action value.
In another embodiment, the method further comprises constructing a set of masks marking the possible modification recommendation of the conductor network as possible or impossible. The selection of the modification recommendation then comprises excluding the possible modification recommendations marked as impossible. For example, there may be particular modifications to the network of conductors and repowering structures that are not allowed or not possible with the current configuration. This embodiment may be beneficial because the set of masks may be used to exclude these impossible modifications.
In another embodiment, the neural network is a graph neural network. A graph neural network as used herein is a network that is able to receive a graph data structure and provide output in response to receiving this graph neural network.
The neural network comprises an embedding portion that is configured to output a message vector in response to receiving the property vector of a node of the graph encoding the network of conductors and repowering structures. The neural network further comprises a concatenating portion that is configured to concatenate the message vector of the node and the message vector of adjacent nodes of the graph into a neighborhood representation vector. The neural network further comprises a processing node that is configured to output a node-specific modification recommendation for the node in response to receiving the neighborhood representation vector.
The modification recommendation is formed from a collection of the node-specific modification recommendations for the graphs. This embodiment may be beneficial because the structure of having the embedding portion, the concatenating portion and a processing node enables graphs of arbitrary shape to be processed and enable the modification recommendation to be formed.
In another embodiment, the embedding portion comprises a neural network that comprises one or more fully connected neural network layers. This embodiment may be beneficial because the use of the one or more fully connected neural network layers provides an effective means of outputting the message vector.
In another embodiment, the processing node comprises a neural network that comprises one or more fully connected neural network layers. This embodiment may be beneficial because the use of one or more fully connected layers provides an effective means of outputting the node specific modification recommendation.
In another embodiment, the adjacent node comprises a single source node. The concatenating portion of the neural network is configured to receive only a single message vector from the adjacent source node. In this embodiment the structure of the graph is detailed such that there is a single source of current which then flows into a number of sinks.
The adjacent nodes comprise one or more adjacent sink nodes. The concatenating portion of the neural network is configured to receive one or more message vectors from the adjacent sink nodes.
The one or more message vectors of the one or more adjacent sink nodes is reduced to a single message vector by the concatenating layer by any one of the following: calculating a sum of the one or more message vectors, taking an element-wise maximum of one or more message vectors, and calculating a mean of the one or more message vectors. This embodiment may be beneficial because it may enable a standardized processing node. Regardless of the number of sink nodes they are always reduced to a single message vector.
In another embodiment, the timing failure is a slack failure.
In another embodiment, the timing failure is a slew failure.
Various aspects of the present disclosure are described by narrative text, flowcharts, block diagrams of computer systems and/or block diagrams of the machine logic included in computer program product (CPP) embodiments. With respect to any flowcharts, depending upon the technology involved, the operations can be performed in a different order than what is shown in a given flowchart. For example, again depending upon the technology involved, two operations shown in successive flowchart blocks may be performed in reverse order, as a single integrated step, concurrently, or in a manner at least partially overlapping in time.
A computer program product embodiment (“CPP embodiment” or “CPP”) is a term used in the present disclosure to describe any set of one, or more, storage media (also called “mediums”) collectively included in a set of one, or more, storage devices that collectively include machine readable code corresponding to instructions and/or data for performing computer operations specified in a given CPP claim. A “storage device” is any tangible device that can retain and store instructions for use by a computer processor. Without limitation, the computer readable storage medium may be an electronic storage medium, a magnetic storage medium, an optical storage medium, an electromagnetic storage medium, a semiconductor storage medium, a mechanical storage medium, or any suitable combination of the foregoing. Some known types of storage devices that include these mediums include: diskette, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or Flash memory), static random access memory (SRAM), compact disc read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanically encoded device (such as punch cards or pits/lands formed in a major surface of a disc) or any suitable combination of the foregoing. A computer readable storage medium, as that term is used in the present disclosure, is not to be construed as storage in the form of transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide, light pulses passing through a fiber optic cable, electrical signals communicated through a wire, and/or other transmission media. As will be understood by those of skill in the art, data is typically moved at some occasional points in time during normal operations of a storage device, such as during access, de-fragmentation or garbage collection, but this does not render the storage device as transitory because the data is not transitory while it is stored.
Computing environment 100 contains an example of an environment for the execution of at least some of the computer code involved in performing the inventive methods, such as a reinforcement learning agent 200 that provides a modification recommendation for resolving a timing failure of a network of conductors and repowering structures. In addition to block 200, computing environment 100 includes, for example, computer 101, wide area network (WAN) 102, end user device (EUD) 103, remote server 104, public cloud 105, and private cloud 106. In this embodiment, computer 101 includes processor set 110 (including processing circuitry 120 and cache 121), communication fabric 111, volatile memory 112, persistent storage 113 (including operating system 122 and block 200, as identified above), peripheral device set 114 (including user interface (UI) device set 123, storage 124, and Internet of Things (IoT) sensor set 125), and network module 115. Remote server 104 includes remote database 130. Public cloud 105 includes gateway 140, cloud orchestration module 141, host physical machine set 142, virtual machine set 143, and container set 144.
COMPUTER 101 may take the form of a desktop computer, laptop computer, tablet computer, smart phone, smart watch or other wearable computer, mainframe computer, quantum computer or any other form of computer or mobile device now known or to be developed in the future that is capable of running a program, accessing a network or querying a database, such as remote database 130. As is well understood in the art of computer technology, and depending upon the technology, performance of a computer-implemented method may be distributed among multiple computers and/or between multiple locations. On the other hand, in this presentation of computing environment 100, detailed discussion is focused on a single computer, specifically computer 101, to keep the presentation as simple as possible. Computer 101 may be located in a cloud, even though it is not shown in a cloud in
PROCESSOR SET 110 includes one, or more, computer processors of any type now known or to be developed in the future. Processing circuitry 120 may be distributed over multiple packages, for example, multiple, coordinated integrated circuit chips. Processing circuitry 120 may implement multiple processor threads and/or multiple processor cores. Cache 121 is memory that is located in the processor chip package(s) and is typically used for data or code that should be available for rapid access by the threads or cores running on processor set 110. Cache memories are typically organized into multiple levels depending upon relative proximity to the processing circuitry. Alternatively, some, or all, of the cache for the processor set may be located “off chip.” In some computing environments, processor set 110 may be designed for working with qubits and performing quantum computing.
Computer readable program instructions are typically loaded onto computer 101 to cause a series of operational steps to be performed by processor set 110 of computer 101 and thereby effect a computer-implemented method, such that the instructions thus executed will instantiate the methods specified in flowcharts and/or narrative descriptions of computer-implemented methods included in this document (collectively referred to as “the inventive methods”). These computer readable program instructions are stored in various types of computer readable storage media, such as cache 121 and the other storage media discussed below. The program instructions, and associated data, are accessed by processor set 110 to control and direct performance of the inventive methods. In computing environment 100, at least some of the instructions for performing the inventive methods may be stored in block 200 in persistent storage 113.
COMMUNICATION FABRIC 111 is the signal conduction path that allows the various components of computer 101 to communicate with each other. Typically, this fabric is made of switches and electrically conductive paths, such as the switches and electrically conductive paths that make up busses, bridges, physical input/output ports and the like. Other types of signal communication paths may be used, such as fiber optic communication paths and/or wireless communication paths.
VOLATILE MEMORY 112 is any type of volatile memory now known or to be developed in the future. Examples include dynamic type random access memory (RAM) or static type RAM. Typically, volatile memory 112 is characterized by random access, but this is not required unless affirmatively indicated. In computer 101, the volatile memory 112 is located in a single package and is internal to computer 101, but, alternatively or additionally, the volatile memory may be distributed over multiple packages and/or located externally with respect to computer 101.
PERSISTENT STORAGE 113 is any form of non-volatile storage for computers that is now known or to be developed in the future. The non-volatility of this storage means that the stored data is maintained regardless of whether power is being supplied to computer 101 and/or directly to persistent storage 113. Persistent storage 113 may be a read only memory (ROM), but typically at least a portion of the persistent storage allows writing of data, deletion of data and re-writing of data. Some familiar forms of persistent storage include magnetic disks and solid state storage devices. Operating system 122 may take several forms, such as various known proprietary operating systems or open source Portable Operating System Interface-type operating systems that employ a kernel. The code included in block 200 typically includes at least some of the computer code involved in performing the inventive methods.
PERIPHERAL DEVICE SET 114 includes the set of peripheral devices of computer 101. Data communication connections between the peripheral devices and the other components of computer 101 may be implemented in various ways, such as Bluetooth connections, Near-Field Communication (NFC) connections, connections made by cables (such as universal serial bus (USB) type cables), insertion-type connections (for example, secure digital (SD) card), connections made through local area communication networks and even connections made through wide area networks such as the internet. In various embodiments, UI device set 123 may include components such as a display screen, speaker, microphone, wearable devices (such as goggles and smart watches), keyboard, mouse, printer, touchpad, game controllers, and haptic devices. Storage 124 is external storage, such as an external hard drive, or insertable storage, such as an SD card. Storage 124 may be persistent and/or volatile. In some embodiments, storage 124 may take the form of a quantum computing storage device for storing data in the form of qubits. In embodiments where computer 101 is required to have a large amount of storage (for example, where computer 101 locally stores and manages a large database) then this storage may be provided by peripheral storage devices designed for storing very large amounts of data, such as a storage area network (SAN) that is shared by multiple, geographically distributed computers. IoT sensor set 125 is made up of sensors that can be used in Internet of Things applications. For example, one sensor may be a thermometer and another sensor may be a motion detector.
NETWORK MODULE 115 is the collection of computer software, hardware, and firmware that allows computer 101 to communicate with other computers through WAN 102. Network module 115 may include hardware, such as modems or Wi-Fi signal transceivers, software for packetizing and/or de-packetizing data for communication network transmission, and/or web browser software for communicating data over the internet. In some embodiments, network control functions and network forwarding functions of network module 115 are performed on the same physical hardware device. In other embodiments (for example, embodiments that utilize software-defined networking (SDN)), the control functions and the forwarding functions of network module 115 are performed on physically separate devices, such that the control functions manage several different network hardware devices. Computer readable program instructions for performing the inventive methods can typically be downloaded to computer 101 from an external computer or external storage device through a network adapter card or network interface included in network module 115.
WAN 102 is any wide area network (for example, the internet) capable of communicating computer data over non-local distances by any technology for communicating computer data, now known or to be developed in the future. In some embodiments, the WAN 102 may be replaced and/or supplemented by local area networks (LANs) designed to communicate data between devices located in a local area, such as a Wi-Fi network. The WAN and/or LANs typically include computer hardware such as copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers and edge servers.
END USER DEVICE (EUD) 103 is any computer system that is used and controlled by an end user (for example, a customer of an enterprise that operates computer 101), and may take any of the forms discussed above in connection with computer 101. EUD 103 typically receives helpful and useful data from the operations of computer 101. For example, in a hypothetical case where computer 101 is designed to provide a recommendation to an end user, this recommendation would typically be communicated from network module 115 of computer 101 through WAN 102 to EUD 103. In this way, EUD 103 can display, or otherwise present, the recommendation to an end user. In some embodiments, EUD 103 may be a client device, such as thin client, heavy client, mainframe computer, desktop computer and so on.
REMOTE SERVER 104 is any computer system that serves at least some data and/or functionality to computer 101. Remote server 104 may be controlled and used by the same entity that operates computer 101. Remote server 104 represents the machine(s) that collect and store helpful and useful data for use by other computers, such as computer 101. For example, in a hypothetical case where computer 101 is designed and programmed to provide a recommendation based on historical data, then this historical data may be provided to computer 101 from remote database 130 of remote server 104.
PUBLIC CLOUD 105 is any computer system available for use by multiple entities that provides on-demand availability of computer system resources and/or other computer capabilities, especially data storage (cloud storage) and computing power, without direct active management by the user. Cloud computing typically leverages sharing of resources to achieve coherence and economies of scale. The direct and active management of the computing resources of public cloud 105 is performed by the computer hardware and/or software of cloud orchestration module 141. The computing resources provided by public cloud 105 are typically implemented by virtual computing environments that run on various computers making up the computers of host physical machine set 142, which is the universe of physical computers in and/or available to public cloud 105. The virtual computing environments (VCEs) typically take the form of virtual machines from virtual machine set 143 and/or containers from container set 144. It is understood that these VCEs may be stored as images and may be transferred among and between the various physical machine hosts, either as images or after instantiation of the VCE. Cloud orchestration module 141 manages the transfer and storage of images, deploys new instantiations of VCEs and manages active instantiations of VCE deployments. Gateway 140 is the collection of computer software, hardware, and firmware that allows public cloud 105 to communicate through WAN 102.
Some further explanation of virtualized computing environments (VCEs) will now be provided. VCEs can be stored as “images.” A new active instance of the VCE can be instantiated from the image. Two familiar types of VCEs are virtual machines and containers. A container is a VCE that uses operating-system-level virtualization. This refers to an operating system feature in which the kernel allows the existence of multiple isolated user-space instances, called containers. These isolated user-space instances typically behave as real computers from the point of view of programs running in them. A computer program running on an ordinary operating system can utilize all resources of that computer, such as connected devices, files and folders, network shares, CPU power, and quantifiable hardware capabilities. However, programs running inside a container can only use the contents of the container and devices assigned to the container, a feature which is known as containerization.
PRIVATE CLOUD 106 is similar to public cloud 105, except that the computing resources are only available for use by a single enterprise. While private cloud 106 is depicted as being in communication with WAN 102, in other embodiments a private cloud may be disconnected from the internet entirely and only accessible through a local/private network. A hybrid cloud is a composition of multiple clouds of different types (for example, private, community or public cloud types), often respectively implemented by different vendors. Each of the multiple clouds remains a separate and discrete entity, but the larger hybrid cloud architecture is bound together by standardized or proprietary technology that enables orchestration, management, and/or data/application portability between the multiple constituent clouds. In this embodiment, public cloud 105 and private cloud 106 are both part of a larger hybrid cloud.
The persistent storage 113 is further shown as containing a circuit simulation module 206 that takes the integrated circuit design 204 as input. The persistent storage 113 is further shown as containing a detected timing failure 208 that was output by the circuit simulation module 206 for a network of conductors and repowering structures in response to receiving the integrated circuit design 204. In some instances, there may be multiple timing failures detected for different networks of conductors and repowering structures. The memory 113 is further shown as containing a graph 210 that represents the network of conductors and repowering structures of the integrated circuit design 204.
The persistent storage 113 is further shown as containing modification recommendation 212 received from the reinforcement learning agent 200 in response to inputting the graph 210 into the reinforcement learning agent 200. The persistent storage 113 is further shown as containing modification commands 214 that were constructed using the modification recommendation 212. The modification commands 214 contain instructions on how to modify the integrated circuit design 204 by modifying the network of conductors and repowering structures represented by the graph 210. The persistent storage 113 is further shown as containing a modified integrated circuit design 216 that was created by using the modification commands 214 to modify the integrated circuit design 204. The persistent storage 113 is further shown as containing a status of the timing failure 208 that was determined by inputting the modified integrated circuit design 216 into the circuit simulation module 206. The status of the timing failure 208 would for example indicate if the modified integrated circuit design has resolved the timing failure 208 or not. Based on the status 218 of the timing failure 208 a training reward 220, which is also shown as stored in the persistent storage 113, is then used to train and update the reinforcement learning agent 200.
First, in step 300, the integrated circuit design 204 is input into a circuit simulation module 206 to detect the timing failure 208. Next, in step 302, the network of conductors and repowering structures that are part of the integrated circuit design 204, are encoded into the graph 210. Next, in step 304, the graph 210 is received. The graph comprises nodes and edges that encode the network of conductors and repowering structures. Then, in step 306, the modification recommendation 212 is received from the reinforcement learning agent 200 in response to inputting the graph 210 into the reinforcement learning agent 200. Next in step 308, the method further comprises generating the modification commands 214 for modifying the integrated circuit design 204.
Next in step 310, a modified integrated circuit design 216 is constructed by modifying the integrated circuit design 204 with the modification commands 214. Next, in step 312, the modified integrated circuit design 216 is input into the circuit simulation module 206 to detect a status of the timing failure 208. Next, in step 314, the training reward 220 is determined and this is used in step 316 to train the reinforcement learning agent 200. Step 318 is a decision box with the question, is the timing failure resolved. If the answer is “yes” the method proceeds to step 320 and the method ends. If the answer is “no,” then the method goes back to step 302 and the modified integrated circuit design 216 is encoded as a new graph and the method then follows through steps 304 etc.
In some examples, the method comprises steps 304 and 306, and the other steps are optional. In other examples, the method only comprises steps 304, 306, and 308, and the other steps are optional.
The reinforcement learning agent 200 is shown as comprising a reinforcement learning algorithm 504, a graph neural network 508 and an action masking component 512. The status 218 of the timing failure 208 is input into the reinforcement learning algorithm 504, the graph neural network 508, and the action masking 512. The training reward 200 is input into the reinforcement learning algorithm 504. The reinforcement learning algorithm 504 produces changes in the weights 506 for the graph neural network 508. This updates the graph neural network 508 and thereby trains it.
For each design iteration, the graph neural network 508 receives the graph 210 as input and in response produces action log probabilities 510 which may be equivalent to the modification recommendations 212. These action log probabilities 510 are then filtered in a masking 512 step. Using only those which are allowed, a modification recommendation 212 or modification commands 214 may be formulated by choosing according to the probabilities.
The set of masks 608 may be constructed after each iteration based on the current state 400 (as illustrated in
Possible example actions include wire code up, wire code down, use layer up, use layer down, repeater type up, repeater type down, repeater Block Hardware Code (BHC) up, repeater BHC down, repeater threshold voltage (VT) up, repeater VT down, add inverter mid-route, remove an inverter, add repeater (or buffer) mid-route, and remove a repeater (or buffer). Wire code up and wire code down refers to specifying a different conductor (wire) between nodes. Wire code up could refer to using a conductor which has more conductive metal and take up more space, but which has fewer resistive losses and possibly a reduced impedance. The Block hardware code refers to the driving strength (current supply) provided by a repowering structure such as a repeater, buffer, or inverter. Block hardware code up could refer to an increase in the current supplied. The VT is the threshold voltage of a repowering structure. A higher VT means a slower repeater or repowering structure but may have more power savings due to less leakage power. Changing the use layer up or down may change the layer in which a conductor is formed.
The graph neural network 1100 is a single layer Graph Convolutional Network (GCN). This consists of two fully connected networks. The graph neural network may be adapted to the topology of electrical nets. These may be directed graphs with bi-directional information flow. They may generate one output vector per input node and the graph neural network 1100 is adaptive to the size of the net. That is to say, the graph neural network 1100 will function for an arbitrarily sized and shaped graph, as long as each node has only one incoming directed edge.
The neighborhood representation vector is then input into a processing node 1304. The processing node 1304 is another fully connected layer neural network. In response to receiving the neighborhood representation vector 1302 the node-specific modification recommendation 1102 is output. The node being processed 1306 is adjacent to a source node 1308 and at least one sink node 1310. In the figure, two sink nodes 1310 are shown, however there may be more than two sink nodes. The message vectors 1202 are collected from the node being processed 1306 as well as the source node 1308 and its sink nodes 1310.
In
Various examples may possibly be described by one or more of the following features in the following numbered clauses:
Clause 1. A computer implemented method of correcting a timing failure of a network of conductors and repowering structures in an integrated circuit design using a reinforcement learning agent, said reinforcement learning agent comprising a neural network, said method comprising:
Clause 2. The computer implemented method of clause 1, said method further comprising generating modification commands configured for modifying said integrated circuit design using said modification recommendation.
Clause 3. The computer implemented method of clause 2, said method further comprising:
Clause 4. The computer implemented method of clause 3, said method further comprising repeating said method until said timing failure is resolved.
Clause 5. The computer implemented method of clause 3 or 4, said training reward being calculated as a constant penalty per action taken by said reinforcement learning agent.
Clause 6. The computer implemented method of clause 3 or 4, said training reward being calculated as a per-action penalty.
Clause 7. The computer implemented method of clause 6, wherein said training reward being calculated as a value determined by a hyperparameter assigned to any one of the following actions: wire code up, wire code down, block hardware code up, block hardware code down, repeater threshold voltage up, repeater threshold voltage down, add inverter mid-route, remove an inverter, add repeater mid-route, remove a repeater, add a buffer mid-route, remove a buffer, add a repowering structure mid route, and remove a repowering structure.
Clause 8. The computer implemented method of claim 3 or 4, said training reward being calculated as a feedback-based penalty.
Clause 9. The computer implemented method of clause 8, said training reward being calculated using any one of the following weighted constraints: power consumption by the integrated circuit, total length of said network of conductors, noise of said network of conductors, route congestion of said network of conductors, placement congestion of said network of conductors, and combinations thereof.
Clause 10. The computer implemented method of any one of the preceding clauses, said nodes comprising an instance in said conductor network, said edges being directed edges representing a conductor between two instances in said conductor network, said nodes comprising a set of property vectors descriptive of said nodes and said edges.
Clause 11. The computer implemented method of clause 10, said property vectors being descriptive of said directed edges either directed into or directed out of said nodes.
Clause 12. The computer implemented method of any one of the preceding clauses, said method further comprising normalizing said set of property vectors of said graph before inputting said graph into said reinforcement learning agent.
Clause 13. The computer implemented method of clause 12, said graph being normalized according to any one of the following:
Clause 14. The computer implemented method of any one of the preceding clauses, said neural network of said reinforcement learning agent being configured to provide a score for possible circuit modifications, receiving of said modification recommendation in response to inputting said graph into said neural network reinforcement learning agent comprising selecting the modification recommendation from the score for said possible circuit modifications by the reinforcement learning agent or received from a user interface.
Clause 15. The computer implemented method of clause 14, said method further comprising constructing a set of masks marking said possible modification recommendations of said conductor network as possible or impossible, selecting said modification recommendation comprising excluding said possible modification recommendations marked as impossible.
Clause 16. The computer implemented method of any one of clauses 10 through 15, said neural network being a graph neural network.
Clause 17. The computer implemented method of any one of clauses 10 through 16, said neural network comprising:
Clause 18. The computer implemented method of clause 17, said embedding portion comprising a neural network comprising one or more fully connected neural network layers.
Clause 19. The computer implemented method of clause 17, said processing node comprising a neural network comprising one or more fully connected neural network layers.
Clause 20. The computer implemented method of any one of clauses 17, 18, or 19, said adjacent nodes comprising a single source node, and said concatenating portion of said neural network being configured to receive only a single message vector from said adjacent source node.
Clause 21. The computer implemented method of any one of clauses 17 through 19, said adjacent nodes comprising one or more adjacent sink nodes, and said concatenating portion of the neural network being configured to receive one or more message vectors from adjacent sink nodes.
Clause 22. The computer implemented method of clause 21, said one or more message vectors of said one or more adjacent sink nodes being reduced to a single message vector by said concatenating layer by any one of the following: calculating a sum of said one or more message vectors, taking an element wise maximum of said one or more message vectors, and calculating a mean of said one or more message vectors.
Clause 23. The computer implemented method of any one of the preceding clauses, said timing failure being any one of the following: a slack failure, a slew failure, and combinations thereof.
Clause 24. A computer program product comprising a computer-readable storage medium having computer-readable program code embodied therewith, said computer-readable program code configured to implement the method of any one of clauses 1 to 23.
Clause 25. A computer system comprising:
Clause 26. The computer system of clause 25, execution of said instructions further causing said processor to generate modification commands configured for modifying said integrated circuit design using said modification recommendation.
The descriptions of the various embodiments of the present invention have been presented for purposes of illustration but are not intended to be exhaustive or limited to the embodiments disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terminology used herein was chosen to best explain the principles of the embodiments, the practical application or technical improvement over technologies found in the marketplace, or to enable others of ordinary skill in the art to understand the embodiments disclosed herein.
Number | Date | Country | Kind |
---|---|---|---|
2215433.0 | Oct 2022 | GB | national |
Number | Date | Country | |
---|---|---|---|
20240135083 A1 | Apr 2024 | US |