US20090300566A1 - Hierarchical Partitioning - Google Patents

Hierarchical Partitioning Download PDF

Info

Publication number
US20090300566A1
US20090300566A1 US12/471,343 US47134309A US2009300566A1 US 20090300566 A1 US20090300566 A1 US 20090300566A1 US 47134309 A US47134309 A US 47134309A US 2009300566 A1 US2009300566 A1 US 2009300566A1
Authority
US
United States
Prior art keywords
sub
circuit
circuits
voltage source
partition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US12/471,343
Inventor
Perry Gee
Syed Zakir Hussain
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US12/471,343 priority Critical patent/US20090300566A1/en
Publication of US20090300566A1 publication Critical patent/US20090300566A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods

Definitions

  • the present invention is directed to circuit simulation. More particularly, the present invention is directed to partitioning of circuits for general-purpose simulation.
  • General-purpose circuit simulators are powerful tools used in electrical circuit designs to verify circuit design and to simulate circuit behavior. For instance, in the integrated circuit (IC) design, the high costs of manufacturing an IC makes it very essential to verify the circuit behavior prior to manufacturing. Enormous cost savings are achieved by simulating different variations of a circuit's component values prior to manufacturing.
  • Circuit simulators such as Simulation Program with Integrated Circuits (SPICE) are widely used to verify electrical circuit design. These programs, however, simulate the entire circuit as a single matrix. Simulating the entire circuit requires a significant amount of processing time as the matrix becomes larger even though the matrices representing electrical circuits are very sparse. To reduce processing time, another group of simulators with less accurate but more efficient algorithms have been designed. These simulators, referred to as timing simulators, use simplified device models and equation formulation techniques. Many of these simulators compute circuit delays by simulating the response of the circuit to a given set of inputs.
  • SPICE Simulation Program with Integrated Circuits
  • timing simulators have flatly partitioned the entire circuit into small groups of transistors, so that they can solve a set of smaller matrices instead of one large matrix. Since the time necessary to solve a matrix grows super-linearly with respect to the number of rows and columns, solving several small matrices can be faster than solving a single large matrix. Also, partitioning the circuit allows the simulator to take advantage of latency and to employ multi-rate algorithms in solving the system equations. Flattening a circuit, however, can significantly increase memory consumption. As the size of modern IC and board level circuits grow, the impact of memory consumption becomes more significant. In addition, timing simulators are less accurate than simulators such as SPICE. Hence, there is a need in the art for a fast and highly-accurate simulator that achieves higher speed without significantly increasing memory consumption.
  • Some embodiments provide a method of simulating an electrical circuit.
  • the method receives a circuit description that has a set of sub-circuits.
  • the method defines several partitions for several sub-circuits. Each partition includes a set of devices and device terminals.
  • the method then simulates the circuit using the partitioned sub-circuits.
  • the method ranks the sub-circuits prior to partitioning based on a parent-child relationship that shows how a sub-circuit is instantiated by other sub-circuits. These embodiments partition child sub-circuits first.
  • Some embodiments provide a method of partitioning an electrical circuit.
  • the method receives a circuit description that includes a set of sub-circuit descriptions.
  • the method identifies whether a sub-circuit is instantiated from other sub-circuits. For a particular sub-circuit that is instantiated from other sub-circuits, the method duplicates the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance.
  • the method references the first copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is connected to a voltage source.
  • the method references the second copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is not connected to a voltage source.
  • FIG. 1 illustrates a simplified block diagram of the circuit simulator of some embodiments.
  • FIG. 2 conceptually illustrates a high level process that hierarchically partitions a circuit in some embodiments.
  • FIG. 3 illustrates a process that partitions a sub-circuit in some embodiments.
  • FIG. 4 illustrates a process that ranks sub-circuits in some embodiments.
  • FIG. 5 illustrates a process that performs partitioning of a sub-circuit in some embodiments.
  • FIG. 6 illustrates a process that groups the devices in some embodiments.
  • FIGS. 7-10 illustrate grouping terminals for a MOS transistor device in some embodiments.
  • FIGS. 11-14 illustrate grouping terminals for resistor, diode, inductor, and current source devices in some embodiments.
  • FIGS. 15-18 illustrate grouping terminals for a capacitor device in some embodiments.
  • FIGS. 19-21 illustrate grouping terminals for a BJT transistor in some embodiments.
  • FIG. 22 conceptually illustrates a process that finds all feedback loops in a sub-circuit in some embodiments.
  • FIG. 23 conceptually illustrates a process that finds the feedback loops containing a node in some embodiments.
  • FIG. 24 illustrates a process that levelizes nodes of all sub-circuits in some embodiments.
  • FIG. 25 illustrates a process that levelizes a node in some embodiments.
  • FIG. 26 conceptually illustrates a computer system with which some embodiments are implemented.
  • Some embodiments provide a method of simulating an electrical circuit.
  • the method receives a circuit description that has a set of sub-circuits.
  • the method defines several partitions for several sub-circuits. Each partition includes a set of devices and device terminals.
  • the method then simulates the circuit using the partitioned sub-circuits.
  • the method ranks the sub-circuits prior to partitioning based on a parent-child relationship that shows how a sub-circuit is instantiated by other sub-circuits. These embodiments partition child sub-circuits first.
  • Some embodiments provide a method of partitioning an electrical circuit.
  • the method receives a circuit description that includes a set of sub-circuit descriptions.
  • the method identifies whether a sub-circuit is instantiated from other sub-circuits. For a particular sub-circuit that is instantiated from other sub-circuits, the method duplicates the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance.
  • the method references the first copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is connected to a voltage source.
  • the method references the second copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is not connected to a voltage source.
  • FIG. 1 illustrates a simplified block diagram of a circuit simulator 100 of some embodiments.
  • the simulator 100 includes a parser 105 , a partitioning module 110 , and a simulation engine 115 .
  • the parser 105 receives a description of the circuit elements and their connections as input. In some embodiments, this description is in a form of a text description called a netlist.
  • the netlist defines the circuit as a set of one or more sub-circuits.
  • the parser 110 parsers the netlist and converts it to an internal representation.
  • the partitioning module breaks the internal representation of the circuit into smaller partitions. Some embodiments hierarchically partition the circuit in way that each sub-circuit is individually partitioned.
  • the simulation engine 115 simulates the electrical circuit using the partitioned internal representation of the circuit. The result is generated in the form of one or more output files.
  • FIG. 2 conceptually illustrates a high level process that partitions a circuit hierarchically.
  • the process receives (at 205 ) a circuit description that describes the circuits as a set of sub-circuits. Each sub-circuit can have several devices in it.
  • the process hierarchically partitions the circuit by performing the following operations.
  • the process ranks the sub-circuits to identify which sub-circuit instantiates other sub-circuits.
  • the sub-circuits form a parent-child relationship with the parent sub-circuits instantiating child sub-circuits.
  • the child sub-circuits are processed first. In these embodiments, the instances of the instantiated child sub-circuits can be readily partitioned within their parent sub-circuits.
  • the process groups the devices in each sub-circuit into a set of partitions to form a directed graph.
  • the process finds (at 220 ) the feedback loops within the directed graph.
  • the process merges the partitions that form feedback loops to form an acyclic graph.
  • the process levelizes the acyclic graph by assigning a level to each partition. This level corresponds to the distance that the group of devices and their terminals in a partition have from the primary inputs to the circuit. This information is used by simulation engine 115 to facilitate simulation of the electrical circuit.
  • Section II describes the overall flow of hierarchical partitioning in some embodiments. This discussion is followed by the discussion in Section III that describes further processing of the partitioned sub-circuits to remove the feedback loops among them and to identify the order by which the resulting partitions should be simulated by the simulation engine.
  • Section IV describes a computer system that implements some of the embodiments of the invention.
  • some embodiments of the invention partition the circuit hierarchically. These embodiments partition the sub-circuits individually. Since a sub-circuit can only be connected through its ports, some embodiments only utilize information about the ports of a child sub-circuit to partition its instances in a parent sub-circuit. In other words, instances in a sub-circuit can be treated as a black box. Thus, only an abstract view of the sub-circuit is used when partitioning the sub-circuit's corresponding instance in its parents.
  • a MOS transistor can be considered as a four terminal device, or analogously as an instance of a sub-circuit with four ports.
  • the terminals When none of the terminals are connected to a voltage source, the terminals form three partitions, namely, source and drain in one partition, and gate and bulk in two separate partitions.
  • an instance can be thought of as an N-terminal device.
  • An instance can be partitioned when it is known how the terminals are partitioned.
  • FIG. 3 illustrates a process 300 that hierarchically partitions a circuit in some embodiments. Some embodiments partition all the child sub-circuits first. This allows these embodiments to efficiently generate the abstract view of a sub-circuit. As shown, the process ranks (at 305 ) the sub-circuits such that child sub-circuits appear in the list before their parents. Some embodiments use a depth first search algorithm to determine the ranking. This algorithm is described in Sub-Section B below.
  • the process selects (at 310 ) the sub-circuit with the highest rank (i.e., the sub-circuit that has no children). Since a sub-circuit can only be connected through its ports, some embodiments can partition a sub-circuit when the port properties are known. Those port properties are: (1) port is connected to a voltage source node, and (2) port is connected to a signal net. In other words, these embodiments have to determine whether a sub-circuit port is connected to a voltage source or not.
  • the process determines whether any port in the sub-circuit is connected to both voltage source and signal nets. In other words, the process determines whether the sub-circuit has a port that is connected to a voltage source in some instances and is not connected to a voltage source in other instances.
  • the process determines that no port in the sub-circuit is connected to both voltage source and signal nets, the process proceeds to 325 which is described below. Otherwise, to simplify the complexity of the process, the process makes (at 320 ) two copies of the sub-circuit. Assume that the two sub-circuits are now s 1 and s 2 . Some embodiments have all instances of the original sub-circuit that have the port connected to a voltage source net reference sub-circuit s 1 and all others reference sub-circuit s 2 . Therefore, the port in s 1 is always connected to a voltage source net and the port in s 2 is always connected to a signal net. Some embodiments make two copies of a sub-circuit for each one its ports that satisfies the criteria mentioned in operation 315 above.
  • the process connects voltage sources to ports as necessary.
  • some embodiments connect a fictitious DC voltage source to each port that has a DC path to ground. The other ports are left as is.
  • the process then partitions (at 330 ) the sub-circuit. Details of partitioning an individual sub-circuit is described in Sub-Section C below. Since child sub-circuits are partitioned before their parent sub-circuits, whenever a sub-circuit instantiates other sub-circuits, the instances of these instantiated child sub-circuits can be readily partitioned within their parent sub-circuits. These instances are treated as an N-terminal device, except that the instance itself will not be assigned to a partition, only its terminals. The rule for grouping devices that is described in Sub-Section C below would have one additional rule for an instance. Namely, for all the terminals in the same partition, group all the corresponding nets connected to those terminals, unless they are voltage source nets.
  • the process builds (at 335 ) an abstract view of each sub-circuit to facilitate partitioning of its instances within parent sub-circuits.
  • the port properties that are computed for the abstract view are: (1) a port is a voltage source node from within, (2) a port is strongly connected, (3) a port is capacitively connected, (4) two or more ports are partitioned together, (5) one or more ports are fan-out ports, and (6) the level between fan-out ports.
  • the process determines whether all sub-circuits are processed. If yes, the process exits. Otherwise, the process selects (at 345 ) the next highest ranking sub-circuits that is not partitioned yet and proceeds to 315 that was described above.
  • the nodes of this directed graph represent the nets and devices that have been grouped together.
  • the edges of the directed graph represent the propagation of the signals through the circuit.
  • the signal flow for MOS transistors is from the gate net partition to the source and drain net partitions.
  • the signal flow for voltage source net partitions is from the voltage source net to the other partitions.
  • the signal flow for coupling capacitors is from the coupling capacitor partition to the other partitions.
  • This directed graph is further processed as described in Section III below to make it suitable for use by the simulation engine 115 .
  • Sub-Section B describes ranking of individual sub-circuits prior to partitioning.
  • Sub-Section C describes the details of how an individual sub-circuit is partitioned.
  • FIG. 4 illustrates a process 400 that ranks the sub-circuits in some embodiments. This process determines which sub-circuit instantiates other sub-circuits. The highest ranking sub-circuits are the leaves of the graph that do not instantiate any other sub-circuits. As shown, the process adds (at 405 ) the top sub-circuit to a pending list. The top sub-circuit with all of it's sub-circuit instances (and it's instances' instances) represents the whole circuit. The process then sets (at 410 ) the value of “CurrentRank” to 0.
  • the process sets (at 415 ) “N” to the number of sub-circuits in the pending list and sets the counter, “i”, to 0.
  • the process determines (at 420 ) whether “i” is less than “N”. If not, the process proceeds to 430 which is described below. Otherwise, the process sets the rank of the i th entry in the pending list to the maximum of the rank of the i th entry in the pending list and the value of “CurrentRank”. Next, the process increments the value of “i”. The process then proceeds to 420 which was described above.
  • the process determines whether the pending list is empty. If yes, the process exits. Otherwise, the process schedules the next set of sub-circuits to be ranked by appending those sub-circuits to the pending list. Let the first sub-circuit in the pending list be called “Ckt”. The process pops (at 435 ) this sub-circuit from the pending list. The process then adds (at 440 ) sub-circuits used in “Ckt” to a new pending list. The process then increments (at 445 ) the value of “CurrentRank”. The process then recursively performs (at 450 ) operations 420 to 450 for the new pending list.
  • Some embodiments partition a sub-circuit by grouping together the devices that are strongly connected.
  • devices that are coupled through channels or resistors are considered strongly connected while devices that are connected through capacitors are considered weakly connected.
  • FIG. 5 illustrates a process 500 that performs partitioning of a sub-circuit in some embodiments.
  • the process first places (at 505 ) each net in the sub-circuit in a unique partition.
  • the process merges (at 510 ) the partitions for the nets that are connected together through channels and resistors.
  • the devices are added (at 515 ) to the partitions of the nets that are not connected to voltage sources (as described below, a MOS transistor is never added to the partition of its gate or bulk terminals).
  • voltage sources as described below, a MOS transistor is never added to the partition of its gate or bulk terminals.
  • FIG. 6 illustrates a process 600 that groups the devices in some embodiments.
  • This process referred to as channel-connected partitioning initially ensures that each net (a net is a terminal or a connection on a device) is in a unique partition. Nets connected to a DC voltage source form their own partitions (a voltage source net is any net that has a path to ground through voltage sources. This includes nets that are directly connected to ground). The process then examines each device by performing the following set of operations.
  • the process determines (at 605 ) whether the device is a MOS transistor. If not, the process proceeds to 635 which is described below. Otherwise, the process determines whether neither the source terminal nor the drain terminal of the transistor is connected to a voltage source net. If at least one terminal is connected to a voltage source net, the process proceeds to 620 which is described below. Otherwise, the process merges (at 615 ) both net partitions and adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 7 . Neither the source nor the drain terminal of MOS transistor 700 is connected to a voltage source net. As shown, process 600 merges the partitions of the two terminals, “B” and “C”, and adds the device to the merged partition to create partition 705 . The gate terminal, “A”, and the bulk terminal, “D”, remain in separate partition 710 and 715 respectively.
  • the process determines whether only one of the source or drain terminals is connected to a voltage source. If not, the process proceeds to 630 which is described below. Otherwise, the process adds (at 625 ) the device to the non voltage-source net partition. This operation is illustrated in FIG. 8 .
  • the source terminal of MOS transistor 805 is connected to a voltage source, VDD.
  • process 600 adds the device to the partition of the drain net, “C” which is not connected to the voltage source.
  • the voltage source, the gate terminal, and the bulk terminal remain in separate partitions.
  • FIG. 9 illustrates a MOS transistor 900 which its drain terminal connected to ground. As shown, process 600 adds the device to the partition of the source net, “B”, which is not connected to ground.
  • the gate terminal, the bulk terminal, and ground remain in separate partitions.
  • the process determines (at 620 ) that both terminals are connected to voltage sources, the process creates (at 630 ) a new partition for the device. The process then exits. This operation is illustrated in FIG. 10 .
  • the source terminal of MOS transistor 1000 is connected to a voltage source, VDD and the drain terminal is connected to ground. As shown, process 600 creates a new partition 1005 for the device.
  • the gate terminal, the bulk terminal, the voltage source, and ground remain in separate partitions.
  • the process determines (at 635 ) whether the device is a resistor, inductor, diode, or current source. If not, the process proceeds to 665 which is described below. Otherwise, the process determines (at 640 ) whether neither terminal is connected to a voltage source. If at least one terminal is connected to a voltage source, the process proceeds to 650 which is described below. Otherwise, the process merges both net partitions and adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 11 . Neither terminals of device 1100 (which can be a resistor, diode, inductor, or current source) is connected to a voltage source. As shown, process 600 merges both net partitions and adds the device to the merged partition 11105 .
  • the process determines whether only one terminal is connected to a voltage source. If not, the process proceeds to 660 which is described below. Otherwise, the process adds the device to the non-voltage source net partition. This operation is illustrated in FIG. 12 . As shown, one of the terminals is connected to a voltage source, VDD. Process 600 adds the device to the non-voltage source net partition 1205 . The voltage source remains in a separate partition 1205 . Similarly, FIG. 13 illustrates a device with one of its terminals connected to ground. Process 600 adds the device to the non voltage-source net partition 1305 . The ground net remains in a separate partition 1310 .
  • the process determines (at 650 ) that both terminals are connected to voltage sources, the process creates (at 660 ) a new partition for the device. The process then exits. This operation is illustrated in FIG. 14 . As shown, the two terminals of the device are connected to a voltage source, VDD, and ground. Process 600 creates a new partition 1405 for the device. The voltage source and ground remain in separate partitions.
  • the process determines (at 665 ) whether the device is a capacitor. If not, the process proceeds to 682 which is described below. Otherwise, the process determines (at 670 ) whether none of the terminals are connected to a voltage source net or both terminals are connected to voltage sources. If only one terminal is connected to a voltage source, the process proceeds to 680 which is described below. Otherwise, the process creates (at 675 ) a new partition for the device. The process then exits. This operation is illustrated in FIG. 15 . As shown, none of the terminals of capacitor 1500 is connected to a voltage source. Process 600 creates a new partition 1505 for the device. Similarly, FIG. 16 illustrates a capacitor 1600 which one terminal connected to a voltage source, VDD, and the other terminal connected to ground. Process 600 creates a new partition 1600 for the device.
  • the process determines (at 670 ) that only one terminal is connected to a voltage source
  • the process adds (at 660 ) the device to the non voltage-source net partition.
  • the process then exits.
  • This operation is illustrated in FIG. 17 .
  • one of the terminals of capacitor 1700 is connected to a voltage source, VDD.
  • Process 600 adds the device to the non voltage-source net partition 1705 .
  • FIG. 18 illustrates a capacitor 1800 with one of its terminals connected to ground.
  • Process 600 adds the device to the non voltage-source net partition 1805 .
  • the process determines (at 682 ) whether the device is a voltage source. If yes, the process creates a new partition for the device. The process then exits. Otherwise, the process determines (at 686 ) whether the device is a BJT transistor. If not, the process exits. Otherwise, the process determines whether none of the base, collector, and emitter terminals are connected to a voltage source. If not, the process proceeds to 692 which is described below.
  • process 600 merges (at 690 ) all net partitions and adds the device to the merged partition.
  • the process then exits. This operation is illustrated in FIG. 19 . As shown, process 600 merges all net partitions and adds the device to the merged partition 1905 .
  • the process determines whether all terminals are connected to voltage sources. If not, the process proceeds to 696 which is described below. Otherwise, the process creates a new partition for the device. The process then exits. This operation is illustrated in FIG. 20 . As shown all terminals of transistor 2000 are connected to voltage sources. Process 600 creates a new partition 2005 for the device. All terminals remain in separate partitions.
  • the process merges (at 696 ) the non voltage-source nets.
  • the process then adds the device to the merged partition.
  • the process then exits. This operation is illustrated in FIG. 21 . As shown, one of the terminals is connected to ground.
  • Process 600 merges the non voltage-source net partitions and adds the device to the merged partition 2105 .
  • the directed graph is further processed to remove its feedback loops and to identify the order in which the partitions should be simulated by the simulation engine 115 .
  • Feedback loops are the set of nodes and edges, such that for two nodes w and v, there is a path from w to v and a path from v to w.
  • some embodiments determine the fan-out relationship of the instance terminals.
  • Each instance terminal corresponds to a sub-circuit port. This port belongs to a partition.
  • Port P 2 is a fan-out of Port P 1 , if there exists a path from the partition containing port P 1 to the partition containing Port P 2 . This can be computed once, after the sub-circuit is partitioned.
  • Tarjan's Algorithm (described in R. Tarjan, “Depth-first search and linear graph algorithms,” SIAM J. Comput., vol. 1, no. 2, pp. 146-160, June 1972) is an efficient method for finding the loops in the directed graph. Tarjan's Algorithm is described in R. Tarjan, “Depth-first search and linear graph algorithms,” SIAM J. Comput., vol. 1, no. 2, pp. 146-160, June 1972. This paper is incorporated herein by reference.
  • FIG. 22 illustrates a process 2200 that processes a graph to identify its feedback loops.
  • the process initially sets (at 2205 ) a flag, n, to 0. This flag has two purposes. The first purpose is to assign a unique loop identifier to each node while the graph is processed. The second purpose is to uniquely identify the order the node has been processed.
  • the process determines (at 2210 ) whether all nodes of the graph are processed. If yes, the process exits. Otherwise, the process finds (at 2215 ) the feedback loop for the next unprocessed node, v. Finding the feedback loop for a node is described in FIG. 23 .
  • FIG. 23 illustrates a process 2300 that determines if a node (i.e., a partition) is in a feedback loop.
  • a node i.e., a partition
  • the loop identifier, “L”, of node v is set to n.
  • node processing order, “K”, is set to n.
  • the node processing order, “K”, is used by process 2300 to determine if there is a feedback loop for node v. It also allows the process to efficiently determine all the nodes that belong to the same feedback loop.
  • the process increments (at 2310 ) the value of n.
  • the process marks (at 2315 ) node v as processed.
  • the process then pushes (at 2320 ) node v into a stack.
  • the process then puts (at 2325 ) all fan-out nodes of node v into a set.
  • the process determines (at 2330 ) whether the fan-out set is empty. If yes, the process proceeds to 2365 which is described below. Otherwise, the process removes one of the fan-out nodes, w, from the set.
  • the process determines (at 2340 ) whether node w has been processed. If yes, the process proceeds to 2355 which is described below. Otherwise, the process recursively finds (at 2345 ) feedback loops that contain node w. The process then sets (at 2350 ) the loop identifier of node v (L[v]) to the minimum of the current loop identifier of node v and the loop identifier of node w. If node v and node w are in different loops, this step effectively merges both loops into a single loop containing both node v and node w. The process then proceeds to 2330 which was described above.
  • the process determines (at 2355 ) whether K[w] is less than K[v] and whether node w is on the stack. If not, the process proceeds to 2330 which was described above. Otherwise, the process sets the level of node v (L[v]) to K[w].
  • the process determines (at 2365 ) whether the level of node v (L[v]) is equal to K[v]. If not, the process exits. Otherwise, the process determines (at 2370 ) whether node v is on the stack. If not, the process exits. Otherwise, the process pops (at 2375 ) the stack into node w. Next, the process adds node w to node v's feedback loop. The process then proceeds to 2365 which was described above.
  • some embodiments merge the nodes that form feedback loops to form an acyclic graph.
  • This acyclic graph is suitable for the simulation engine 115 to process.
  • a simple depth first search algorithm is then used (as described below) to determine the levels of each node in the acyclic graph.
  • Determining the levels of each node in the acyclic graph identifies the order in which the partitions should be simulated by the simulation engine 115 .
  • the nodes in the acyclic graph can then be assigned a level representing the depth of the node in the graph. This corresponds to the distance that the group of nets and devices are from the primary inputs to the circuit.
  • Nodes that have no fan-ins are assigned level 0 . These nodes are the partitions that represent the primary inputs.
  • the level of a node is one more than the maximum level of all of its fan-ins.
  • FIG. 24 illustrates a process 2400 that levelizes a circuit in some embodiments. As shown, the process determines (at 2405 ) whether all sub-circuits are processed. If yes, the process exits. Otherwise, the process merges (at 2410 ) nodes in the same feedback loop to form an acyclic graph.
  • the process adds (at 2415 ) the root node in the graph to a list.
  • the root node represents the entire feedback group in the graph.
  • the process determines whether all nodes in the list are processed. If yes, the process proceeds to 2405 which was described above. Otherwise, the process levelizes the next unprocessed node as described in conjunction with FIG. 25 below. The process then proceeds to 2420 which was described above.
  • FIG. 25 illustrates a process 2500 that levelizes a node in some embodiments.
  • the process determines (at 2505 ) whether the node has any fan-in nodes. If no, the process proceeds to 2525 which is described below. Otherwise, the process determines (at 2510 ) whether all fan-in nodes have been processed. If yes, the process proceeds to 2520 which is described below. Otherwise, the process recursively levelizes the unprocessed fan-in. The process then proceeds to 2510 which was described above.
  • the process calculates the value of “fan-in weight+fan-in level+1” for each fan-in of the node and sets the node level to the maximum of these computed values.
  • the fan-in level is an indication of how deep a partition is embedded within other sub-circuits.
  • the fan-in weight is the effective level of the node.
  • the process determines (at 2505 ) that the node does not have fan-ins, the process assigns (at 2525 ) the node to level 0 . The process then adds (at 2530 ) the node fan-outs to the list. The process then exits.
  • FIG. 26 conceptually illustrates a computer system with which some embodiments of the invention are implemented.
  • the computer system 2600 includes a bus 2605 , a processor 2610 , a system memory 2615 , a read-only memory 2620 , a permanent storage device 2625 , input devices 2630 , and output devices 2635 .
  • the bus 2605 collectively represents all system, peripheral, and chipset buses that support communication among internal devices of the computer system 2600 .
  • the bus 2605 communicatively connects the processor 2610 with the read-only memory 2620 , the system memory 2615 , and the permanent storage device 2625 .
  • the processor 2610 retrieves instructions to execute and data to process in order to execute the processes of the invention.
  • the read-only-memory (ROM) 2620 stores static data and instructions that are needed by the processor 2610 and other modules of the computer system.
  • the permanent storage device 2625 is a read-and-write memory device. This device is a non-volatile memory unit that stores instruction and data even when the computer system 2600 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 2625 . Other embodiments use a removable storage device (such as a floppy disk or zip® disk, and its corresponding disk drive) as the permanent storage device.
  • the system memory 2615 is a read-and-write memory device. However, unlike storage device 2625 , the system memory is a volatile read-and-write memory, such as a random access memory. The system memory stores some of the instructions and data that the processor needs at runtime.
  • Instructions and/or data needed to perform processes of some embodiments are stored in the system memory 2615 , the permanent storage device 2625 , the read-only memory 2620 , or any combination of the three.
  • the various memory units may contain instructions for processing multimedia items in accordance with some embodiments. From these various memory units, the processor 2610 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.
  • the bus 2605 also connects to the input and output devices 2630 and 2635 .
  • the input devices enable the user to communicate information and select commands to the computer system.
  • the input devices 2630 include alphanumeric keyboards and cursor-controllers.
  • the output devices 2635 display images generated by the computer system. For instance, these devices display IC design layouts.
  • the output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD).
  • bus 2605 also couples computer 2600 to a network 2665 through a network adapter (not shown).
  • the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet) or a network of networks (such as the Internet).
  • LAN local area network
  • WAN wide area network
  • Intranet a network of networks
  • the Internet a network of networks

Abstract

Some embodiments provide a method of simulating an electrical circuit that receives a circuit description that has a set of sub-circuits. The method defines several partitions for several sub-circuits. The method then simulates the circuit using the partitioned sub-circuits. In some embodiments, the method ranks the sub-circuits prior to partitioning based on a parent-child relationship that shows how a sub-circuit is instantiated by other sub-circuits. These embodiments partition child sub-circuits first. Some embodiments provide a method of partitioning an electrical circuit that has a set of sub-circuits. For a particular sub-circuit that is instantiated from other sub-circuits, the method duplicates the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance.

Description

    CLAIM OF BENEFIT TO RELATED APPLICATIONS
  • This application claims the benefit of U.S. Provisional Application 60/718,487, entitled “Hierarchical Partitioning,” filed Sep. 18, 2005, which is herein incorporated by reference.
  • FIELD OF THE INVENTION
  • The present invention is directed to circuit simulation. More particularly, the present invention is directed to partitioning of circuits for general-purpose simulation.
  • BACKGROUND OF THE INVENTION
  • General-purpose circuit simulators are powerful tools used in electrical circuit designs to verify circuit design and to simulate circuit behavior. For instance, in the integrated circuit (IC) design, the high costs of manufacturing an IC makes it very essential to verify the circuit behavior prior to manufacturing. Enormous cost savings are achieved by simulating different variations of a circuit's component values prior to manufacturing.
  • Circuit simulators such as Simulation Program with Integrated Circuits (SPICE) are widely used to verify electrical circuit design. These programs, however, simulate the entire circuit as a single matrix. Simulating the entire circuit requires a significant amount of processing time as the matrix becomes larger even though the matrices representing electrical circuits are very sparse. To reduce processing time, another group of simulators with less accurate but more efficient algorithms have been designed. These simulators, referred to as timing simulators, use simplified device models and equation formulation techniques. Many of these simulators compute circuit delays by simulating the response of the circuit to a given set of inputs.
  • In the past, timing simulators have flatly partitioned the entire circuit into small groups of transistors, so that they can solve a set of smaller matrices instead of one large matrix. Since the time necessary to solve a matrix grows super-linearly with respect to the number of rows and columns, solving several small matrices can be faster than solving a single large matrix. Also, partitioning the circuit allows the simulator to take advantage of latency and to employ multi-rate algorithms in solving the system equations. Flattening a circuit, however, can significantly increase memory consumption. As the size of modern IC and board level circuits grow, the impact of memory consumption becomes more significant. In addition, timing simulators are less accurate than simulators such as SPICE. Hence, there is a need in the art for a fast and highly-accurate simulator that achieves higher speed without significantly increasing memory consumption.
  • SUMMARY OF THE INVENTION
  • Some embodiments provide a method of simulating an electrical circuit. The method receives a circuit description that has a set of sub-circuits. The method defines several partitions for several sub-circuits. Each partition includes a set of devices and device terminals. The method then simulates the circuit using the partitioned sub-circuits. In some embodiments, the method ranks the sub-circuits prior to partitioning based on a parent-child relationship that shows how a sub-circuit is instantiated by other sub-circuits. These embodiments partition child sub-circuits first.
  • Some embodiments provide a method of partitioning an electrical circuit. The method receives a circuit description that includes a set of sub-circuit descriptions. The method identifies whether a sub-circuit is instantiated from other sub-circuits. For a particular sub-circuit that is instantiated from other sub-circuits, the method duplicates the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance. In some embodiments, the method references the first copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is connected to a voltage source. The method references the second copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is not connected to a voltage source.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures.
  • FIG. 1 illustrates a simplified block diagram of the circuit simulator of some embodiments.
  • FIG. 2 conceptually illustrates a high level process that hierarchically partitions a circuit in some embodiments.
  • FIG. 3 illustrates a process that partitions a sub-circuit in some embodiments.
  • FIG. 4 illustrates a process that ranks sub-circuits in some embodiments.
  • FIG. 5 illustrates a process that performs partitioning of a sub-circuit in some embodiments.
  • FIG. 6 illustrates a process that groups the devices in some embodiments.
  • FIGS. 7-10 illustrate grouping terminals for a MOS transistor device in some embodiments.
  • FIGS. 11-14 illustrate grouping terminals for resistor, diode, inductor, and current source devices in some embodiments.
  • FIGS. 15-18 illustrate grouping terminals for a capacitor device in some embodiments.
  • FIGS. 19-21 illustrate grouping terminals for a BJT transistor in some embodiments.
  • FIG. 22 conceptually illustrates a process that finds all feedback loops in a sub-circuit in some embodiments.
  • FIG. 23 conceptually illustrates a process that finds the feedback loops containing a node in some embodiments.
  • FIG. 24 illustrates a process that levelizes nodes of all sub-circuits in some embodiments.
  • FIG. 25 illustrates a process that levelizes a node in some embodiments.
  • FIG. 26 conceptually illustrates a computer system with which some embodiments are implemented.
  • DETAILED DESCRIPTION OF THE INVENTION
  • In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the invention may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail.
  • I. Overview of the Circuit Simulator that Uses Hierarchical Partitioning
  • Some embodiments provide a method of simulating an electrical circuit. The method receives a circuit description that has a set of sub-circuits. The method defines several partitions for several sub-circuits. Each partition includes a set of devices and device terminals. The method then simulates the circuit using the partitioned sub-circuits. In some embodiments, the method ranks the sub-circuits prior to partitioning based on a parent-child relationship that shows how a sub-circuit is instantiated by other sub-circuits. These embodiments partition child sub-circuits first.
  • Some embodiments provide a method of partitioning an electrical circuit. The method receives a circuit description that includes a set of sub-circuit descriptions. The method identifies whether a sub-circuit is instantiated from other sub-circuits. For a particular sub-circuit that is instantiated from other sub-circuits, the method duplicates the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance. In some embodiments, the method references the first copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is connected to a voltage source. The method references the second copy when the particular sub-circuit is instantiated by another sub-circuit in which the port is not connected to a voltage source.
  • FIG. 1 illustrates a simplified block diagram of a circuit simulator 100 of some embodiments. As shown, the simulator 100 includes a parser 105, a partitioning module 110, and a simulation engine 115. The parser 105 receives a description of the circuit elements and their connections as input. In some embodiments, this description is in a form of a text description called a netlist. The netlist defines the circuit as a set of one or more sub-circuits. The parser 110 parsers the netlist and converts it to an internal representation.
  • The partitioning module breaks the internal representation of the circuit into smaller partitions. Some embodiments hierarchically partition the circuit in way that each sub-circuit is individually partitioned. The simulation engine 115 simulates the electrical circuit using the partitioned internal representation of the circuit. The result is generated in the form of one or more output files.
  • FIG. 2 conceptually illustrates a high level process that partitions a circuit hierarchically. As shown, the process receives (at 205) a circuit description that describes the circuits as a set of sub-circuits. Each sub-circuit can have several devices in it. Next, the process hierarchically partitions the circuit by performing the following operations. At 210, the process ranks the sub-circuits to identify which sub-circuit instantiates other sub-circuits. The sub-circuits form a parent-child relationship with the parent sub-circuits instantiating child sub-circuits. In some embodiments, the child sub-circuits are processed first. In these embodiments, the instances of the instantiated child sub-circuits can be readily partitioned within their parent sub-circuits.
  • At 215, the process groups the devices in each sub-circuit into a set of partitions to form a directed graph. Next, the process finds (at 220) the feedback loops within the directed graph. At 225, the process merges the partitions that form feedback loops to form an acyclic graph.
  • Finally, at 230, the process levelizes the acyclic graph by assigning a level to each partition. This level corresponds to the distance that the group of devices and their terminals in a partition have from the primary inputs to the circuit. This information is used by simulation engine 115 to facilitate simulation of the electrical circuit.
  • Several more detailed embodiments of the invention are described in sections below. Section II describes the overall flow of hierarchical partitioning in some embodiments. This discussion is followed by the discussion in Section III that describes further processing of the partitioned sub-circuits to remove the feedback loops among them and to identify the order by which the resulting partitions should be simulated by the simulation engine. Last, Section IV describes a computer system that implements some of the embodiments of the invention.
  • II. Hierarchical Partitioning
  • A. Overall Flow of Hierarchical Partitioning
  • Traditional timing simulators flatten the entire circuit before partitioning it into smaller blocks. In other words, traditional simulators treat the circuit as a whole and do not partition sub-circuits separately. The graph theory for circuit partitioning is discussed in V. Rao and T. Trick, “Network partitioning and ordering for MOS VLSI Circuits,” IEEE Trans. Computer-Aided Design, vol. CAD-6, no 1, January 1987; and V. Rao, D. Overhauser, I. Hajj, and T. Trick, “Switch-Level Timing Simulation of MOS VLSI circuits,” Boston: Kluwer Academic Publishers, 1988. Both of these documents are incorporated herein by reference.
  • In order to keep the memory footprint small, some embodiments of the invention partition the circuit hierarchically. These embodiments partition the sub-circuits individually. Since a sub-circuit can only be connected through its ports, some embodiments only utilize information about the ports of a child sub-circuit to partition its instances in a parent sub-circuit. In other words, instances in a sub-circuit can be treated as a black box. Thus, only an abstract view of the sub-circuit is used when partitioning the sub-circuit's corresponding instance in its parents.
  • As an example of the information that is used about an instance in order to partition it, a MOS transistor can be considered as a four terminal device, or analogously as an instance of a sub-circuit with four ports. When none of the terminals are connected to a voltage source, the terminals form three partitions, namely, source and drain in one partition, and gate and bulk in two separate partitions. Hence, an instance can be thought of as an N-terminal device. An instance can be partitioned when it is known how the terminals are partitioned.
  • FIG. 3 illustrates a process 300 that hierarchically partitions a circuit in some embodiments. Some embodiments partition all the child sub-circuits first. This allows these embodiments to efficiently generate the abstract view of a sub-circuit. As shown, the process ranks (at 305) the sub-circuits such that child sub-circuits appear in the list before their parents. Some embodiments use a depth first search algorithm to determine the ranking. This algorithm is described in Sub-Section B below.
  • Next, the process selects (at 310) the sub-circuit with the highest rank (i.e., the sub-circuit that has no children). Since a sub-circuit can only be connected through its ports, some embodiments can partition a sub-circuit when the port properties are known. Those port properties are: (1) port is connected to a voltage source node, and (2) port is connected to a signal net. In other words, these embodiments have to determine whether a sub-circuit port is connected to a voltage source or not. At 315, the process determines whether any port in the sub-circuit is connected to both voltage source and signal nets. In other words, the process determines whether the sub-circuit has a port that is connected to a voltage source in some instances and is not connected to a voltage source in other instances.
  • If the process determines that no port in the sub-circuit is connected to both voltage source and signal nets, the process proceeds to 325 which is described below. Otherwise, to simplify the complexity of the process, the process makes (at 320) two copies of the sub-circuit. Assume that the two sub-circuits are now s1 and s2. Some embodiments have all instances of the original sub-circuit that have the port connected to a voltage source net reference sub-circuit s1 and all others reference sub-circuit s2. Therefore, the port in s1 is always connected to a voltage source net and the port in s2 is always connected to a signal net. Some embodiments make two copies of a sub-circuit for each one its ports that satisfies the criteria mentioned in operation 315 above.
  • At 325, the process connects voltage sources to ports as necessary. To partition a sub-circuit without any instances, some embodiments connect a fictitious DC voltage source to each port that has a DC path to ground. The other ports are left as is.
  • The process then partitions (at 330) the sub-circuit. Details of partitioning an individual sub-circuit is described in Sub-Section C below. Since child sub-circuits are partitioned before their parent sub-circuits, whenever a sub-circuit instantiates other sub-circuits, the instances of these instantiated child sub-circuits can be readily partitioned within their parent sub-circuits. These instances are treated as an N-terminal device, except that the instance itself will not be assigned to a partition, only its terminals. The rule for grouping devices that is described in Sub-Section C below would have one additional rule for an instance. Namely, for all the terminals in the same partition, group all the corresponding nets connected to those terminals, unless they are voltage source nets.
  • Next, the process builds (at 335) an abstract view of each sub-circuit to facilitate partitioning of its instances within parent sub-circuits. The port properties that are computed for the abstract view are: (1) a port is a voltage source node from within, (2) a port is strongly connected, (3) a port is capacitively connected, (4) two or more ports are partitioned together, (5) one or more ports are fan-out ports, and (6) the level between fan-out ports.
  • At 340, the process determines whether all sub-circuits are processed. If yes, the process exits. Otherwise, the process selects (at 345) the next highest ranking sub-circuits that is not partitioned yet and proceeds to 315 that was described above.
  • After the nets and devices have been grouped together, they can be represented as a directed graph. The nodes of this directed graph represent the nets and devices that have been grouped together. The edges of the directed graph represent the propagation of the signals through the circuit. The signal flow for MOS transistors is from the gate net partition to the source and drain net partitions. The signal flow for voltage source net partitions is from the voltage source net to the other partitions. The signal flow for coupling capacitors is from the coupling capacitor partition to the other partitions. This directed graph is further processed as described in Section III below to make it suitable for use by the simulation engine 115.
  • The rest of this section describes the details of several steps used during hierarchical partitioning described above. Sub-Section B describes ranking of individual sub-circuits prior to partitioning. Sub-Section C describes the details of how an individual sub-circuit is partitioned.
  • B. Ranking Sub-Circuits
  • FIG. 4 illustrates a process 400 that ranks the sub-circuits in some embodiments. This process determines which sub-circuit instantiates other sub-circuits. The highest ranking sub-circuits are the leaves of the graph that do not instantiate any other sub-circuits. As shown, the process adds (at 405) the top sub-circuit to a pending list. The top sub-circuit with all of it's sub-circuit instances (and it's instances' instances) represents the whole circuit. The process then sets (at 410) the value of “CurrentRank” to 0.
  • Next, the process sets (at 415) “N” to the number of sub-circuits in the pending list and sets the counter, “i”, to 0. The process then determines (at 420) whether “i” is less than “N”. If not, the process proceeds to 430 which is described below. Otherwise, the process sets the rank of the ith entry in the pending list to the maximum of the rank of the ith entry in the pending list and the value of “CurrentRank”. Next, the process increments the value of “i”. The process then proceeds to 420 which was described above.
  • At 430, the process determines whether the pending list is empty. If yes, the process exits. Otherwise, the process schedules the next set of sub-circuits to be ranked by appending those sub-circuits to the pending list. Let the first sub-circuit in the pending list be called “Ckt”. The process pops (at 435) this sub-circuit from the pending list. The process then adds (at 440) sub-circuits used in “Ckt” to a new pending list. The process then increments (at 445) the value of “CurrentRank”. The process then recursively performs (at 450) operations 420 to 450 for the new pending list.
  • Some embodiments partition a sub-circuit by grouping together the devices that are strongly connected. In these embodiments, devices that are coupled through channels or resistors are considered strongly connected while devices that are connected through capacitors are considered weakly connected.
  • FIG. 5 illustrates a process 500 that performs partitioning of a sub-circuit in some embodiments. As shown, the process first places (at 505) each net in the sub-circuit in a unique partition. Next, the process merges (at 510) the partitions for the nets that are connected together through channels and resistors. Finally, the devices are added (at 515) to the partitions of the nets that are not connected to voltage sources (as described below, a MOS transistor is never added to the partition of its gate or bulk terminals). Each one of these operations is described in more detail below.
  • C. Grouping Devices of a Sub-Circuit Together
  • FIG. 6 illustrates a process 600 that groups the devices in some embodiments. This process, referred to as channel-connected partitioning initially ensures that each net (a net is a terminal or a connection on a device) is in a unique partition. Nets connected to a DC voltage source form their own partitions (a voltage source net is any net that has a path to ground through voltage sources. This includes nets that are directly connected to ground). The process then examines each device by performing the following set of operations.
  • The process determines (at 605) whether the device is a MOS transistor. If not, the process proceeds to 635 which is described below. Otherwise, the process determines whether neither the source terminal nor the drain terminal of the transistor is connected to a voltage source net. If at least one terminal is connected to a voltage source net, the process proceeds to 620 which is described below. Otherwise, the process merges (at 615) both net partitions and adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 7. Neither the source nor the drain terminal of MOS transistor 700 is connected to a voltage source net. As shown, process 600 merges the partitions of the two terminals, “B” and “C”, and adds the device to the merged partition to create partition 705. The gate terminal, “A”, and the bulk terminal, “D”, remain in separate partition 710 and 715 respectively.
  • At 620, the process determines whether only one of the source or drain terminals is connected to a voltage source. If not, the process proceeds to 630 which is described below. Otherwise, the process adds (at 625) the device to the non voltage-source net partition. This operation is illustrated in FIG. 8. The source terminal of MOS transistor 805 is connected to a voltage source, VDD. As shown, process 600 adds the device to the partition of the drain net, “C” which is not connected to the voltage source. The voltage source, the gate terminal, and the bulk terminal remain in separate partitions. Similarly, FIG. 9 illustrates a MOS transistor 900 which its drain terminal connected to ground. As shown, process 600 adds the device to the partition of the source net, “B”, which is not connected to ground. The gate terminal, the bulk terminal, and ground remain in separate partitions.
  • When the process determines (at 620) that both terminals are connected to voltage sources, the process creates (at 630) a new partition for the device. The process then exits. This operation is illustrated in FIG. 10. The source terminal of MOS transistor 1000 is connected to a voltage source, VDD and the drain terminal is connected to ground. As shown, process 600 creates a new partition 1005 for the device. The gate terminal, the bulk terminal, the voltage source, and ground remain in separate partitions.
  • When the process determines (at 605) that the device is not a MOS transistor, the process determines (at 635) whether the device is a resistor, inductor, diode, or current source. If not, the process proceeds to 665 which is described below. Otherwise, the process determines (at 640) whether neither terminal is connected to a voltage source. If at least one terminal is connected to a voltage source, the process proceeds to 650 which is described below. Otherwise, the process merges both net partitions and adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 11. Neither terminals of device 1100 (which can be a resistor, diode, inductor, or current source) is connected to a voltage source. As shown, process 600 merges both net partitions and adds the device to the merged partition 11105.
  • At 650, the process determines whether only one terminal is connected to a voltage source. If not, the process proceeds to 660 which is described below. Otherwise, the process adds the device to the non-voltage source net partition. This operation is illustrated in FIG. 12. As shown, one of the terminals is connected to a voltage source, VDD. Process 600 adds the device to the non-voltage source net partition 1205. The voltage source remains in a separate partition 1205. Similarly, FIG. 13 illustrates a device with one of its terminals connected to ground. Process 600 adds the device to the non voltage-source net partition 1305. The ground net remains in a separate partition 1310.
  • When the process determines (at 650) that both terminals are connected to voltage sources, the process creates (at 660) a new partition for the device. The process then exits. This operation is illustrated in FIG. 14. As shown, the two terminals of the device are connected to a voltage source, VDD, and ground. Process 600 creates a new partition 1405 for the device. The voltage source and ground remain in separate partitions.
  • When the process determines (at 635) that the device is not a resistor, inductor, diode, or current source, the process determines (at 665) whether the device is a capacitor. If not, the process proceeds to 682 which is described below. Otherwise, the process determines (at 670) whether none of the terminals are connected to a voltage source net or both terminals are connected to voltage sources. If only one terminal is connected to a voltage source, the process proceeds to 680 which is described below. Otherwise, the process creates (at 675) a new partition for the device. The process then exits. This operation is illustrated in FIG. 15. As shown, none of the terminals of capacitor 1500 is connected to a voltage source. Process 600 creates a new partition 1505 for the device. Similarly, FIG. 16 illustrates a capacitor 1600 which one terminal connected to a voltage source, VDD, and the other terminal connected to ground. Process 600 creates a new partition 1600 for the device.
  • When the process determines (at 670) that only one terminal is connected to a voltage source, the process adds (at 660) the device to the non voltage-source net partition. The process then exits. This operation is illustrated in FIG. 17. As shown, one of the terminals of capacitor 1700 is connected to a voltage source, VDD. Process 600 adds the device to the non voltage-source net partition 1705. Similarly, FIG. 18 illustrates a capacitor 1800 with one of its terminals connected to ground. Process 600 adds the device to the non voltage-source net partition 1805.
  • When the process determines (at 665) that the device is not a capacitor, the process determines (at 682) whether the device is a voltage source. If yes, the process creates a new partition for the device. The process then exits. Otherwise, the process determines (at 686) whether the device is a BJT transistor. If not, the process exits. Otherwise, the process determines whether none of the base, collector, and emitter terminals are connected to a voltage source. If not, the process proceeds to 692 which is described below.
  • Otherwise, the process merges (at 690) all net partitions and adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 19. As shown, process 600 merges all net partitions and adds the device to the merged partition 1905.
  • At 692, the process determines whether all terminals are connected to voltage sources. If not, the process proceeds to 696 which is described below. Otherwise, the process creates a new partition for the device. The process then exits. This operation is illustrated in FIG. 20. As shown all terminals of transistor 2000 are connected to voltage sources. Process 600 creates a new partition 2005 for the device. All terminals remain in separate partitions.
  • When the process determines (at 692) that some (but not all) terminals are connected to voltage sources, the process merges (at 696) the non voltage-source nets. The process then adds the device to the merged partition. The process then exits. This operation is illustrated in FIG. 21. As shown, one of the terminals is connected to ground. Process 600 merges the non voltage-source net partitions and adds the device to the merged partition 2105.
  • III. Further Processing of the Directed Graph after Individual Sub-Circuits are Partitioned
  • After the directed graph is generated using the process described in Section II above, the directed graph is further processed to remove its feedback loops and to identify the order in which the partitions should be simulated by the simulation engine 115.
  • A. Finding Feedback Loops
  • Next, the feedback loops of the directed graph are identified. Feedback loops are the set of nodes and edges, such that for two nodes w and v, there is a path from w to v and a path from v to w. To find the feedback loops, some embodiments determine the fan-out relationship of the instance terminals. Each instance terminal corresponds to a sub-circuit port. This port belongs to a partition. Port P2 is a fan-out of Port P1, if there exists a path from the partition containing port P1 to the partition containing Port P2. This can be computed once, after the sub-circuit is partitioned.
  • Some embodiments then apply Tarjan's algorithm to find feedback loops in a sub-circuit. Tarjan's Algorithm (described in R. Tarjan, “Depth-first search and linear graph algorithms,” SIAM J. Comput., vol. 1, no. 2, pp. 146-160, June 1972) is an efficient method for finding the loops in the directed graph. Tarjan's Algorithm is described in R. Tarjan, “Depth-first search and linear graph algorithms,” SIAM J. Comput., vol. 1, no. 2, pp. 146-160, June 1972. This paper is incorporated herein by reference.
  • FIG. 22 illustrates a process 2200 that processes a graph to identify its feedback loops. The process initially sets (at 2205) a flag, n, to 0. This flag has two purposes. The first purpose is to assign a unique loop identifier to each node while the graph is processed. The second purpose is to uniquely identify the order the node has been processed. Next, the process determines (at 2210) whether all nodes of the graph are processed. If yes, the process exits. Otherwise, the process finds (at 2215) the feedback loop for the next unprocessed node, v. Finding the feedback loop for a node is described in FIG. 23.
  • FIG. 23 illustrates a process 2300 that determines if a node (i.e., a partition) is in a feedback loop. As shown, initially the loop identifier, “L”, of node v is set to n. Also, node processing order, “K”, is set to n. The node processing order, “K”, is used by process 2300 to determine if there is a feedback loop for node v. It also allows the process to efficiently determine all the nodes that belong to the same feedback loop.
  • Next, the process increments (at 2310) the value of n. Next the process marks (at 2315) node v as processed. The process then pushes (at 2320) node v into a stack. The process then puts (at 2325) all fan-out nodes of node v into a set. Next, the process determines (at 2330) whether the fan-out set is empty. If yes, the process proceeds to 2365 which is described below. Otherwise, the process removes one of the fan-out nodes, w, from the set.
  • Next, the process determines (at 2340) whether node w has been processed. If yes, the process proceeds to 2355 which is described below. Otherwise, the process recursively finds (at 2345) feedback loops that contain node w. The process then sets (at 2350) the loop identifier of node v (L[v]) to the minimum of the current loop identifier of node v and the loop identifier of node w. If node v and node w are in different loops, this step effectively merges both loops into a single loop containing both node v and node w. The process then proceeds to 2330 which was described above.
  • When the process determines (at 2340) that node w has been already processed, the process determines (at 2355) whether K[w] is less than K[v] and whether node w is on the stack. If not, the process proceeds to 2330 which was described above. Otherwise, the process sets the level of node v (L[v]) to K[w].
  • When the process determines (at 2330) that the fan-out set of node v is empty (i.e., all fan-out nodes are already processed), the process determines (at 2365) whether the level of node v (L[v]) is equal to K[v]. If not, the process exits. Otherwise, the process determines (at 2370) whether node v is on the stack. If not, the process exits. Otherwise, the process pops (at 2375) the stack into node w. Next, the process adds node w to node v's feedback loop. The process then proceeds to 2365 which was described above.
  • B. Removing Feedback Loops
  • After the feedback loops have been determined, some embodiments merge the nodes that form feedback loops to form an acyclic graph. This acyclic graph is suitable for the simulation engine 115 to process. A simple depth first search algorithm is then used (as described below) to determine the levels of each node in the acyclic graph.
  • C. Levelizing Node and Device Groups
  • Determining the levels of each node in the acyclic graph identifies the order in which the partitions should be simulated by the simulation engine 115. The nodes in the acyclic graph can then be assigned a level representing the depth of the node in the graph. This corresponds to the distance that the group of nets and devices are from the primary inputs to the circuit. Nodes that have no fan-ins are assigned level 0. These nodes are the partitions that represent the primary inputs. The level of a node is one more than the maximum level of all of its fan-ins.
  • Some embodiments also use levelization of the circuit hierarchically. Computing a level for a node informs the simulator the order in which a partition should be processed. While in a flat circuit each node can be thought of as having a weight of one, in the hierarchical case, the instance terminals can have a weight greater than one. Specifically, the weight of each instance terminal is equal to the level of all its children. FIG. 24 illustrates a process 2400 that levelizes a circuit in some embodiments. As shown, the process determines (at 2405) whether all sub-circuits are processed. If yes, the process exits. Otherwise, the process merges (at 2410) nodes in the same feedback loop to form an acyclic graph.
  • Next, the process adds (at 2415) the root node in the graph to a list. The root node represents the entire feedback group in the graph. The process then determines whether all nodes in the list are processed. If yes, the process proceeds to 2405 which was described above. Otherwise, the process levelizes the next unprocessed node as described in conjunction with FIG. 25 below. The process then proceeds to 2420 which was described above.
  • FIG. 25 illustrates a process 2500 that levelizes a node in some embodiments. As shown, the process determines (at 2505) whether the node has any fan-in nodes. If no, the process proceeds to 2525 which is described below. Otherwise, the process determines (at 2510) whether all fan-in nodes have been processed. If yes, the process proceeds to 2520 which is described below. Otherwise, the process recursively levelizes the unprocessed fan-in. The process then proceeds to 2510 which was described above.
  • At 2520, the process calculates the value of “fan-in weight+fan-in level+1” for each fan-in of the node and sets the node level to the maximum of these computed values. The fan-in level is an indication of how deep a partition is embedded within other sub-circuits. The fan-in weight is the effective level of the node. After 2520, the process exits.
  • When the process determines (at 2505) that the node does not have fan-ins, the process assigns (at 2525) the node to level 0. The process then adds (at 2530) the node fan-outs to the list. The process then exits.
  • IV. Computer System
  • FIG. 26 conceptually illustrates a computer system with which some embodiments of the invention are implemented. The computer system 2600 includes a bus 2605, a processor 2610, a system memory 2615, a read-only memory 2620, a permanent storage device 2625, input devices 2630, and output devices 2635.
  • The bus 2605 collectively represents all system, peripheral, and chipset buses that support communication among internal devices of the computer system 2600. For instance, the bus 2605 communicatively connects the processor 2610 with the read-only memory 2620, the system memory 2615, and the permanent storage device 2625.
  • From these various memory units, the processor 2610 retrieves instructions to execute and data to process in order to execute the processes of the invention. The read-only-memory (ROM) 2620 stores static data and instructions that are needed by the processor 2610 and other modules of the computer system. The permanent storage device 2625, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instruction and data even when the computer system 2600 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 2625. Other embodiments use a removable storage device (such as a floppy disk or zip® disk, and its corresponding disk drive) as the permanent storage device.
  • Like the permanent storage device 2625, the system memory 2615 is a read-and-write memory device. However, unlike storage device 2625, the system memory is a volatile read-and-write memory, such as a random access memory. The system memory stores some of the instructions and data that the processor needs at runtime.
  • Instructions and/or data needed to perform processes of some embodiments are stored in the system memory 2615, the permanent storage device 2625, the read-only memory 2620, or any combination of the three. For example, the various memory units may contain instructions for processing multimedia items in accordance with some embodiments. From these various memory units, the processor 2610 retrieves instructions to execute and data to process in order to execute the processes of some embodiments.
  • The bus 2605 also connects to the input and output devices 2630 and 2635. The input devices enable the user to communicate information and select commands to the computer system. The input devices 2630 include alphanumeric keyboards and cursor-controllers. The output devices 2635 display images generated by the computer system. For instance, these devices display IC design layouts. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD).
  • Finally, as shown in FIG. 26, bus 2605 also couples computer 2600 to a network 2665 through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network (“WAN”), or an Intranet) or a network of networks (such as the Internet). Any or all of the components of computer system 2600 may be used in conjunction with the invention. However, one of ordinary skill in the art will appreciate that any other system configuration may also be used in conjunction with the invention.
  • While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. In other places, various changes may be made, and equivalents may be substituted for elements described without departing from the true scope of the present invention. Thus, one of ordinary skill in the art would understand that the invention is not limited by the foregoing illustrative details, but rather is to be defined by the appended claims.

Claims (4)

1-6. (canceled)
7. A method of partitioning an electrical circuit, the method comprising:
a. receiving a circuit description comprising a set of sub-circuit descriptions;
b. identifying whether a sub-circuit is instantiated from other sub-circuits; and
c. for a particular sub-circuit that is instantiated from other sub-circuits, duplicating the particular sub-circuit into a first copy and a second copy when one port of the particular sub-circuit is connected to a voltage source in at least one instance and the same port is not connected to a voltage source in at least another instance.
8. The method of claim 7 further comprising:
a. referencing the first copy when the particular sub-circuit is instantiated by another sub-circuit in which said port is connected to a voltage source; and
b. referencing the second copy when the particular sub-circuit is instantiated by another sub-circuit in which said port is not connected to a voltage source.
9-16. (canceled)
US12/471,343 2005-09-18 2009-05-22 Hierarchical Partitioning Abandoned US20090300566A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/471,343 US20090300566A1 (en) 2005-09-18 2009-05-22 Hierarchical Partitioning

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US71848705P 2005-09-18 2005-09-18
US11/532,898 US7555733B1 (en) 2005-09-18 2006-09-18 Hierarchical partitioning
US12/471,343 US20090300566A1 (en) 2005-09-18 2009-05-22 Hierarchical Partitioning

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US11/532,898 Division US7555733B1 (en) 2005-09-18 2006-09-18 Hierarchical partitioning

Publications (1)

Publication Number Publication Date
US20090300566A1 true US20090300566A1 (en) 2009-12-03

Family

ID=40823021

Family Applications (3)

Application Number Title Priority Date Filing Date
US11/532,898 Active 2027-04-17 US7555733B1 (en) 2005-09-18 2006-09-18 Hierarchical partitioning
US12/471,343 Abandoned US20090300566A1 (en) 2005-09-18 2009-05-22 Hierarchical Partitioning
US12/471,344 Active 2027-02-20 US8209644B2 (en) 2005-09-18 2009-05-22 Hierarchical partitioning

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US11/532,898 Active 2027-04-17 US7555733B1 (en) 2005-09-18 2006-09-18 Hierarchical partitioning

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/471,344 Active 2027-02-20 US8209644B2 (en) 2005-09-18 2009-05-22 Hierarchical partitioning

Country Status (1)

Country Link
US (3) US7555733B1 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300556A1 (en) * 2005-09-18 2009-12-03 Perry Gee Hierarchical Partitioning
US20120102451A1 (en) * 2010-01-13 2012-04-26 Tata Consultancy Services Limited Computationally efficient system for developing configurable, extensible business application product lines using model-driven techniques
US8195439B1 (en) 2008-09-02 2012-06-05 Infinisim, Inc. Real-time adaptive circuit simulation
US8352893B1 (en) * 2011-09-16 2013-01-08 Mentor Graphics Corporation Circuit topology recognition and circuit partitioning

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8594988B1 (en) * 2006-07-18 2013-11-26 Cadence Design Systems, Inc. Method and apparatus for circuit simulation using parallel computing
JP4891817B2 (en) * 2007-03-16 2012-03-07 株式会社日立製作所 Design rule management method, design rule management program, rule construction device, and rule check device
US8060355B2 (en) * 2007-07-27 2011-11-15 Synopsys, Inc. Automatic, hierarchy-independent partitioning method for transistor-level circuit simulation
US8386431B2 (en) * 2010-06-14 2013-02-26 Sap Ag Method and system for determining database object associated with tenant-independent or tenant-specific data, configured to store data partition, current version of the respective convertor
US8386982B1 (en) * 2011-06-13 2013-02-26 Cadence Design Systems, Inc. System, method, and computer program product for pin assignment in an electronic design
US9449129B2 (en) * 2013-04-30 2016-09-20 Freescale Semiconductor, Inc. Method and apparatus for accelerating sparse matrix operations in full accuracy circuit simulation
US11663383B2 (en) * 2018-06-01 2023-05-30 Icee Solutions Llc. Method and system for hierarchical circuit simulation using parallel processing
EP3803644A4 (en) * 2018-06-01 2022-03-16 ICEE Solutions LLC Method and system for hierarchical circuit simulation using parallel processing
US11010516B2 (en) * 2018-11-09 2021-05-18 Nvidia Corp. Deep learning based identification of difficult to test nodes

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6086626A (en) * 1997-05-16 2000-07-11 Fijutsu Limited Method for verification of combinational circuits using a filtering oriented approach
US6577992B1 (en) * 1999-05-07 2003-06-10 Nassda Corporation Transistor level circuit simulator using hierarchical data
US20030163297A1 (en) * 1999-07-02 2003-08-28 Manpreet S. Khaira Logic verification in large systems
US20040093571A1 (en) * 2002-11-13 2004-05-13 Jawahar Jain Circuit verification
US6816826B1 (en) * 2000-10-05 2004-11-09 International Business Machines Corporation Fully exhibiting asynchronous behavior in a logic network simulation
US20050081173A1 (en) * 2003-10-14 2005-04-14 Olivier Peyran IC design planning method and system
US7047510B1 (en) * 2003-04-23 2006-05-16 Cadence Design Systems, Inc. Method and system for partitioning an integrated circuit design
US20060129953A1 (en) * 1997-11-05 2006-06-15 Fujitsu Limited Method for verifying and representing hardware by decomposition and partitioning
US7181708B1 (en) * 2004-08-10 2007-02-20 Cadence Design Systems, Inc. Coverage metric and coverage computation for verification based on design partitions
US20070044051A1 (en) * 2005-08-17 2007-02-22 Cadence Design Systems, Inc. Method and system for validating a hierarchical simulation database
US7555733B1 (en) * 2005-09-18 2009-06-30 Infinisim, Inc. Hierarchical partitioning

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4423367A1 (en) * 1994-07-04 1996-07-25 Siemens Ag Highly integrated circuit hierarchical logic verification method
US6038381A (en) * 1997-11-25 2000-03-14 Synopsys, Inc. Method and system for determining a signal that controls the application of operands to a circuit-implemented function for power savings
US7013253B1 (en) * 2000-04-03 2006-03-14 Magma Design Automation, Inc. Method and apparatus for calculation of crosstalk noise in integrated circuits
US7353157B2 (en) * 2001-01-11 2008-04-01 P. C. Krause & Associates, Inc. Circuit simulation
US20020133325A1 (en) * 2001-02-09 2002-09-19 Hoare Raymond R. Discrete event simulator
US7403884B2 (en) * 2004-06-08 2008-07-22 International Business Machines Corporation Transient simulation using adaptive piecewise constant model
US7493578B1 (en) * 2005-03-18 2009-02-17 Xilinx, Inc. Correlation of data from design analysis tools with design blocks in a high-level modeling system

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6086626A (en) * 1997-05-16 2000-07-11 Fijutsu Limited Method for verification of combinational circuits using a filtering oriented approach
US20060129953A1 (en) * 1997-11-05 2006-06-15 Fujitsu Limited Method for verifying and representing hardware by decomposition and partitioning
US6577992B1 (en) * 1999-05-07 2003-06-10 Nassda Corporation Transistor level circuit simulator using hierarchical data
US20030163297A1 (en) * 1999-07-02 2003-08-28 Manpreet S. Khaira Logic verification in large systems
US6816826B1 (en) * 2000-10-05 2004-11-09 International Business Machines Corporation Fully exhibiting asynchronous behavior in a logic network simulation
US20040093571A1 (en) * 2002-11-13 2004-05-13 Jawahar Jain Circuit verification
US7047510B1 (en) * 2003-04-23 2006-05-16 Cadence Design Systems, Inc. Method and system for partitioning an integrated circuit design
US20050081173A1 (en) * 2003-10-14 2005-04-14 Olivier Peyran IC design planning method and system
US7181708B1 (en) * 2004-08-10 2007-02-20 Cadence Design Systems, Inc. Coverage metric and coverage computation for verification based on design partitions
US20070044051A1 (en) * 2005-08-17 2007-02-22 Cadence Design Systems, Inc. Method and system for validating a hierarchical simulation database
US7555733B1 (en) * 2005-09-18 2009-06-30 Infinisim, Inc. Hierarchical partitioning
US20090300556A1 (en) * 2005-09-18 2009-12-03 Perry Gee Hierarchical Partitioning

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090300556A1 (en) * 2005-09-18 2009-12-03 Perry Gee Hierarchical Partitioning
US8209644B2 (en) 2005-09-18 2012-06-26 Infinisim, Inc. Hierarchical partitioning
US8195439B1 (en) 2008-09-02 2012-06-05 Infinisim, Inc. Real-time adaptive circuit simulation
US20120102451A1 (en) * 2010-01-13 2012-04-26 Tata Consultancy Services Limited Computationally efficient system for developing configurable, extensible business application product lines using model-driven techniques
US8990765B2 (en) * 2010-01-13 2015-03-24 Tata Consultancy Services Limited Computationally efficient system for developing configurable, extensible business application product lines using model-driven techniques
US8352893B1 (en) * 2011-09-16 2013-01-08 Mentor Graphics Corporation Circuit topology recognition and circuit partitioning

Also Published As

Publication number Publication date
US7555733B1 (en) 2009-06-30
US20090300556A1 (en) 2009-12-03
US8209644B2 (en) 2012-06-26

Similar Documents

Publication Publication Date Title
US7555733B1 (en) Hierarchical partitioning
EP3259693B1 (en) Integrated circuit design using generation and instantiation of circuit stencils
US6807520B1 (en) System and method for simulation of an integrated circuit design using a hierarchical input netlist and divisions along hierarchical boundaries thereof
US6405348B1 (en) Deep sub-micron static timing analysis in the presence of crosstalk
US9501593B2 (en) Semiconductor device design method, system and computer program product
US7434183B2 (en) Method and system for validating a hierarchical simulation database
Shook et al. MLParest: Machine learning based parasitic estimation for custom circuit design
US10068043B1 (en) Validating integrated circuit simulation results
US11663383B2 (en) Method and system for hierarchical circuit simulation using parallel processing
US7272805B2 (en) System and method for converting a flat netlist into a hierarchical netlist
US7373289B2 (en) Electrical isomorphism
US6560755B1 (en) Apparatus and methods for modeling and simulating the effect of mismatch in design flows of integrated circuits
US7003753B2 (en) Method of generating a physical netlist for a hierarchical integrated circuit design
US8818784B1 (en) Hardware description language (HDL) incorporating statistically derived data and related methods
US20030018949A1 (en) Method and apparatus for laying out wires on a semiconductor integrated circuit
CN112513861A (en) Method and system for hierarchical circuit simulation using parallel processing
Wei et al. Design and implementation of block-based partitioning for parallel flip-chip power-grid analysis
US20130152034A1 (en) System and method for reducing integrated circuit timing derating
Stark Analysis of power supply networks in VLSI circuits
US10872185B1 (en) Systems and methods for estimating wire capacitance in a register-transfer level circuit design
Benkoski et al. The role of timing verification in layout synthesis
JPH07287051A (en) Input data creation device for logic simulation
Levy et al. A rank-one update method for efficient processing of interconnect parasitics in timing analysis
US11100268B1 (en) Fast and accurate simulation for power delivery networks with integrated voltage regulators
JP2000113024A (en) Method and device for generating list

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION