Download Method for symbolic simulation of circuits having non
Transcript
US007818158B2 (12) Ulllted States Patent (10) Patent N0.: McDonald et a]. (54) (45) Date of Patent: 6,459,324 B1* 10/2002 Neacsu et a1. ............. .. 327/379 CIRCUITS HAVING NON-DIGITAL NODE 6,577,992 B1 * VOLTAGES 6,634,012 B2 7,006,961 (Us) 703/14 B2 * 2/2006 Zhou Mandell et al. et al. . . . . . .............. . . . . . . . . . . . . .. 703/14 7,013,253 B1* 3/2006 Cong et a1. ................. .. 703/14 7,049,875 B2 * 5/2006 Tsividis .................... .. 327/308 7,143,021 B1 * 11/2006 McGaughy et al. ......... .. 703/14 Subject to any disclaimer, the term of this patent is extended or adjusted under 35 U.S.C. 154(b) by 1153 days. (Continued) (21) APP1-NO-I 11/2331323 (22) Tcherniaev et al. ......... .. 703/14 * Assigneei SyIwPSyS, 1119-, Mountain View, CA Notice: 6/2003 10/2003 Zhong et al. ................. .. 716/5 6,662,149 B1* 12/2003 Devgan et al. (Us); Hsinwei smriti Gupta’ Chou’ San Sunnyvale’ Jose’ CA (Us) (*) Oct. 19, 2010 METHOD FOR SYMBOLIC SIMULATION OF (75) Inventors: Clayton B- McDonald’ Chapel Hill’ NC (73) US 7,818,158 B2 Filed: OTHER PUBLICATIONS Sep. 21, 2005 Understanding Semiconductor Devices by Sima Dimitrijev ISBN 0-19-513186-X Publication year 2000 p. 4-5.* (65) Prior Publication Data US 2007/0078638 A1 (51) Apr. 5, 2007 ( Continued ) Primary ExamineriKamini S Shah Assistant ExamineriAkesh Saxena Int. Cl. G06F 17/50 G06G 7/48 (2006.01) (2006.01) (74) Attorney, Agent, or FirmiSilicon Valley Patent Group LLP; Omkar Suryadevara (52) U.S.Cl. ........................................... .. 703/14; 703/3 (58) Field of Classi?cation Search ................. .. 703/19, (57) ABSTRACT 703/ 14, 3 See application ?le for complete search history. _ (56) In a computer simulation of an analog device in a digital References Clted circuit, a piece-Wise linear lookup table is used to determine the channel resistance of the transistors in the analog device, allowing the node voltages to take on non-digital values. The piece-Wise linear lookup table contains a set of channel resis U.S. PATENT DOCUMENTS 5,264,785 A * 11/1993 Greason ................... .. 323/350 5,313,398 A * 5/1994 Rohrer etal. 5,373,457 A * 12/1994 George et a1. 5,553,008 A * 9/1996 Huang et a1. 5,675,502 A * 10/1997 Cox .. ... ... ... . A * 12/1999 6,134,513 A * 10/2000 6,190,433 B1* 6,269,277 B1 * 2/2001 7/2001 Wang et a1. Gopal tances corresponding respectively to gate-to-source voltages. 716/6 and voltages in the circuit as a function of symbolic inputs. The program can analyze circuits containing more than tWo . . . .. 5,686,863 A * 11/1997 Whiteside 5,687,355 A * 11/1997 Joardaret a1. 5,692,158 A * 11/1997 Degeneffetal. 5,999,718 703/14 703/2 703/14 The program uses multi-terminal binary decision graphs (MTBDDs) to represent non-digital resistances, capacitances 330/260 716/20 voltage sources by modeling voltage sources With voltage 703/2 ..... . . . .. dividers betWeen the maximum and minimum voltages in the 703/2 Circuit ....................... .. 703/14 ' Van Fleet etal. ............. .. 71/18 Hershenson et al. ........ .. 700/97 28 Claims, 14 Drawing Sheets | MEMORY Piece-VWseLinear LookupTable 35 “mum “mum Node Name “Damage A1 ‘ A2 A3 _ (LTZZ'QTE'E'Q, B1 B2 B3 Gate Node K1 K2 K3 Ca acitanoe C1 List of transistors connected to node D1 C2 03 L1 M1 L2 M2 L3 M3 D2 D3 source Node Drain Node F'lW/L Lookup Table N1 N2 N3 J E2 E3 Channel VWdth O1 O2 03 Channel Length P1 Type(NurP) 01 P2 u: P3 as souroe or not?) Value (or range ofvalues)’ E1 ‘Tabla givm rea/ yaiue 38/ 340/ 356 US 7,818,158 B2 Page 2 TETA: Transistor-Level Engine for Timing Analysis by F. Dartu and L. T. Pileggi. Proceedings of the Design Automation by Conference, US. PATENT DOCUMENTS 7,353,157 B2 * 2001/0029601 A1* 4/2008 WasyncZuk et al. ......... .. 703/14 10/2001 Kimura et al. ..... .. 716/19 2002/0016704 A1* 2/2002 2003/0120473 A1* 2003/0208347 A1* Blanks ........ .. .. 6/2003 Jain et al. 703/14 703/14 11/2003 Huang .. 703/14 2004/0049370 A1 * 3/2004 Stanley et al. 2004/0117162 A1* 6/2004 OZis et al. .... .. . 703/2 703/14 2004/0148150 A1* Ashar et al. . Fertner et al. .. .. . 703/14 2005/0027491 A1* 7/2004 2/2005 2005/0143966 A1* 6/2005 McGaughy 2005/0149311 A1* 7/2005 2005/0149312 A1* 7/2005 McGaughy . 702/196 703/3 McGaughy . .. 703/14 .. 703/14 2005/0257178 A1* 11/2005 Daems et al. 2005/0273307 A1* 716/2 12/2005 Hemmett 2006/0069537 A1* 3/2006 2007/0261015 A1* 11/2007 2008/0033708 A1* Cao .. 703/14 ............... .. Morgenshtein et al. .. . 703/14 .. . 716/1 2/2008 Kanapka et al. ............. .. 703/14 OTHER PUBLICATIONS An amorphous-silicon thin-?lm transistor model including variable pp. 595-598, Jun. 1998* Microelectronic Circuits- Fourth Edition ; Sedra and Smith Jan. 1998; ISBN 0-19-511663-1; p. 366-369 and book cover.* Bahar, R. I. et al. “Algebraic Decision Diagrams And Their Applica tions”, ACM/IEEE International Conference on Computer Aided Design, Nov. 1993, pp. 4. SomenZi, F. “CUDD: CU Decision Diagram PackageiRelease 2.2. 0”, May 12, 1998, pp. 47. Bryant, R. E. “Graph-Based Algorithms For Boolean Function Manipulation”, IEEE Transactions on Computers, vol. C-35, No. 8, Aug. 1986, pp. 25. Andersen, H. R. et al. “Boolean Expression Diagrams”, In LICS, 1997, pp. 21. Kuehlmann, A. et al. “Equivalence Checking Using Cuts And Heaps”, Proceedings of the Design Automation Conference (DAC’97), Anaheim, CA, Jun. 1997, pp. 6. Bryant, R. E. et al. “Veri?cation Of Arithmetic Circuits Using Binary Moment Diagrams”, Software Tools for Technology Transfer, Springer-Verlag, vol. 3, No. 2, May 2001, pp. 18. Chen, Y.-A. et al. “PHDD: An Ef?cient Graph Representation For resistance effect by TaniZaWa, M.; Kikuta, S.; Nakagawa, N.; IshikaWa, K.; Kotani, N.; Miyoshi, H.;Simulation of Semiconductor Floating Point Circuit Veri?cation”, International Conference on Processes and Devices, 1996. SISPAD 96. 1996 International Con PhD Thesis titled “Symbolic Functional and Timing Veri?cation of ference onSep. 2-4, 1996 pp. 181-182.* Transistor Level Circuits,” Clayton B. McDonald, Apr. 9, 2001, Carnegie-Mellon University, 91 pages. Computing Logic-Stage Delays Using Circuit Simulation and Syrn Computer-Aided Design (ICCAD’97), Nov. 1997, pp. 6. bolic Elmore Analysis by Clayton B. McDonald Randal E. Bryant; IEEE 2001 p. 283-288* * cited by examiner US. Patent 0a. 19, 2010 Sheet 1 0114 US 7,818,158 B2 f _C 10 Q_ V In — Out \ 12 Prior Art V Fig. 1 t t1 ? (enable V Prior Art Fig. 2 f US. Patent 0a. 19, 2010 Sheet 3 0f 14 US 7,818,158 B2 REVISE CIRCUIT DESIGN TEXT EDITOR El 342 age CIRCUIT 336\ I 3 4 Lei-é —¥_ NON-DIGITAL n SIMULATION SYMBOLIC ° 3 3 34 Fig. 3B PROGRAM SIIIEI'IETIIW RESULTS US. Patent 0a. 19, 2010 US 7,818,158 B2 Sheet 4 0f 14 | |I l ii | i MEMORY | Piece-Wise Linear Lookup Table 3501 V95 v1 v2 v3 i P P1 P2 03 I | l Node Name A1 ! A2 A3 Type (voltage | source or not?) B1 B2 B3 I Capacitance C1 C2 C3 ! List of transistors | connected to node D1 D2 D3 i E1 E2 E3 I F1 F2 F3 i Value (or range of values)* CCR 352 ! / I *Table giving real value I (voltage) for any input | assignments (MTBDD) i I l 34 Legend 0_/ Fig. 3C Fig. Fig. 3C 3D I US. Patent 0a. 19, 2010 Sheet 5 0f 14 I I I I I US 7,818,158 B2 | i I CCR Name G1 G2 G3 ! 1 List of Nodes H1 Maximum Voltage |1 H2 |2 H3 J354 |3 I MinimumVoltage J1 J2 J3 l I l | Transistor List | (for each CCR) ! ! Gate Node Source Node K1 L1 K2 L2 K3 L3 | Drain Node M1 M2 M3 ' PNV/L ! Lookup Table N1 N2 N3 J | Channel Width 01 O2 03 i Channel Length P1 P2 P3 I Type (N or P) Q2 Q3 Q1 I I I I I 340/ Fig. 30 356 US. Patent 0a. 19, 2010 Sheet 6 0f 14 US 7,818,158 B2 @ 400 Get Event From J Queue " i402 4 404 Update Time Apply Event Value Event Queue Em pty? - - Simulation Determine J40 Complete Affected Nodes 6 List Of Affected Nodes Empty? N 408 Compute DC Value at J Node Using RC(n) 418 L Remove From Affected Nodes Y Change? A N ' 416 410 Compute J- Clean Events Delay 412 ' I414 Schedule New Event In Queue 7 Clean Events Fig. 4 US. Patent Oct. 19, 2010 Sheet 7 0f 14 __ US 7,818,158 B2 f 50 500 X ‘——<1 in Smalt m out Large 502 -/" V Fig. 5 t=0 ns t=1.1 ns out t=2.3 ns US. Patent 0a. 19, 2010 Sheet 8 0f 14 Fig. 7 804 816 US 7,818,158 B2 US. Patent 0a. 19, 2010 Sheet 9 0f 14 US 7,818,158 B2 a _|_ 902—/—_|_ Broken = aAbAC _|_"\—904 b c Fig. 9 102 Vdd 110 104 100 Fig. 10 US. Patent 0a. 19, 2010 Sheet 10 0114 US 7,818,158 B2 Channel Sheet Reslstance (p) Fig. 11 R1 R2 W T C R1 :> R2 W T Fig. 12 C * R1 US. Patent 0a. 19, 2010 Sheet 11 0114 / f US 7,818,158 B2 130 / F: / / ‘I 12 2.5 Fig.13 F + G KID H / / / / / l/ I’ / 12 // / 25 0.4 \ 1 1.0 Fig. 14 1.6 2.9 3.5 US. Patent 160 0a. 19, 2010 Sheet 12 0114 f 1 a —1 5/1 5/1 |— b 1; x Fig. 16 US 7,818,158 B2 162 US. Patent 0a. 19, 2010 Sheet 13 0f 14 Voltage at c 1.0 0.5 0.33 US 7,818,158 B2 US. Patent 0a. 19, 2010 Sheet 14 0114 US 7,818,158 B2 3.0 V 100 \ n’ F Ron = 5 Kohms 192 On = 10 fF out _\ in —-— Ron = 2 Kohms V OV Fig. 19 6.0 V : = 206 \ - 10 Ohms .3’ q’ - f If B-A, then 5.0 v. 200 If A, else 0.0 V then 5.0 V, else 0.0 V R=1 Kohms l 5 2.0 v E 204 / out R=1 Kohms E, 2.5 If E -I\, f;=- then 5.0V, “:5: I else V 208 / 5 R=1 K h o \ 202 1.0 V Fig. 20 US 7,818,158 B2 1 2 METHOD FOR SYMBOLIC SIMULATION OF CIRCUITS HAVING NON-DIGITAL NODE VOLTAGES Accordingly, there is a clear need for a fast, e?icient and accurate Way of symbolically simulating and verifying digital circuits that contain analog components. SUMMARY FIELD OF THE INVENTION The method of this invention is performed in a computer. In the method of this invention, the transistors Within an analog This invention pertains to methods of simulating the per formance of electrical circuits and in particular to methods of simulating circuits that contain analog circuits or devices. circuit are modeled as variable resistors. For each transistor, the program applies the gate-to-source voltage (Vgs) to a piece-Wise linear lookup table to determine the channel resis tance of the transistor. The piece-Wise linear lookup table BACKGROUND expresses the channel resistance of the transistor as a function of its Vgs, its on-resistance, its siZe and other factors speci?c Symbolic simulation is a Well-knoWn technology for the to the transistor. functional veri?cation of digital circuits. Symbolic simula Advantageously, both Vgs and the resistance of the tran tion differs from conventional simulation in that in conven tional simulation programs both the inputs and outputs are sistor are expressed as Multi-Terminal Binary Decision Dia grams (MTBDDs, also knoWn in the literature as Algebraic Decision Diagrams, or ADDs), Which are a convenient actual binary values (ls and 0s)), Whereas in symbolic simu lation programs the inputs are symbols representing both 0 20 digital inputs. Similarly, the node voltages and capacitances are Boolean expressions. Typically the clock remains binary. The circuit is veri?ed by checking the output Boolean expres sions against a reference. Some primarily digital circuits contain analog devices and hence have non-digital node voltages. The presence of analog devices in the circuit impacts the functionality being veri?ed. For example, in normal digital simulation programs the out put of the Schmitt trigger shoWn in FIG. 1 can only take on digital values, Which means that the feedback transistors 10 mechanism for expressing a plurality of non-digital (real valued) outputs as a Boolean function of a discrete number of and l (e.g., a1, a2, a3, a4, . . . b1, b2, b3, b4, etc.) and the outputs 25 in the analog circuit may generally be expressed as MTBDDs. Using a piece-Wise linear lookup table to determine the resistance of each transistor, the pull-up resistance betWeen the node and the high supply voltage and the pull-doWn resis tance betWeen the node and the loW voltage supply are com puted. After the pull-up and pull-doWn resistances have been 30 calculated, a voltage divider formula is used to compute the voltage at the node. The time at Which the voltage Will occur and 12 appear to be either on or off. If transistors 10 and 12 are at the node (i.e., the delay) is then computed, using the effec tive capacitance of the node, and the node voltage and delay siZed such that they are stronger than the other transistors in the device, then the current state of the output node Will be are entered chronologically in an event queue. After a change permanently locked. In reality, hoWever, When the input node in the inputs of the circuit, the program repeatedly returns to 35 empty, indicating that the circuit has reached a steady-state condition. The steady-state condition lasts until there is another change at the inputs. According to an aspect of the invention, circuits that have sWitches from 1 to 0 or vice-versa, the voltage at the output node Will shift slightly. This sets up a positive feedback con dition that Will end up With the output node completely shifted. This result can be accounted for, hoWever, only if the voltage at the output node is capable of taking on non-digital 40 Similarly, With the sense-ampli?er shoWn in FIG. 2, When creating voltage dividers betWeen the maximum and mini mum supply voltages. Preferably, the resistors in each voltage the enable signal goes high, the voltages at “ti” and “tf” are isolated from the voltages at “t” and “f”, respectively, setting 45 of “ti” and “tf’ being pulled up to the supply voltage and the loWer of “ti” and “tf’ being pulled doWn to ground. In a digital simulation scheme, the node values can only be 1 or 0. There fore, if tIl .5V and fIl .2V, both nodes Will be represented as logical ls. When the enable signal goes high an oscillation Moreover, the computer program of this invention is able to 50 BRIEF DESCRIPTION OF THE DRAWINGS 55 FIG. 1 is a schematic circuit diagram of a Schmitt trigger. FIG. 2 is a schematic circuit diagram of a sense-ampli?er. FIG. 3A is a How chart of a digital ASIC design How 60 is similarly a very sloW, manual effort. Use of SPICE or test benches; the siZe of test bench increases exponentially With the siZe of the circuit being analyZed. including the method of the invention. FIG. 3B illustrates a How of information during the design of a circuit using the program of this invention. FIGS. 3C and 3D illustrate a schematic diagram of the memory of the computer shoWn in FIG. 3B. FIG. 4 illustrates a How chart of the scheduling program circuit. This is very sloW, hoWever, and is applicable only to very small circuits. Model-checking on extracted ?oW-graphs fast-Spice (NanosimTM, HsimTM, etc,) requires exhaustive transistor resistances to be min-max ranges. Using the computer program of this invention makes it possible to simulate and verify digital circuits containing analog devices accurately and e?iciently. One Way of dealing With this problem is to manually replace the analog devices in the circuit With digital models results questionable. Another technique for analyZing analog devices in digital circuits involves symbolic analysis in MathematicaTM, using algebraic expressions that fully describe the behavior of the divider are small in relation to the other resistances in the circuit. handle unknoWn input values by alloWing node voltages and Will be set up that Will never resolve itself. before veri?cation. This process is time consuming and error prone, hoWever, and therefore makes the accuracy of the more that tWo voltage sources can be analyZed. To do this, the computer program identi?es the maximum and minimum voltage sources. All other voltage sources are mimicked by voltages. up a positive feedback condition that Will result in the higher analyZe the next event in the event queue until the queue is 65 Which is used to implement the symbolic event handling procedure. FIG. 5 is a schematic circuit diagram of a CMOS inverter. US 7,818,158 B2 4 3 FIG. 6 is a timing diagram of the input and output of the ucts from Synopsys, Inc. that can be used at this step include VCS, VERA, DesignWare®, Magellan, Formality, ESP and LEDA products. Synthesis and design for test (step 316): Here, the VHDL/ CMOS inverter shown in FIG. 5. FIG. 7 is a schematic circuit diagram illustrating tWo chan nel connected regions (CCRs). Verilog is translated to a netlist. The netlist can be optimiZed FIG. 8 illustrates an RC tree for one of the channel con for the target technology. Additionally, the design and imple nected regions shoWn in FIG. 7. mentation of tests to permit checking of the ?nished chip occurs. Exemplary EDA softWare products from Synopsys, Inc. that can be used at this step include Design Compiler®, FIG. 9 is a schematic circuit diagram of a data dependent loop. FIG. 10 is a schematic circuit diagram shoWing a node Physical Compiler, Test Compiler, PoWer Compiler, FPGA having pull-up and pull-doWn resistances that overlap. Compiler, Tetramax, and DesignWare® products. FIG. 11 a graph of the channel resistance of a transistor as Netlist veri?cation (step 318): At this step, the netlist is checked for compliance With timing constraints and for cor a function of Vgs. FIG. 12 is a circuit diagram illustrating the translation of capacitances across resistances to obtain the effective capaci respondence With the VHDL/Verilog source code. Exemplary EDA softWare products from Synopsys, Inc. that can be used tance at a node. at this step include Formality, ESP, PrimeTime, and VCS FIG. 13 shoWs a Boolean function represented by a multi products. terminal binary decision diagram (MTBDD). FIG. 14 illustrates the addition of tWo MTBDDs to obtain a third MTBDD. 20 Design planning (step 320): Here, an overall ?oorplan for the chip is constructed and analyZed for timing and top-level routing. Exemplary EDA softWare products from Synopsys, FIG. 15 shoWs an MTBDD that represents the resistance of Inc. that can be used at this step include Astro and IC Com the parallel combination of resistors shoWn in FIG. 16. FIG. 17 shoWs an MTBDD that represents the voltage at piler products. Physical implementation (step 322): The placement (posi tioning of circuit elements) and routing (connection of the node c in FIG. 18. FIG. 19 is a circuit diagram for illustrating hoW symbolic 25 same) occurs at this step. Exemplary EDA softWare products gate voltages are dealt With and hoW a neW value and delay at from Synopsys, Inc. that can be used at this step include the an output node are computed as a result of a change at an input Astro and IC Compiler products. Analysis and extraction (step 324): At this step, the circuit node. FIG. 20 is a circuit diagram for illustrating the analysis of a circuit that contains more than tWo voltage sources. function is veri?ed at a transistor level, this in turn permits 30 What-if re?nement. Exemplary EDA softWare products from Synopsys, Inc. that can be used at this step include AstroRail, PrimeRail, Primetime, and Star RC/XT products. Physical veri?cation (step 326): At this step various check DETAILED DESCRIPTION ing functions are performed to ensure correctness for: manu Before proceeding further With the description, it may be helpful to place this process in context. FIG. 3A shoWs a 35 simpli?ed representation of an exemplary digital ASIC design How. At a high level, the process starts With the product idea (step 300) and is realiZed in an EDA softWare design process (step 302). When the design is ?nalized, it can be taped-out (event 304). After tape out, the fabrication process can be used at this step include the Hercules product. 40 Proteus, ProteusAF, and PSMGen products. Mask data preparation (step 330): This step provides the occur resulting, ultimately, in a ?nished integrated circuit (IC) composed of a number of steps 312-330, shoWn in linear fashion for simplicity. In an actual ASIC design process, the “tape-out” data for production of masks for lithographic use 45 to produce ?nished chips. Exemplary EDA softWare products from Synopsys, Inc. that can be used at this step include the CATSI family of products. particular design might have to go back through steps until The computer program of this invention is an aspect of certain tests are passed. Similarly, in any actual design pro Netlist Veri?cation (Step 318) and is represented by step 332 cess, these steps may occur in different orders and combina in FIG. 3A. FIG. 3B illustrates the How of information in some tions. This description is therefore provided by Way of context and general explanation rather than as a speci?c, or recom mended, design How for a particular ASIC. A brief description of the components steps of the EDA softWare design process (step 302) Will noW be provided: Resolution enhancement (step 328): This step involves geometric manipulations of the layout to improve manufac turability of the design. Exemplary EDA softWare products from Synopsys, Inc. that can be used at this step include (step 306) and packaging and assembly processes (step 308) chip 310. The EDA softWare design process (step 302) is actually facturing, electrical issues, lithographic issues, and circuitry. Exemplary EDA softWare products from Synopsys, Inc. that 55 System design (step 312): The designers describe the func embodiments, Wherein a circuit design 334 is analyZed by computer 336 that has been programmed to perform acts of the type illustrated in FIG. 4 and described elseWhere herein, and any results are then revieWed by chip designer 338. Com puter 336 contains a memory 340 Chip designer 338 in turn tionality that they Want to implement, they can perform What if planning to re?ne functionality, check costs, etc. HardWare revises the circuit design, by use of a text editor or a schematic softWare architecture partitioning can occur at this stage. can be used at this step include Model Architect, Saber, Sys may be a personal computer Whereas computer 336 may be a Sun Workstation. Note that a single computer may be used instead of tWo computers. When the circuit designer 338 is tem Studio, and DesignWare® products. Logic design and functional veri?cation (step 314): At this satis?ed With the simulation results provided by computer 336, then the circuit design 334 may be taped out for fabri Exemplary EDA softWare products from Synopsys, Inc. that stage, the VHDL orVerilog code for modules in the system is Written and the design is checked for functional accuracy. entry program in a personal computer 342. Computer 342 60 More speci?cally, does the design as checked to ensure that cation into IC chip 310 in the normal manner. It Will be understood that the arroW from computer 336 to ?nished chip 310 includes all of the process steps after Netlist Veri?cation produces the correct outputs. Exemplary EDA softWare prod (step 318) in FIG. 3A. 65 US 7,818,158 B2 6 5 At step 402, the current time (curtime) is updated to the FIGS. 3C and 3D show a schematic vieW of memory 340 showing several of the data structures that are stored in memory 340 in the method of this invention. FIG. 4 illustrates a How chart for SymbolicSimulate, the time of the event, and at step 404 the current value of the node (Node.value) may be updated to the value of the event (Event.Value), Which is the voltage at the node at Which the event occurs. The value of the node is updated, hoWever, only if permitted by Mask, a Boolean function that essentially acts basic scheduling program Which is used to implement the symbolic event handling procedure. The program uses event queues, Where an event is a change in the value function for a as a ?lter that de?nes When the state of the node Will change. particular node in the circuit. Events are sorted in the event This is accomplished using an If-Then-Else (ITE) operator, queue by increasing time. Which changes Node.value to Event.Value if Mask is true. The use of the Mask function in this manner solves the prob The program shoWn in FIG. 4 can be represented in pseudo-code as folloWs: lem of scheduling data-dependent delays. At step 406, the program identi?es the nodes that Will be affected by the event. To do this, it calls a subroutine called SymbolicAffectedNodes. The subroutine SymbolicAffected SymbolicSirnulate( ) Nodes and the other subroutines referred to beloW in connec tion With basic scheduling program of FIG. 4 are described While ( <Node, Time, Event.Value, Mask> <- GetNext( ) ) cultirne <— Time further beloW. The program then cycles through the affected nodes to Node.value <- ITE(Mask, Event.Value, Node.Value) N<— SymbolicAffectedNodes(Node) Vn E N newvalue <- SymbolicComputeDC(n) change <— newvalue XOR n.value determine, for each affected node, Whether the value (DC 20 if( change == FALSE ) Tdelay<— SymbolicComputeDelay(n) voltage) at that node Will change as a result of the event and, if so, What the neW value Will be. This is represented at step 408 and is accomplished by calling a subroutine called Sym bolicComputeDC Which in turn, to alloW for the non-digital voltage values in analog devices, calls another subroutine Tdelay <- MtbddITE(change, Tdelay, [w] ) SymbolicSchedule (n, newvalue, Tdelay ) SymbolicCleanEvents( n, curtime, change’ ) SymbolicSchedule( node n, BDD value, MTBDD Tdelay ) Whild Tdelay == I°°l ) called RC. These stages of the program are represented in dInin <— MtbddMinValue(Tdelay) mask <- MtbddEqua1(Tdelay,dInin) asks Whether the value at the node has changed as a result of the event. time <- FIG. 4 by step 408 and the decision point after step 408 Which curtirne+dmin SyrnbolicCleanEvents(n,time,rnask) EnqueueEvent( <node,time,value,rnask> ) Tdelay <- MtbddITE(rnask,[w], Tdelay) If the value at the node has changed, the program calls a 30 puteDelay uses the resistance and capacitance associated With the node to compute an Elmore delay, Which represents SymbolicCleanEvents( node 11, real time, BDD mask ) for each event such that (e.Node = node) ' (e.Tirne>tirne) e.Mask <— the time at Which the neW value Will “arrive” at the node. This e.Mask ' mask’ ife.Mask = FALSE Delete e from EventQueue subroutine called SymbolicComputeDelay. SymbolicCom stage of the program is represented by step 410 in FIG. 4. 35 The neW value at the node and the delay represent a neW “event.” Based on the delay (Which is the time at Which the As the name implies, each circuit’s node state in Symbol icSimulate is represented in a symbolic form. Rather than being a binary value 1 or 0, each node value is represented by a Boolean function of the variables applied to the input ter minals of the circuit. All of the other quantities shoWn in boldface type in the code listing above are also Boolean functions. The Boolean functions are represented as Binary Decision Diagrams (BDDs) or Multi-Terminal Binary Deci sion Diagrams (MTBDDs). All BDD and MTBDD primitive operations are performed using the University of Colorado Decision Diagram Package (CUDD) version 2.2.0. See R. I. Bahar, E. A. Frohm, C. M. Gaona, G. D. Hachtel, E. Macii, A. Pardo, and F. SomenZi. Algebraic Decision Diagrams and Their Applications, ACM/IEEE International Conference on CompulerAided Design, pages 188-191, November 1993; F. SomenZi. C UDD: CU Decision Diagram PackageiRelease 2.2.0, Online User Manual, May 1998; each of Which is incorporated herein by reference in its entirety. To start the simulation, the input values to be executed are scheduled by placing them in an initial event queue. The event Will occur in relation to the present time), the neW event is placed at the proper place in the event queue. This is accomplished by calling a subroutine called SymbolicSched 40 The program then calls a subroutine called CleanEvents. CleanEvents scans through the event queue to delete all events on the speci?ed node that are scheduled to occur after 45 computed node values that Would take place after the neWly 50 event, Which is the neW DC voltage at the node, and (d) a mask. Both the value and the mask are symbolic values. steady-state value and should not be overWritten by long delay events generated using old information. CleanEvents is represented by step 414 in FIG. 4, If the value at the node does not change as a result of the event, there is no need to schedule a neW event in the queue, and steps 410 and 412 are omitted. 55 In some instances, the duration of a neW event is shorter than the delay. For example, a 10 psec glitch may appear on the gate of a transistor Whose gate capacitance produces a delay of 50 psec. In such cases, the output pulse needs to be suppressed because the input voltage Will have returned to its 60 original state before the voltage at the source or drain of the transistor can change. For this purpose, the program calls another version of CleanEvents, Which cancels all future events at a node When the neW value matches the current the next (earliest) event in the event queue. The event is represented by a tuple that includes (a) the identity of the node at Which the event takes place, (b) the time, (c) the value of the the neWly inserted event. This use of CleanEvents, immedi ately after the neW event is enqueued, overrides previously inserted event. This is necessary because the neWly-inserted event represents the latest information about the node’s simulator then executes all events in the event queue, com putes neW values for fanouts of the changed nodes, and sched ules them back into the event queue. This process is repeated until the circuit reaches a steady-state, as signaled by an empty event queue. Initially, at step 400, the program calls GetNext to obtain ule and is represented by step 412 in FIG. 4. 65 value. This use of CleanEvents is represented at step 416 in FIG. 4. After the affected node has been analyZed, it is removed from the list of affected nodes (step 418), and the program US 7,818,158 B2 7 8 proceeds to analyze the next affected node. This process continues until all of the nodes affected by the event have been analyzed. At this point, the program returns to step 400 to in betWeen the output function Will be dependent on a mix of the neW and old input variables. The Mask for the event at Time:1.1 ns Would be xAy obtain the next event in the queue. When there are no events (representing a rising transition from x:0 to y:1) and the mask for the event at Time:2.3 ns Would be xAy (representing a falling transition from x:1 to yIO), With Event.Value? in both cases. When x%/ (no change at the input), no event Would be scheduled. left in the queue, the circuit being simulated has reached a steady state and the simulation is complete until there is another change at the input terminals. To summarize, the program illustrated in FIG. 4, in response to a change at the input terminals, identi?es the SymbolicAffectedNodes affected doWnstream nodes, recomputes their steady-state Next, the program calls SymbolicAffectedNodes, Which node values, determines the delays to the affected nodes, and schedules the appropriate events. determines Which nodes Will be affected by the transition at the node at Which the event took place (step 406 in FIG. 4). The affected nodes (and, as described beloW, the node values With this overvieW of the basic program, the individual steps and subroutines Will noW be described in greater detail. and delays) are preferably computed by breaking the circuit into channel-connected regions and transforming each chan GetNext As indicated above, each event in the queue is represented nel-connected region into an RC tree. A channel-connected region (CCR) is de?ned by an array of nodes that are con nected to each other or to a voltage source only through by a tuple Which includes: (a) the identity of the node, (b) the time at Which the event Will occur, (c) the value, and (d) a mask. The “value” is the neW value (DC voltage) that Will be present at the node at the time of the event. The mask de?nes the circumstances under Which the value at the node Will change. Both the value and mask are Boolean expressions. As described above, the program initially calls GetNext to obtain a neW event (the next or earliest event in the queue) and 20 dielectric in any transistor. FIG. 7 shoWs tWo CCRs 70 and 72. The channels of transistors 700 and 702 are Within CCR 70. The channels of transistors 704, 706, 708 and 710 are Within CCR 72. A data set for each CCR is stored in the computer as 25 Event.Value, Node.Value), “Node.Value” is the current value at the node; Event.Value is the neW value at the node. If Mask is true, the value at the node is set to the neW value; otherWise, 30 400, 402 and 404 in FIG. 4. The need for the Mask function in a system Where delays are data-dependent can be illustrated by the CMOS inverter 50 shoWn in FIG. 5. Inverter 50 includes a high side PMOS transistor 500 and a loW side NMOS transistor 502. Inverter (e) the value (i.e. voltage) of the node (as explained further 35 3C. The data structure also includes a list of the transistors in each CCR, identi?ed by: (a) the nodes to Which the gate, 40 HoWever, for any given input pattern, the output Will transi 45 herein, the Word “node” and “net” are synonymous unless the context indicates otherWise.) The data structure for the list of value of the output node at any time can be represented by a 50 transistors is represented by box 356 in FIG. 3D. An RC tree for each CCR is formed by replacing each 55 grounded capacitance to each node. As described beloW, the equivalent resistance for each transistor depends on the size of the transistor, the gate-source voltage (Vgs) and some pre-computed process information (from a default process if Boolean function of the input variables, and the full symbolic conducting transistor With a resistor and connecting a Using this concept, one can construct a valid sequence of none is supplied). A corresponding RC tree for CCR 72 in FIG. 7 is shoWn in FIG. 8. The size of the capacitance that is connected to each Would be scheduled at Time:1 .1 ns and Time:2.3 ns, respec tively, and We Would obtain the series of three node functions shoWn in FIG. 6. Initially the output function is x, and even tually it settles to Since, at the output, a falling transition function of the gate-to-source voltage, (c) the Width and length of the transistor’s channel, and (d) the “type” of the transistor (i.e., Whether N-channel or P-channel). (Note: in some publications nodes are referred to as “nets.” As used from high to loW, the delay in the output Will be greater than the delay When the input goes from loW to high. Thus, the functions of the output node of unbalanced inverter 50. For example, assume that the delay at the output When the input goes from high to loW is 2.3 ns and the delay at the output When the input goes from loW to high is 1.1 ns. TWo events source and drain terminals, respectively, are connected, (b) a piece-Wise linear lookup table that is used, as described beloW, to compute the channel resistance of the transistor as a either or both of Which could represent 0 or 1, it is not obvious When the resultant event should be scheduled on the output. transition is actually a progression though a series of node functions. terminal binary decision diagram (MTBDD)), and (f) the identity of the CCR in Which the node is located. The data structure for a list of nodes is represented by box 352 in FIG. signi?cantly larger than high side transistor 500. It is apparent tion at some Well-de?ned point in time. When the input goes tains a list of the nodes (or nets) in each CCR, including for each node: (a) the name of the node, (b) the “type” of the node (i.e., Whether it is a voltage source or not), (c) the capacitance of the node, (d) a list of the transistor connections to the node, beloW, this value is expressed in Boolean form as a multi 50 is unbalanced, meaning that loW side transistor 502 is that the delay in the change of the output in response to a change in the input Will be different depending on Whether the input goes from loW to high or from high to loW. If the input sWitches from the symbolic variable x to symbolic variable y a list of the nodes that are in the CCR as Well as the maximum and minimum voltages in the CCR. This data set is repre sented by box 354 in FIG. 3D. In addition, the data structure stored in the computer con then applies the If-Then-Else (ITE) logical operator to (Mask, the oldvalue is retained. This sequence is represented by steps transistor source-drain channels, Without traversing a gate node in the RC tree is computed by summing all gate, drain 60 and source capacitances that are connected to the node, as Will occur at t:1.1 ns and a rising transition Will not occur Well as any explicit capacitances that are in the netlist. For until t:2.3 ns, the only Way that the output Will be high in the example, in FIG. 8, resistors 804, 806, 808 and 810 are replacements for transistors 704, 706, 708 and 710, respec interval betWeen 1.1 ns and 2.3 ns is if x and y are 0 and the output remains high continuously. This behavior is captured in the function xAy. In general, the output node function Will progress from being dependent only on the old input function variables to being dependent on the neW input variables, and 65 tively in FIG. 7. The capacitance 812 connected to node 802 is equal to the sum of the drain capacitances of transistors 704, 706 and 708. The capacitance 814 connected to node 816 is equal to the drain capacitance of transistor 710.