[go: up one dir, main page]

WO2010136668A1 - Electric circuit simulator - Google Patents

Electric circuit simulator Download PDF

Info

Publication number
WO2010136668A1
WO2010136668A1 PCT/FR2010/000387 FR2010000387W WO2010136668A1 WO 2010136668 A1 WO2010136668 A1 WO 2010136668A1 FR 2010000387 W FR2010000387 W FR 2010000387W WO 2010136668 A1 WO2010136668 A1 WO 2010136668A1
Authority
WO
WIPO (PCT)
Prior art keywords
circuit
state
equations
model
matrix
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.)
Ceased
Application number
PCT/FR2010/000387
Other languages
French (fr)
Inventor
Vincent Acary
Olivier Bonnefon
Bernard Brogliato
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.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
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 Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of WO2010136668A1 publication Critical patent/WO2010136668A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 invention relates to the simulation of electrical circuits.
  • These tools include analog simulation tools, numerical simulation tools, and hybrid tools.
  • the numerical simulation tools are mainly adapted to the simulation of digital components, they provide a rather “high level” view of the operation, and their simulations do not allow to take into account the interferences that can take place at "low level", between the components analog devices that perform digital functions.
  • Analog simulation tools are suitable for circuit simulation based on models of the physical behavior of each of the circuit components.
  • SPICE is the most used and represents a standard that is widely used.
  • solutions provided by SPICE depend on the convergence of the Newton-Raphson method applied to a representation of the circuit concerned.
  • Hybrid tools work for their part by characterizing a circuit or a portion of the circuit, and using an analog or digital simulation according to this characterization. These tools are time-consuming and poorly adapted to the simulation of electrical circuits as soon as they begin to be complex. In general, these tools tend to combine the disadvantages of digital and analog simulation tools, without actually combining their advantages.
  • the invention improves the situation.
  • an electric circuit simulator comprising: a library, comprising circuit components, each with characteristics that make it possible to simulate its behavior, at least some of which are associated with a dynamic equation, and / or one input / output equation with a domain delimitation expression defining the possible state parameters for the component concerned, - a constructor, arranged to calculate a model of a circuit, from a representation of this circuit by its components and their interconnections, in the form of a triplet of sets of equations which relate respectively to the dynamic equations, the input / output equations and the domain boundaries of the components of this circuit, - a solver, arranged to compute a posterior state of a circuit, from its model and from a previous state, and
  • this simulator has many advantages, including automatic equation, and improved simulation of switched circuits.
  • FIG. 1 represents a schematic view of an electric circuit simulator according to the invention
  • FIG. 2 represents a general operating diagram of the simulator of FIG. 1,
  • FIG. 3 represents a general operating diagram of the manufacturer of FIG. 1,
  • FIG. 4 represents an exemplary implementation of part of the second operation of FIG. 3
  • FIG. 5 represents an example of implementation of another part of the second operation of FIG. 3;
  • FIG. 6 represents an exemplary implementation of a third operation of FIG. 3,
  • FIG. 7 represents an exemplary implementation of an operation of FIG. 2;
  • FIG. 8 represents a part of an operation of FIG.
  • FIGS. 9 to 13 represent exemplary implementations of functions of FIG. 8,
  • FIG. 14 represents an exemplary implementation of an operation of FIG. 2,
  • FIG. 15 represents an exemplary implementation of an operation of FIG. 2;
  • FIG. 16 another exemplary implementation of a function of FIG. 8, and
  • FIG. 17 represents a circuit whose simulation by the tool of the invention is described as an example.
  • FIG. 1 represents a schematic view of an electric circuit simulator 2 according to the invention.
  • the simulator 2 comprises a constructor 4, a library 6, and a simulation engine 8.
  • the simulation engine 8 comprises a gearbox 10 and an exploration mechanism 12.
  • the manufacturer 4 receives circuit data to be simulated 14.
  • the data 14 comprises a description of the components that make up the circuit, as well as their interconnections in this circuit.
  • the data 14 also includes simulation parameters, as well as an initial state of the circuit. As will be seen below, this initial state can be complete or partial.
  • the constructor 4 calls the library 6 and retrieves the equations and other characteristics for each of the data components 14.
  • the constructor 4 calculates a representation or model 16 of the circuit from the data taken from the library 6 and interconnections of the data 14.
  • the model 16 is then transmitted to the simulation engine 8, which will perform the actual simulation of the circuit.
  • the model 16 is a representation of the circuit by a set of vectors in which component identifiers are stored, and not their associated values. Indeed, these components can have complex behaviors, that only the simulation engine 8 will be able to deal adequately.
  • the gearbox 10 performs a time discretization of the model 16, so as to obtain a set of equations whose unknowns are the state parameters of the circuit.
  • This set of equations will then be designated by the term temporally discretized representation.
  • the purpose of this discretization is to reduce the set of dynamic equations to a set of algebraic equations implementing the simulation parameters at selected moments according to the simulation parameters.
  • the mechanism 12 starts from the initial state of the circuit, and operates in no time to determine the following states of this circuit. For this, at each time step, the mechanism 12 varies the state parameters of the circuit to obtain a solution that satisfies all the equations of the discretized representation.
  • the corresponding set of state parameters constitutes the state of the current circuit, and a new circuit state is calculated in the same way.
  • Each of the circuit states thus calculated is returned to a result file 18 for display and / or post-processing.
  • the simulation engine 8 stops when a condition which relates to the simulation time, or the state of the circuit is fulfilled.
  • FIG. 2 represents a general operating diagram of the simulator of FIG. 1.
  • the simulator receives the data necessary for the simulation.
  • these data are the description of the circuit to be simulated Cir., As well as initialization data Init_Par.
  • the data Init_Par comprise start state data of the circuit Cir. As will be seen later, this data may be incomplete, and require a first simulation loop to obtain a complete starting state.
  • these data may also include parameterization data for the simulation, such as stopping conditions, a simulation time step, convergence tolerances, size identifiers to be observed, and other such data. .
  • the constructor 4 uses the data Cir. to build the model 16 that will be used for simulation. The operation of this operation will be detailed with FIGS. 4 and 5.
  • the initial simulation state of the circuit is established in an operation 24.
  • This operation is optional and may be omitted, for example if the state provided in the Init_Par data is sufficiently complete.
  • a time counter t is initialized in an operation 26. This marks the beginning of the simulation loop carried out by the simulation engine 8. loop, the next state of the circuit is calculated from the current state in an operation 28, based on the model derived from the data 16.
  • This stop condition can for example relate to the total number of executions of the simulation loop, on a stability condition of the state of the circuit or on other conditions.
  • simulation end condition If the simulation end condition is fulfilled, then the simulation ends with an operation 32, and if not the next time step is simulated with an increment operation of 134 and the return to operation 28.
  • FIG. 3 represents a generic diagram of implementation of the creation of the model 16 by the controller 4.
  • this implementation includes three main operations.
  • a first operation 40 the data of the circuit Cir. are scanned to automatically determine the components whose parameters will serve as unknowns, as well as to initialize certain elements necessary to calculate the circuit model.
  • the model 16 is calculated.
  • the model 16 is a set of identifiers and associated memory spaces that are used by the simulation engine 8 to determine a state of the circuit at each time step.
  • the model 16 is therefore a kind of shell that the mechanism 8 fills and uses at each iteration.
  • This shell is a set of memory spaces that are selectively filled as described below.
  • the memory spaces required for the model 16 to allow execution of the simulation are reserved.
  • any non-regular element is described by a set of equations according to formula (24) of Appendix A. It will be noted that this non-regular element can be linear or not.
  • Formulas (26) and (28) explain the formulation of matrices N and F.
  • the notation indicates the portion of the matrix A whose columns correspond to the index k (which may be L, C, R, V or NS), and whose lines have indices contained in the vector N1 (defined in FIG. 5) .
  • the notation ⁇ k indicates this same portion, but whose lines have indices contained in the vector N2 (defined in FIG. 5).
  • the device of the invention makes it possible to perform this equation automatically, and then to simulate the circuit on the basis of this equation.
  • FIG. 4 represents an exemplary implementation of part of the operation 45.
  • This first part is a loop which begins in an operation 400 by unloading a component of the representation of the circuit Cir., And in an operation 402 by checking in the library 6 to determine if this component is non-regular and / or non-linear.
  • the vector Ins (k) receives the position index of this element in the vector z, and in an operation 406, the vector Lns (k) receives the index position of this element in the lambda vector.
  • FIG. 5 represents an exemplary implementation of a second part of the operation 45.
  • this operation aims to establish the vectors x and z which are the unknowns of the simulation, and to prepare some other vectors for the future.
  • the constructor receives the data Cir. Then, in an operation 502, a spanning tree ST is calculated for the capacitive branches of the circuit.
  • This tree as well as its complement N_ST in the set of capacitive branches, is computed by means of a function ST (), which takes the data Cir. as an argument and browsing them by calling the library 6 to determine the trees ST and N_ST.
  • the Applicant has discovered that the generation of the matrix N from an algorithm using the recovery tree makes it possible to obtain an invertible matrix on which the simulation according to the invention is based.
  • the vector x is initialized with the list of intensities of the inductive branches Ii, and with the list of voltages of the capacitive branches Uc of the circuit Cir.
  • the vectors x and z, the trees ST and N_ST are treated as stacks, and manipulated with functions of the type Push () and Pop (). This is indeed particularly practical. However, these elements could be implemented differently, and treated with different functions.
  • the vector z is initialized in an operation 506.
  • the vector z is initialized with the intensities of the voltage sources V, with the intensities of the non-inductive voltage controlled branches Iv, and the intensities of the non-regular components that can be nonlinear Ins.
  • the tree ST is successively depilated from an operation 510. From the resulting index k, a node 1 of the branch k is chosen in an operation 512. Then, in an operation 514, the node index 1 is stacked in a vector N1.
  • the branch index k is stacked in a vector C1.
  • the pair (1; k) is stacked in a vector M.
  • the vector M will be used with FIG. Kirchhoff's law running at node 1 will be written to characterize the dynamics of branch k.
  • the second loop then starts in 520 with unstacking of the N_ST tree.
  • the intensity of the index element k pared at operation 520 is stored in the vector z in an operation 522.
  • the index k is stacked in an operation 524 in a vector C2 which represents the branches for which the formulation of the dynamic current-intensity relationship of a capacitor will be stored in the matrix N.
  • a function Rest stores (or stacks) all the nodes of the data Cir. which have not been stored in Nl in an operation 526.
  • the operation 50 is then carried out from the vectors x and z obtained in the operation 45. Indeed, as we saw above, all the vectors useful for the simulation have dimensions directly related to those of x and z.
  • the matrix F will receive the data related to the functions f1 and f2 of the formula (26) of Appendix A.
  • the data of the function f1 will be stored in the index lines less than dim (x), and the data of function f2 will be stored in the following lines.
  • the matrices G and H will receive the data associated with the functions g and h of the formula (26) of Appendix A.
  • FIG. 6 represents an example of implementation of the operation 50. As we have seen above, this operation aims at establishing the vectors and matrices initialized at the operation 45, in order to obtain the model of the Cir circuit.
  • the inductive, capacitive elements of the list C1, capacitive list C2, the remaining elements of the list N2, the elements controlled voltage and finally the capacitive elements will be successively processed.
  • an index i is set to 0 (zero).
  • the index i is the line index, which will be incremented over the loops for each line.
  • an Ind () function that takes the data Cir. as argument is executed and returns a list L which includes the inductive elements of the circuit.
  • the first loop is executed, which comes to write the indices of these elements in a vector BCE to the index which corresponds to them.
  • This loop is based, as previously on the progressive unstacking of the list L (operation 604), followed by the writing in the BCE vector of the corresponding data (operation 606).
  • the vector BCE represents the indices of the rows of the matrix N in which we will write the constitutive branch equation of the component concerned.
  • the matrix N will receive the elements that define the inductance of each element concerned, and the matrix F will receive values associated with each element. This will be explained in Figure 10. Then, in an operation 608, the index i is incremented, and the list L is depilated again at 604. When the list L is empty, the operation 50 proceeds to the next loop, which is the processing of the components of the Cl list.
  • the vector KCL represents the line of N in which we will write Kirchhoff's law while running.
  • the matrix N will receive the capacity of each element, and the matrix F will receive values associated with each element. This will be explained with Figure 11.
  • the index i is incremented and the loop resumes at 610.
  • the operation 50 passes to the next loop, which is the processing of the components of the list C2.
  • the elements of the list C2 are the capacitive elements which are not described by a current law of Kirchhoff, but by their law of behavior.
  • This loop therefore comprises an unstacking operation 616, followed by an operation 618 of writing the index i in the vector BCE to the index of the component k, and an operation 620 of incrementation of the index i.
  • the loop starts with unstacking in an operation 622, followed by a write operation 624, the index i in the vector KCL at the index of the node k, and an operation 626 for incrementing the index i.
  • the operation 50 passes to the next loop, which is the processing of the components of the list B.
  • the loop begins with unstacking in an operation 628, followed by an operation 630 writing the index i in the vector BCE to the index of the component k, and an operation 632 for incrementing the index i.
  • the loop therefore starts with an unstacking in an operation 634, followed by an operation 636 writing the index i in the vector KVL to the index of the component k, and an operation 638 for incrementing the index i.
  • this model includes only reference indices to the elements of the library 6 and no scalars, and that these indices will be used to fill the matrices thereafter.
  • FIG. 7 represents a schematic view of the operation of the simulation engine 8 during a simulation loop.
  • the simulation engine 8 establishes the simulation of the CIR circuit. by establishing in successive time steps stable states of this circuit.
  • the loop of the simulation engine 8 for a time step t goes into an operation 70 of the model Mod_Shl establishes the operation 50, and the last determined state St [t-1] for the circuit.
  • the particular case of the first loop will be explained with Figure 15.
  • the gear 10 calls a function Stamp_Discr () with the model Mod_Shl 16 and the last simulated state St [t-1] of the circuit.
  • the operation 75 is the one in which the matrices N, F, G, and H are filled with scalar values.
  • the function Stamp_Discr () comes to fill the matrix by realizing a temporal discretization of the differential equations that it contains, so that, for example, Uk 'becomes Uk [t] -Uk [t-1 ], the instants t-1 and t being very close.
  • the values at time t-1 are taken from the state St [M].
  • the matrix N is filled, as well as the matrices F, G, and H in part. Then, the matrix N is inverted and the matrices F, G and H completed. These operations are shown in FIG.
  • Figure 8 shows the filling operations of the matrices before discretization. This filling is done in two loops. In a first loop, the representation of the circuit Cir. is successively depilated in an operation 800. Then, for each component, a function Stamp () is called with the index k of the component concerned.
  • Stamp () function is adapted to each type of component.
  • Figures 9 to 12 show examples for a resistor, inductance, capacitance and diode respectively.
  • Figure 9 shows the StampO function in the case of a resistor. It therefore starts from an operation 900 with the resistance R and the index k of this component. At the index k correspond two indices of node 11 and 12 which are the limits of the resistance k.
  • the value 1 / R is added to the coordinate index element (KCL (II); 11) of the matrix F.
  • the value -1 / R is added in the coordinate index element (KCL (II); 12) of the matrix F.
  • the value -1 / R is added to the coordinate index element (KCL (12); 11) of the matrix F.
  • the value 1 / R is added to the coordinate index element (KCL (12); 12) of the matrix F.
  • Figure 10 shows the StampO function in the case of an inductor. It therefore starts from an operation 1000 with the inductance L, the index k of this component and the index xk of the intensity of this inductance in the vector x. At the index k correspond two indices of node 11 and 12 which are the terminals of the inductance k.
  • the value 1 is added to the coordinate index element (BCE (k); 11) of the matrix F.
  • the value -1 is added to the coordinate index element (BCE (k); 12) of the matrix F.
  • the value 1 is added to the coordinate index element (KCL (11); xk) of the matrix F.
  • the value -1 is added to the coordinate index element (KCL (12); xk) of the matrix F.
  • Figure 11 shows the StampO function in the case of a capacity. It therefore starts from an operation 1100 with the capacitance C, the index k of this component, the index xk of the voltage of this capacitance in the vector x, and the index zk of the intensity of this capacitance in the vector zk (when k belongs to C2). At the index k correspond two indices of node 11 and 12 which are the limits of the capacity k.
  • This function comprises three first operations 1102, 1104 and 1106 for writing the Kirchhoff voltage law, and three tests as a function of the presence of the capacitance in the vectors N1, N2 and C2.
  • the value -1 is added to the coordinate index element (KVL (k); xk) of the matrix F.
  • the value 1 is added to the coordinate index element (KVL (k); 11) of the matrix F.
  • the value -1 is added to the coordinate index element (KVL (k); 12) of the matrix F.
  • an operation 1108 makes it possible to check whether the node 11 is in the list N1.
  • a second test is performed in an operation 1116 to check if the node 12 is in the list Nl.
  • the operations 1118 to 1122 are identical to the operations 1110 to 1114 but with the node 12.
  • Figure 12 shows the StampO function in the case of a diode. It therefore starts from an operation 1200 with the index k of this component, and the index zk of the intensity of this diode in the vector Ins. At the index k correspond two indexes of node 11 and 12 which are the terminals of the diode k.
  • the value x represents the size of the vector x
  • the value z represents the size of the vector z.
  • the value 1 is added to the coordinate index element (KCL (II); x + zk) of the matrix F.
  • the value -1 is added to the coordinate index element (KCL (12); x + zk) of the matrix F.
  • the value -1 is added to the coordinate index element (Ins (k); x + zk) of the matrix H. It will be noted that Ins (k) has been established with FIG.
  • the value 1 is added to the coordinate index element (KCL (II); x + z + Lns (k)) of the matrix H. It will be noted that Lns (k) has been established with Figure 4.
  • the value -1 is added to the coordinate index element (Lns (k); x + 11) of the matrix G.
  • the value 1 is added to the coordinate index element (Lns (k); x + 12) of the matrix F.
  • StampO function is presented as a single function. However, in the context of an implementation in object language, each component of the circuit can be treated as an instance of a class of components.
  • the StampO function is then a call to the method of each particular instance, the StampO variant method for each component class. Once the circuit has been fully stripped, the N matrix is complete and can be inverted. All elements of this matrix that have not been filled are initialized to 0.
  • the inversion of the matrix N is carried out in an operation 804.
  • the system x ' N ⁇ -l * f (x, z, t).
  • a function Fill () is called with KCL (Il) as argument.
  • the function Fill () has the function of seeking the expression of the missing intensity corresponding to KCL (II) by means of the inverted matrix Inv_N, and of storing the result in the matrix F in the line KCL (II).
  • a second test checks in an operation 1304 if KCL (12) is greater than the dimension of the vector x.
  • the matrices N, F, G and H are discretized as described above, and the function Stamp_Discr () returns a discretized model Discr_Mod which is used in a step 80 by the mechanism 12 to determine the next state of the circuit St [t ] by means of an Nxt () function.
  • Figure 14 shows an exemplary implementation of the Nxt () function.
  • the Nxt () function is a mechanism for solving the system described by the Discr_Mod model, and the input / output and inclusion (or domain delineation) equations.
  • this mechanism comprises two principles for finding a solution to this system:
  • the first loop goes linear Discr_Mod discretized model, solve the linearized discretized model system, and repeat this operation until reaching a stable state.
  • the second loop changes the starting point of the first loop if the solution obtained is not suitable.
  • the first loop thus goes into an operation 1400 of the reception of the discretized model Disc_Mod, of the initialization of a time step / index sa 1, and of the definition of the state St [t-1] as a temporary state of the circuit St_tmp (s) where s is 0 (zero).
  • the model Discr_Mod () is linearized to take into account the temporary state St_tmp (t-1) by means of a function Lin ().
  • the Lin () function makes it possible to simplify the expressions of all the non-linear elements in the Discr_Mod model.
  • Discr_Mod_l temporary linearized discrete model.
  • the mechanism 12 calls a Solve () function that solves this system of equations, by means of pivoting methods for example, or projection / splitting techniques.
  • index s is incremented in an operation 1408 and the first loop resumes in 1402, this time with the temporary state St_tmp (s) which has just been calculated as the starting point.
  • a test in an operation 1410 checks whether the state thus determined satisfies the input / output equations, the non-linearized Discr_Mod system, and the domain boundaries for non-regular elements.
  • St_tmp (s) is defined as the new simulated state of the circuit St [t], and returned as a result in a terminal operation 1412.
  • a function Shuf () is called in an operation 1414 to restart the first loop with a different starting point, from the reference state St [M].
  • the first loop resumes at 1402 with s reset to 1 (one), and the new state St_tpm (0) determined by the function Shuf ().
  • Operation 1416 calls an Enum () function.
  • the Enum () function is less efficient in terms of computation time than the linearization loop, but it implements so-called optimization methods, which will methodically explore the space of parameters defined by the domain boundaries, and gradually calculate a new state St [t] that optimally matches the solution of the system.
  • Such optimization methods include, but are not limited to, cutting projection methods, Newton's "semi-smooth” methods, or interior-based methods.
  • Figure 15 shows the particular case of the first state of the circuit. Indeed, for this state, there is no previous state.
  • This operation therefore starts in 1500 with a test that checks whether the state St [O] derived from the data Init_Par is complete. If this is the case, then no need for calculation, and the operation ends in 1502, the simulation can start from this state.
  • the matrix N is scalarly filled in the manner of the operation 75, by means of a function Stamp_0 ().
  • the function Stamp_0 () uses the model 16 Mod_Shl and the data Init_Par, to fill the system with the starting data, and without carrying out discretization, but by inverting the matrix N as described above.
  • Figure 16 shows the Stamp () function that is applied for a MOSFET transistor.
  • a transistor such as transistor 166 can be modeled according to the set of equations of formula (30) of Annex A. It starts from an operation 1600 with the index zk of the intensity of this component in the vector z, and the indices gk, sk and dk which are respectively the indices of the node of the grid, the source and the drain of the transistor.
  • the value x represents the size of the vector x
  • the value z represents the size of the vector z.
  • the value 1 is added to the coordinate index element (KCL (dk); x + zk) of the matrix F.
  • the value -1 is added to the coordinate index element (KCL (sk); x + zk) of the matrix F.
  • the value -1 is added to the coordinate index element (Ins (k), x + zk) of the matrix H.
  • Nbzh, NbIh, Nbzg and NbIg vectors are filled with values from formula (30). These vectors represent derivatives of the G and H vectors that are used by the solver to solve the system.
  • a value corresponding to the z-derivative of the IDS value of the formula (30) is added to the coordinate index element (Ins (k); gk) of the matrix Nbzh.
  • the z-derivative of the first member of the IDS value of the formula (30) is removed from the coordinate index element (Ins (k); sk) of the matrix Nbzh.
  • the z derivative of the second member of the IDS value of the formula (30) is removed from the coordinate index element (Ins (k); sk) of the matrix Nbzh.
  • the value -K / 2 * K (Vg-Vd-Vt) 2 is added in the coordinate index element (Ins (k), Lns (k) +1) of the matrix NbIh .
  • the value K / 2 * K (Vg-Vs-Vt) 2 is added in the coordinate index element (Ins (k), Lns (k) +3) of the matrix NbIh.
  • the value -1 is added to the coordinate index element (Lns (k) + 1, gk) of the matrix Nbzg.
  • the value -1 is added to the coordinate index element (Lns (k) +3, gk) of the matrix Nbzg.
  • the value 1 is added to the coordinate index element (Lns (k) +1, dk) of the matrix Nbzg.
  • the value 1 is added to the coordinate index element (Lns (k) +3, sk) of the matrix Nbzg.
  • the value 1 is added to the coordinate index element (Lns (k) +1, Lns (k)) of the matrix NbIg.
  • the value -1 is added to the coordinate index element (Lns (k) +1, Lns (k)) of the matrix NbIg.
  • the value 1 is added to the coordinate index element (Lns (k) +3, Lns (k) +2) of the matrix NbIg.
  • the value -1 is added to the coordinate index element (Lns (k) +2, Lns (k) +3) of the matrix NbIg.
  • FIG. 17 represents an example of a circuit that can be modeled thanks to the device of the invention.
  • This circuit comprises a voltage source 160, a capacitance bridge 162, a resistor 164, a MOSFET transistor 166, an inductor 168 and a resistor 170.
  • the capacitance bridge 162 is connected on the one hand to the voltage source 160 to a node 172, and on the other hand to the first resistor 164 and the gate of the transistor 166 by a node 174.
  • the capacitance bridge 162 comprises four capacitors C1, C2, C3, and C4, the capacitors C1 and C2 on the one hand and C3 and C4 on the other hand being arranged in series between the nodes 172 and 174.
  • Inductance 168 is connected on the one hand to the drain of transistor 166 and on the other hand to resistor 170.
  • the voltage source 160, the resistor 162, the source of the transistor 166 and the resistor 170 are connected to the earth.
  • the covering tree is (2,1) (2,4) (1,3), and the vectors M, Cl, C2, N1 and N2 obtained are according to formulas (38) to (46).
  • the invention described herein is therefore extremely advantageous for the simulation of many electrical circuits combining analog and digital elements. It finds a very particular application in switched circuits.
  • the invention is not limited to a theoretical framework.
  • the implementation of this framework posed many problems that determined the implementation described above.
  • the invention also relates to an electrical circuit simulation method comprising:
  • characteristics of the circuit components each with characteristics for simulating its behavior, at least some of which are associated with a dynamic equation, and / or an input / output equation with a domain delimitation expression defining the parameters possible status for the component concerned,

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

The invention relates to an electric circuit simulator, including: a library (6), including circuit components, each having characteristics suitable for simulating the behaviour thereof, at least some of which are associated with a dynamic equation, and/or an input/output equation with a domain delimitation expression defining the possible state parameters for the component in question; a builder (4), arranged so as to calculate a model (16) of a circuit from a representation of said circuit (14) by the components thereof and the interconnections of the latter, forming a triplet of sets of equations which relate to the dynamic equations, to the input/output equations, and to the domain-delimitations of said circuit, respectively; a solver (12), arranged to calculate a subsequent state of a circuit from the model thereof and a prior state; and a simulation engine (8), arranged to invoke the builder (4) with the representation of a circuit, and to run the solver (12) with the model resulting from an initial state of the circuit, and to repeat said execution according to the last subsequent calculated state until fulfilling a condition relating to the number of executions or to the last subsequent calculated state.

Description

Simulateur de circuit électrique amélioré Improved electrical circuit simulator

L'invention concerne la simulation des circuits électriques.The invention relates to the simulation of electrical circuits.

De nombreux outils ont été développés afin de modéliser les circuits électroniques. Ces outils permettent aux concepteurs de valider leurs dessins avant la production réelle.Many tools have been developed to model electronic circuits. These tools allow designers to validate their drawings before actual production.

Parmi ces outils, on distingue les outils de simulation analogique, les outils de simulation numérique, et les outils hybrides.These tools include analog simulation tools, numerical simulation tools, and hybrid tools.

Les outils de simulation numérique sont principalement adaptés à la simulation des composants numériques, lls fournissent une vue du fonctionnement assez « haut niveau », et leurs simulations ne permettent de tenir compte des interférences qui peuvent avoir lieu à « bas niveau », entre les composants analogiques qui réalisent les fonctions numériques.The numerical simulation tools are mainly adapted to the simulation of digital components, they provide a rather "high level" view of the operation, and their simulations do not allow to take into account the interferences that can take place at "low level", between the components analog devices that perform digital functions.

Les outils de simulation analogique sont adaptés à la simulation de circuits à partir de modèles du comportement physique de chacun des composants du circuit.Analog simulation tools are suitable for circuit simulation based on models of the physical behavior of each of the circuit components.

Parmi ces outils, SPICE est le plus utilisé et représente un standard qui est largement répandu. Cependant, les solutions fournies par SPICE, et plus généralement les outils de simulation analogique, dépendent de la convergence de la méthode de Newton-Raphson appliquée à une représentation du circuit concerné.Among these tools, SPICE is the most used and represents a standard that is widely used. However, the solutions provided by SPICE, and more generally the analog simulation tools, depend on the convergence of the Newton-Raphson method applied to a representation of the circuit concerned.

Et la méthode de Newton-Raphson supporte très mal les composants dont les caractéristiques sont non régulières et non linéaires.And the method of Newton-Raphson very poorly supports components whose characteristics are non-regular and non-linear.

Il en résulte que, pour des composants aussi simples et basiques qu'une diode, il est nécessaire de recourir à des artefacts de modélisation de ces composants, qui viennent bien évidemment détériorer la qualité de la simulation. Cela est particulièrement mal adapté pour la simulation de circuits de type mixte numérique-analogique, qui comprennent par nature des éléments non réguliers et non linéaires.As a result, for components as simple and basic as a diode, it is necessary to resort to modeling artifacts of these components, which obviously deteriorate the quality of the simulation. This is particularly unsuitable for the simulation of mixed digital-analog type circuits, which by their nature include non-regular and non-linear elements.

Les outils hybrides fonctionnent pour leur part en caractérisant un circuit ou une portion de circuit, et en utilisant une simulation analogique ou numérique en fonction de cette caractérisation. Ces outils sont chronophages et peu adaptés à la simulation de circuits électriques dès que ceux-ci commencent à être complexes. D'une manière générale, ces outils ont tendance à combiner les désavantages des outils de simulation numériques et analogiques, sans combiner réellement leurs avantages.Hybrid tools work for their part by characterizing a circuit or a portion of the circuit, and using an analog or digital simulation according to this characterization. These tools are time-consuming and poorly adapted to the simulation of electrical circuits as soon as they begin to be complex. In general, these tools tend to combine the disadvantages of digital and analog simulation tools, without actually combining their advantages.

L'invention vient améliorer la situation.The invention improves the situation.

À cet effet, l'invention propose un simulateur de circuit électrique comprenant : - une bibliothèque, comprenant des composants de circuit, chacun avec des caractéristiques permettant de simuler son comportement, dont certains au moins sont associés à une équation dynamique, et/ou une équation d'entrée/sortie avec une expression de délimitation de domaine définissant les paramètres d'état possibles pour le composant concerné, - un constructeur, agencé pour calculer un modèle d'un circuit, à partir d'une représentation de ce circuit par ses composants et leurs interconnexions, sous la forme d'un triplet de jeux d'équations qui portent respectivement sur les équations dynamiques, les équations d'entrée/sortie et les délimitations de domaine des composants de ce circuit, - un solveur, agencé pour calculer un état postérieur d'un circuit, à partir de son modèle et d'un état antérieur, etTo this end, the invention proposes an electric circuit simulator comprising: a library, comprising circuit components, each with characteristics that make it possible to simulate its behavior, at least some of which are associated with a dynamic equation, and / or one input / output equation with a domain delimitation expression defining the possible state parameters for the component concerned, - a constructor, arranged to calculate a model of a circuit, from a representation of this circuit by its components and their interconnections, in the form of a triplet of sets of equations which relate respectively to the dynamic equations, the input / output equations and the domain boundaries of the components of this circuit, - a solver, arranged to compute a posterior state of a circuit, from its model and from a previous state, and

- un moteur de simulation, agencé pour appeler le constructeur avec la représentation d'un circuit, et pour exécuter le solveur avec le modèle résultant à partir d'un état initial du circuit, et pour répéter cette exécution à partir du dernier état postérieur calculé jusqu'à remplir une condition portant sur le nombre d'exécutions ou sur le dernier état postérieur calculé. Comme on le verra par la suite, ce simulateur présente de nombreux avantages, dont une mise en équation automatique, et une simulation améliorée des circuits commutés.a simulation engine, arranged to call the constructor with the representation of a circuit, and to execute the solver with the resulting model from an initial state of the circuit, and to repeat this execution from the last calculated later state up to a condition relating to the number of executions or the last calculated later state. As will be seen later, this simulator has many advantages, including automatic equation, and improved simulation of switched circuits.

D'autres caractéristiques et avantages de l'invention apparaîtront mieux à la lecture de la description qui suit, tirée d'exemples donnés à titre illustratif et non limitatif, tirés des dessins sur lesquels :Other features and advantages of the invention will appear better on reading the following description, taken from examples given for illustrative and non-limiting purposes, taken from the drawings in which:

- la figure 1 représente une vue schématique d'un simulateur de circuit électrique selon l'invention,FIG. 1 represents a schematic view of an electric circuit simulator according to the invention,

- la figure 2 représente un diagramme de fonctionnement général du simulateur de la figure 1,FIG. 2 represents a general operating diagram of the simulator of FIG. 1,

- la figure 3 représente un diagramme de fonctionnement général du constructeur de la figure 1,FIG. 3 represents a general operating diagram of the manufacturer of FIG. 1,

- la figure 4 représente un exemple de mise en œuvre d'une partie de la deuxième opération de la figure 3, - la figure 5 représente un exemple de mise en œuvre d'une autre partie de la deuxième opération de la figure 3,FIG. 4 represents an exemplary implementation of part of the second operation of FIG. 3; FIG. 5 represents an example of implementation of another part of the second operation of FIG. 3;

- la figure 6 représente un exemple de mise en œuvre d'une troisième opération de la figure 3,FIG. 6 represents an exemplary implementation of a third operation of FIG. 3,

- la figure 7 représente un exemple de mise en œuvre d'une opération de la figure 2, - la figure 8 représente une partie d'une opération de la figure 7,FIG. 7 represents an exemplary implementation of an operation of FIG. 2; FIG. 8 represents a part of an operation of FIG.

- les figures 9 à 13 représentent des mises en œuvre en exemple de fonctions de la figure 8,FIGS. 9 to 13 represent exemplary implementations of functions of FIG. 8,

- la figure 14 représente un exemple de mise en œuvre d'une opération de la figure 2,FIG. 14 represents an exemplary implementation of an operation of FIG. 2,

- la figure 15 représente un exemple de mise en œuvre d'une opération de la figure 2, - la figure 16 une autre mise en œuvre en exemple d'une fonction de la figure 8, etFIG. 15 represents an exemplary implementation of an operation of FIG. 2; FIG. 16 another exemplary implementation of a function of FIG. 8, and

- la figure 17 représente un circuit dont la simulation par l'outil de l'invention est décrite en exemple.FIG. 17 represents a circuit whose simulation by the tool of the invention is described as an example.

Les dessins et la description ci-après contiennent, pour l'essentiel, des éléments de caractère certain. Ds pourront donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant. La présente description est de nature à faire intervenir des éléments susceptibles de protection par le droit d'auteur et/ou le copyright. Le titulaire des droits n'a pas d'objection à la reproduction à l'identique par quiconque du présent document de brevet ou de sa description, telle qu'elle apparaît dans les dossiers officiels. Pour le reste, il réserve intégralement ses droits.The drawings and the description below contain, for the most part, elements of a certain character. Thus, they can not only serve to better understand the present invention, but also contribute to its definition, if necessary. This description is likely to involve elements likely to be protected by copyright and / or copyright. The rights holder has no objection to the identical reproduction by anyone of this patent document or its description, as it appears in the official records. For the rest, he reserves his rights in full.

En outre, la description détaillée est augmentée de l'Annexe A, qui donne la formulation de certaines formules mathématiques mises en œuvre dans le cadre de l'invention. Cette Annexe est mise à part dans un but de clarification, et pour faciliter les renvois. Elle est partie intégrante de la description, et pourra donc non seulement servir à mieux faire comprendre la présente invention, mais aussi contribuer à sa définition, le cas échéant.In addition, the detailed description is augmented by Appendix A, which gives the formulation of certain mathematical formulas implemented in the context of the invention. This Annex is set aside for the purpose of clarification and to facilitate referrals. It is an integral part of the description, and can therefore not only serve to better understand the present invention, but also contribute to its definition, if any.

La figure 1 représente une vue schématique d'un simulateur de circuit électrique 2 selon l'invention.FIG. 1 represents a schematic view of an electric circuit simulator 2 according to the invention.

Le simulateur 2 comprend un constructeur 4, une bibliothèque 6, et un moteur de simulation 8. Le moteur de simulation 8 comprend un réducteur 10 et un mécanisme d'exploration 12.The simulator 2 comprises a constructor 4, a library 6, and a simulation engine 8. The simulation engine 8 comprises a gearbox 10 and an exploration mechanism 12.

Le constructeur 4 reçoit des données de circuit à simuler 14. Les données 14 comprennent une désignation des composants qui composent le circuit, ainsi que leurs interconnexions dans ce circuit. Les données 14 comprennent également des paramètres de simulation, ainsi qu'un état initial du circuit. Comme on le verra plus bas, cet état initial peut être complet ou partiel.The manufacturer 4 receives circuit data to be simulated 14. The data 14 comprises a description of the components that make up the circuit, as well as their interconnections in this circuit. The data 14 also includes simulation parameters, as well as an initial state of the circuit. As will be seen below, this initial state can be complete or partial.

Sur la base des données 14, le constructeur 4 appelle la bibliothèque 6 et récupère les équations et autres caractéristiques pour chacun des composants des données 14. Ensuite, le constructeur 4 calcule une représentation ou modèle 16 du circuit à partir des données tirées de la bibliothèque 6 et des interconnexions des données 14. Le modèle 16 est ensuite transmis au moteur de simulation 8, qui va réaliser la simulation à proprement parler du circuit. Comme on le verra plus bas, le modèle 16 est une représentation du circuit par un ensemble de vecteurs dans lesquels sont stockés des identifiants de composants, et non leurs valeurs associées. En effet, ces composants peuvent avoir des comportements complexes, que seul le moteur de simulation 8 sera apte à traiter de manière adéquate.On the basis of the data 14, the constructor 4 calls the library 6 and retrieves the equations and other characteristics for each of the data components 14. Next, the constructor 4 calculates a representation or model 16 of the circuit from the data taken from the library 6 and interconnections of the data 14. The model 16 is then transmitted to the simulation engine 8, which will perform the actual simulation of the circuit. As will be seen below, the model 16 is a representation of the circuit by a set of vectors in which component identifiers are stored, and not their associated values. Indeed, these components can have complex behaviors, that only the simulation engine 8 will be able to deal adequately.

Dans un premier temps, le réducteur 10 réalise une discrétisation temporelle du modèle 16, de manière à obtenir un jeu d'équations dont les inconnues sont les paramètres d'état du circuit.In a first step, the gearbox 10 performs a time discretization of the model 16, so as to obtain a set of equations whose unknowns are the state parameters of the circuit.

Ce jeu d'équations sera ensuite désigné par le terme représentation discrétisée temporellement. Le but de cette discrétisation est de réduire le jeu d'équations dynamiques à un jeu d'équations algébriques mettant en œuvre les paramètres de simulation à des moments choisis en fonction des paramètres de simulation.This set of equations will then be designated by the term temporally discretized representation. The purpose of this discretization is to reduce the set of dynamic equations to a set of algebraic equations implementing the simulation parameters at selected moments according to the simulation parameters.

Ensuite, le mécanisme 12 part de l'état initial du circuit, et opère par pas de temps pour déterminer les états suivants de ce circuit. Pour cela, à chaque pas de temps, le mécanisme 12 fait varier les paramètres d'état du circuit jusqu'à obtenir une solution qui satisfait à toutes les équations de la représentation discrétisée.Then, the mechanism 12 starts from the initial state of the circuit, and operates in no time to determine the following states of this circuit. For this, at each time step, the mechanism 12 varies the state parameters of the circuit to obtain a solution that satisfies all the equations of the discretized representation.

Une fois cette solution obtenue, le jeu de paramètres d'état correspondant constitue l'état du circuit courant, et un nouvel état de circuit est calculé de la même manière. Chacun des états de circuit ainsi calculés est renvoyé dans un fichier de résultats 18 pour affichage et/ou post-traitement.Once this solution is obtained, the corresponding set of state parameters constitutes the state of the current circuit, and a new circuit state is calculated in the same way. Each of the circuit states thus calculated is returned to a result file 18 for display and / or post-processing.

Le moteur de simulation 8 s'arrête lorsqu'une condition qui porte sur le temps de simulation, ou sur l'état du circuit est remplie.The simulation engine 8 stops when a condition which relates to the simulation time, or the state of the circuit is fulfilled.

La figure 2 représente un diagramme de fonctionnement général du simulateur de la figure 1. Dans une opération 20, le simulateur reçoit les données nécessaires à la simulation. Dans l'exemple décrit ici, ces données sont la description du circuit à simuler Cir., ainsi que des données d'initialisation Init_Par.FIG. 2 represents a general operating diagram of the simulator of FIG. 1. In an operation 20, the simulator receives the data necessary for the simulation. In the example described here, these data are the description of the circuit to be simulated Cir., As well as initialization data Init_Par.

Dans l'exemple décrit ici, les données Init_Par comprennent des données d'état de départ du circuit Cir. Comme on le verra par la suite, ces données peuvent être incomplètes, et nécessiter une première boucle de simulation pour obtenir un état de départ complet.In the example described here, the data Init_Par comprise start state data of the circuit Cir. As will be seen later, this data may be incomplete, and require a first simulation loop to obtain a complete starting state.

En outre, ces données peuvent également comprendre des données de paramétrage pour la simulation, comme des conditions d'arrêt, un pas de temps de simulation, des tolérances de convergence, des identifiants de grandeurs à observer, et d'autres données de ce type.In addition, these data may also include parameterization data for the simulation, such as stopping conditions, a simulation time step, convergence tolerances, size identifiers to be observed, and other such data. .

Dans une opération 22, le constructeur 4 utilise les données Cir. pour construire le modèle 16 qui va servir à la simulation. Le fonctionnement de cette opération sera détaillé avec les figures 4 et 5.In an operation 22, the constructor 4 uses the data Cir. to build the model 16 that will be used for simulation. The operation of this operation will be detailed with FIGS. 4 and 5.

Une fois le modèle 16 calculé, l'état initial de simulation du circuit est établi dans une opération 24.Once the model 16 has been calculated, the initial simulation state of the circuit is established in an operation 24.

Comme on l'a vu plus haut, il est rare que l'on connaisse l'état de chacun des éléments composant un circuit au moment où commence la simulation. Il est en effet plus probable que l'on connaisse un certain nombre d'entrées critiques, mais pas tous les états.As we have seen above, it is rare that we know the state of each of the elements composing a circuit at the moment when the simulation begins. It is indeed more likely that we know a number of critical inputs, but not all states.

Cette opération, détaillée avec la figure 15, est optionnelle et pourra être omise, par exemple si l'état fourni dans les données Init_Par est suffisamment complet.This operation, detailed with FIG. 15, is optional and may be omitted, for example if the state provided in the Init_Par data is sufficiently complete.

Ensuite, un compteur de temps t est initialisé dans une opération 26. Cela marque le début de la boucle de simulation réalisée par le moteur de simulation 8. Dans cette boucle, l'état suivant du circuit est calculé à partir de l'état courant dans une opération 28, sur la base du modèle tiré des données 16.Then, a time counter t is initialized in an operation 26. This marks the beginning of the simulation loop carried out by the simulation engine 8. loop, the next state of the circuit is calculated from the current state in an operation 28, based on the model derived from the data 16.

Une fois l'état suivant calculé, une condition d'arrêt de simulation est testée dans une opération 30. Cette condition d'arrêt peut par exemple porter sur le nombre total d'exécutions de la boucle de simulation, sur une condition de stabilité de l'état du circuit ou sur d'autres conditions.Once the next state has been calculated, a simulation stop condition is tested in an operation 30. This stop condition can for example relate to the total number of executions of the simulation loop, on a stability condition of the state of the circuit or on other conditions.

Si la condition de fin de simulation est remplie, alors la simulation se termine avec une opération 32, et sinon le prochain pas de temps est simulé avec une opération d'incrémentation de 134 et le retour à l'opération 28.If the simulation end condition is fulfilled, then the simulation ends with an operation 32, and if not the next time step is simulated with an increment operation of 134 and the return to operation 28.

La figure 3 représente un schéma générique de mise en œuvre de la création du modèle 16 par le contrôleur 4.FIG. 3 represents a generic diagram of implementation of the creation of the model 16 by the controller 4.

Comme on peut le voir, cette mise en œuvre comprend trois opérations principales.As can be seen, this implementation includes three main operations.

Dans une première opération 40, les données du circuit Cir. sont parcourues pour déterminer automatiquement les composants dont les paramètres vont servir d'inconnues, ainsi que pour initialiser certains éléments nécessaires au calcul du modèle du circuit.In a first operation 40, the data of the circuit Cir. are scanned to automatically determine the components whose parameters will serve as unknowns, as well as to initialize certain elements necessary to calculate the circuit model.

Dans une deuxième opération 45, le modèle 16 est calculé. Dans le mode de réalisation décrit, le modèle 16 est un ensemble d'identifiants et d'espaces mémoires associés qui sont utilisés par le moteur de simulation 8 pour déterminer un état du circuit à chaque pas de temps.In a second operation 45, the model 16 is calculated. In the embodiment described, the model 16 is a set of identifiers and associated memory spaces that are used by the simulation engine 8 to determine a state of the circuit at each time step.

Le modèle 16 est donc une sorte de coquille que le mécanisme 8 remplit et utilise à chaque itération. Cette coquille est un ensemble d'espaces mémoire qui sont remplis sélectivement comme cela est décrit dans la suite. Enfin, dans une troisième opération 50, les espaces mémoires nécessaires au modèle 16 pour permettre l'exécution de la simulation sont réservés.The model 16 is therefore a kind of shell that the mechanism 8 fills and uses at each iteration. This shell is a set of memory spaces that are selectively filled as described below. Finally, in a third operation 50, the memory spaces required for the model 16 to allow execution of the simulation are reserved.

À ce stade, il convient de reprendre le cadre théorique dans lequel s'inscrit l'invention.At this point, it is necessary to take up the theoretical framework in which the invention is inscribed.

Les dispositifs connus de l'art antérieur se basent sur ce qui est appelé « analyse nodale modifiée » (ou MNA, pour « Modified Nodal Analysis » en anglais).The known devices of the prior art are based on what is called "modified nodal analysis" (or MNA, for "Modified Nodal Analysis" in English).

Cette analyse des circuits permet d'établir un jeu d'équations selon la formule (10) de l'Annexe A. Les formules (12) à (16) explicitent les composantes de la formule (10).This circuit analysis makes it possible to establish a set of equations according to formula (10) of Appendix A. The formulas (12) to (16) explain the components of formula (10).

D'une manière générale, ces équations reviennent à décomposer le circuit en ses branches de nature inductives, capacitives, commandées en tension, commandées en courant, et à ordonner les équations tirées des lois de tension et d'intensité de Kirchhoff, ainsi que des lois propres à chacun des composants.In a general way, these equations return to decompose the circuit into its inductive, capacitive, voltage-controlled, current-controlled branches and to order the equations derived from Kirchhoff's voltage and intensity laws, as well as laws specific to each component.

Ces équations sont tirées en partie d'une matrice principale A qui reprend toutes les lois de Kirchhoff en courant selon la formule (18). La matrice A est alors vue selon la formule (20).These equations are drawn in part from a principal matrix A, which takes up all Kirchhoff laws by running according to formula (18). The matrix A is then seen according to formula (20).

Cependant, ces équations ne sont valables que pour des composants réguliers.However, these equations are only valid for regular components.

Les travaux de la Demanderesse ont permis de modifier ces équations, pour permettre d'intégrer ces éléments.The work of the Applicant has allowed to modify these equations, to allow to integrate these elements.

Pour cela, tout élément non régulier est décrit par un jeu d'équations selon la formule (24) de l'Annexe A. On notera que cet élément non régulier peut être linéaire ou pas.For this, any non-regular element is described by a set of equations according to formula (24) of Appendix A. It will be noted that this non-regular element can be linear or not.

La Demanderesse a ensuite introduit ces équations dans ceux tirés de la formule (10), et a réussi à établir la formule (26), qui correspond à l'analyse nodale modifiée en tenant compte des éléments non réguliers et non linéaires. Les formules (26) et (28) explicitent la formulation des matrices N et F. Dans ces formules, la notation

Figure imgf000011_0001
indique la portion de la matrice A dont les colonnes correspondent à l'indice k (qui peut être L, C, R, V ou NS), et dont les lignes ont des indices contenus dans le vecteur Nl (défini avec la figure 5). La notation Âk indique cette même portion, mais dont les lignes ont des indices contenus dans le vecteur N2 (défini avec la figure 5).The Applicant then introduced these equations into those derived from the formula (10), and succeeded in establishing the formula (26), which corresponds to the modified nodal analysis taking into account non-regular and non-linear elements. Formulas (26) and (28) explain the formulation of matrices N and F. In these formulas, the notation
Figure imgf000011_0001
indicates the portion of the matrix A whose columns correspond to the index k (which may be L, C, R, V or NS), and whose lines have indices contained in the vector N1 (defined in FIG. 5) . The notation  k indicates this same portion, but whose lines have indices contained in the vector N2 (defined in FIG. 5).

Le dispositif de l'invention permet de réaliser cette mise en équation de manière automatique, et de simuler ensuite le circuit sur la base de cette mise en équation.The device of the invention makes it possible to perform this equation automatically, and then to simulate the circuit on the basis of this equation.

La figure 4 représente un exemple de mise en œuvre d'une partie de l'opération 45.FIG. 4 represents an exemplary implementation of part of the operation 45.

Les opérations représentées sur cette figure visent à préparer un vecteur Ins et un vecteur Lns qui vont recevoir des paramètres qui permettent de prendre en compte les composants non réguliers et/ou non linéaires.The operations shown in this figure are intended to prepare a vector Ins and a vector Lns which will receive parameters that make it possible to take into account non-regular and / or non-linear components.

Cette première partie est une boucle qui commence dans une opération 400 par le dépilement d'un composant de la représentation du circuit Cir., et dans une opération 402 par la vérification dans la bibliothèque 6 pour déterminer si ce composant est non régulier et/ou non linéaire.This first part is a loop which begins in an operation 400 by unloading a component of the representation of the circuit Cir., And in an operation 402 by checking in the library 6 to determine if this component is non-regular and / or non-linear.

Si le composant est bien non régulier, alors dans une opération 404, le vecteur Ins(k) reçoit l'index de position de cet élément dans le vecteur z, et dans une opération 406, le vecteur Lns(k) reçoit l'index de position de cet élément dans le vecteur lambda.If the component is non-regular, then in an operation 404, the vector Ins (k) receives the position index of this element in the vector z, and in an operation 406, the vector Lns (k) receives the index position of this element in the lambda vector.

Lorsque le composant est régulier, ou une fois les opérations 404 et 406 exécutées, la boucle reprend en 400.When the component is regular, or after operations 404 and 406 are executed, the loop resumes at 400.

Lorsque tous les composants ont été dépilés, cette première partie se termine dans une opération 408. La figure 5 représente un exemple de mise en œuvre d'une deuxième partie de l'opération 45.When all the components have been unstacked, this first part ends in an operation 408. FIG. 5 represents an exemplary implementation of a second part of the operation 45.

Comme on l'a vu plus haut, cette opération vise à établir les vecteurs x et z qui sont les inconnues de la simulation, et à préparer certains autres vecteurs pour la suite.As we saw above, this operation aims to establish the vectors x and z which are the unknowns of the simulation, and to prepare some other vectors for the future.

Dans une opération 500, le constructeur reçoit les données Cir. Ensuite, dans une opération 502, un arbre de recouvrement ST est calculé pour les branches capacitives du circuit.In an operation 500, the constructor receives the data Cir. Then, in an operation 502, a spanning tree ST is calculated for the capacitive branches of the circuit.

Cet arbre, ainsi que son complémentaire N_ST dans l'ensemble des branches capacitives, est calculé au moyen d'une fonction ST(), qui prend les données Cir. comme argument et qui les parcourt en appelant la bibliothèque 6 pour déterminer les arbres ST et N_ST.This tree, as well as its complement N_ST in the set of capacitive branches, is computed by means of a function ST (), which takes the data Cir. as an argument and browsing them by calling the library 6 to determine the trees ST and N_ST.

De manière surprenante, la Demanderesse a découvert que la génération de la matrice N à partir d'un algorithme faisant appel à l'arbre de recouvrement permet d'obtenir une matrice inversible sur laquelle se base la simulation selon l'invention.Surprisingly, the Applicant has discovered that the generation of the matrix N from an algorithm using the recovery tree makes it possible to obtain an invertible matrix on which the simulation according to the invention is based.

D existe de nombreux algorithmes pour l'obtention des arbres de recouvrement, et l'homme du métier saura choisir une mise en œuvre appropriée.There are many algorithms for obtaining the recovery trees, and those skilled in the art will be able to choose an appropriate implementation.

Ensuite, dans une opération 504, le vecteur x est initialisé avec la liste des intensités des branches inductives Ii, et avec la liste des tensions des branches capacitives Uc du circuit Cir .Then, in an operation 504, the vector x is initialized with the list of intensities of the inductive branches Ii, and with the list of voltages of the capacitive branches Uc of the circuit Cir.

Cela est réalisé au moyen d'une fonction Push(), qui sert à empiler les données. On notera d'ailleurs que dans le mode de réalisation décrit, les vecteurs x et z, les arbres ST et N_ST, sont traités comme des piles, et manipulés avec des fonctions de type Push() et Pop(). Cela est en effet particulièrement pratique. Cependant, ces éléments pourraient être mis en œuvre différemment, et traités avec des fonctions différentes. Une fois les arbres ST et N_ST et le vecteur x initialisé, le vecteur z est initialisé dans une opération 506.This is done by means of a Push () function, which is used to stack the data. It will be noted moreover that in the embodiment described, the vectors x and z, the trees ST and N_ST, are treated as stacks, and manipulated with functions of the type Push () and Pop (). This is indeed particularly practical. However, these elements could be implemented differently, and treated with different functions. Once the trees ST and N_ST and the vector x initialized, the vector z is initialized in an operation 506.

Dans cette opération, le vecteur z est initialisé avec les intensités des sources de tension V, avec les intensités des branches commandées en tension non inductives Iv, et les intensités des composants non réguliers pouvant être non linéaires Ins.In this operation, the vector z is initialized with the intensities of the voltage sources V, with the intensities of the non-inductive voltage controlled branches Iv, and the intensities of the non-regular components that can be nonlinear Ins.

Enfin, dans une opération 508, une fonction Volt() stocke l'ensemble des branches du circuit Cir. qui ne sont pas dynamiques et commandées en tension dans le vecteur B. L'utilité de ce vecteur apparaîtra avec la figure 6.Finally, in an operation 508, a function Volt () stores all the branches of the circuit Cir. which are not dynamic and voltage-controlled in the vector B. The utility of this vector will appear with Figure 6.

Deux boucles sont alors initialisées successivement pour préparer l'opération 50.Two loops are then initialized successively to prepare the operation 50.

Dans la première boucle, l'arbre ST est dépilé successivement à partir d'une opération 510. À partir de l'indice k résultant, un nœud 1 de la branche k est choisi dans une opération 512. Ensuite, dans une opération 514, l'indice de nœud 1 est empilé dans un vecteur Nl.In the first loop, the tree ST is successively depilated from an operation 510. From the resulting index k, a node 1 of the branch k is chosen in an operation 512. Then, in an operation 514, the node index 1 is stacked in a vector N1.

Dans une opération 516 suivante, l'indice de branche k est empilé dans un vecteur Cl. Enfin, dans une opération 518, le couple (1 ; k) est empilé dans un vecteur M. Le vecteur M sera utilisé avec la figure 6. La loi de Kirchhoff en courant au nœud 1 sera écrite afin de caractériser la dynamique de la branche k.In a next operation 516, the branch index k is stacked in a vector C1. Finally, in an operation 518, the pair (1; k) is stacked in a vector M. The vector M will be used with FIG. Kirchhoff's law running at node 1 will be written to characterize the dynamics of branch k.

Une fois ces indices stockés, la boucle reprend en 510, jusqu'à ce que l'arbre ST soit vidé.Once these indices are stored, the loop resumes in 510, until the ST tree is emptied.

La deuxième boucle commence alors en 520 avec le dépilage de l'arbre N_ST. Dans cette boucle, l'intensité de l'élément de l'indice k dépilé à l'opération 520 est stocké dans le vecteur z dans une opération 522. Ensuite, l'indice k est empilé dans une opération 524 dans un vecteur C2 qui représente les branches pour lesquelles la formulation de la relation dynamique courant-intensité d'un condensateur va être stockée dans la matrice N.The second loop then starts in 520 with unstacking of the N_ST tree. In this loop, the intensity of the index element k pared at operation 520 is stored in the vector z in an operation 522. Next, the index k is stacked in an operation 524 in a vector C2 which represents the branches for which the formulation of the dynamic current-intensity relationship of a capacitor will be stored in the matrix N.

La boucle est alors réitérée en 520. Lorsque cette deuxième boucle se termine, une fonction Rest() stocke (ou empile) tous les nœuds des données Cir. qui n'ont été pas été stockés dans Nl dans une opération 526.The loop is then reiterated at 520. When this second loop ends, a function Rest () stores (or stacks) all the nodes of the data Cir. which have not been stored in Nl in an operation 526.

Enfin les listes Cl et C2 sont réunies dans une liste C qui reçoit donc tous les éléments capacitifs dans une opération 528. La liste C correspond à la liste de composants qui a servi à établir les arbres de recouvrement ST et N_ST. Enfin, l'opération 45 se termine en 530.Finally, the lists C1 and C2 are combined in a list C which therefore receives all the capacitive elements in an operation 528. The list C corresponds to the list of components which was used to establish the cover trees ST and N_ST. Finally, operation 45 ends in 530.

L'opération 50 est ensuite réalisée à partir des vecteurs x et z obtenus à l'opération 45. En effet, comme on l'a vu plus haut, tous les vecteurs utiles à la simulation ont des dimensions directement reliées à celles de x et z.The operation 50 is then carried out from the vectors x and z obtained in the operation 45. Indeed, as we saw above, all the vectors useful for the simulation have dimensions directly related to those of x and z.

Ainsi, les espaces mémoires correspondant à ces objets sont réservés dans cette opération comme suit :Thus, the memory spaces corresponding to these objects are reserved in this operation as follows:

Figure imgf000014_0001
Figure imgf000014_0001

En pratique, la matrice F va recevoir les données liées aux fonctions fl et f2 de la formule (26) de l'Annexe A. Les données de la fonction fl seront stockées dans les lignes d'indice inférieur à dim(x), et les données de la fonction f2 seront stockées dans les lignes suivantes. Les matrices G et H vont recevoir les données associées aux fonctions g et h de la formule (26) de l'Annexe A. La figure 6 représente un exemple de mise en œuvre de l'opération 50. Comme on l'a vu plus haut, cette opération vise à établir remplir les vecteurs et matrices initialisés à l'opération 45, pour permettre d'obtenir le modèle du circuit Cir.In practice, the matrix F will receive the data related to the functions f1 and f2 of the formula (26) of Appendix A. The data of the function f1 will be stored in the index lines less than dim (x), and the data of function f2 will be stored in the following lines. The matrices G and H will receive the data associated with the functions g and h of the formula (26) of Appendix A. FIG. 6 represents an example of implementation of the operation 50. As we have seen above, this operation aims at establishing the vectors and matrices initialized at the operation 45, in order to obtain the model of the Cir circuit.

Pour préparer le remplissage de la matrice N, plusieurs boucles successives vont être exécutées pour permettre de remplir les lignes en fonction des éléments identifiés.To prepare the filling of the matrix N, several successive loops will be executed to allow to fill the lines according to the identified elements.

Ainsi, les éléments inductifs, capacitifs de la liste Cl, capacitifs de la liste C2, les éléments restants de la liste N2, les éléments commandés en tension et enfin les éléments capacitifs vont être successivement traités.Thus, the inductive, capacitive elements of the list C1, capacitive list C2, the remaining elements of the list N2, the elements controlled voltage and finally the capacitive elements will be successively processed.

Tout commence avec une opération 600, dans laquelle un indice i est mis à 0 (zéro). L'indice i est l'indice de ligne, qui va être incrémenté au fil des boucles pour chaque ligne.Everything starts with an operation 600, in which an index i is set to 0 (zero). The index i is the line index, which will be incremented over the loops for each line.

Dans une opération 602, une fonction Ind() qui prend les données Cir. comme argument est exécutée et retourne une liste L qui comprend les éléments inductifs du circuit.In an operation 602, an Ind () function that takes the data Cir. as argument is executed and returns a list L which includes the inductive elements of the circuit.

Ensuite, la première boucle est exécutée, qui vient écrire les indices de ces éléments dans un vecteur BCE à l'indice qui leur correspond. Cette boucle est basée, comme précédemment sur le dépilage progressif de la liste L (opération 604), suivi de l'écriture dans le vecteur BCE des données correspondantes (opération 606). Le vecteur BCE représente les indices des lignes de la matrice N dans lesquelles on va écrire l'équation constitutive de branche du composant concerné.Then, the first loop is executed, which comes to write the indices of these elements in a vector BCE to the index which corresponds to them. This loop is based, as previously on the progressive unstacking of the list L (operation 604), followed by the writing in the BCE vector of the corresponding data (operation 606). The vector BCE represents the indices of the rows of the matrix N in which we will write the constitutive branch equation of the component concerned.

Dans le cas des éléments inductifs, la matrice N va recevoir les éléments qui définissent l'inductance de chaque élément concerné, et la matrice F va recevoir des valeurs associées à chaque élément. Cela sera explicité avec la figure 10. Ensuite, dans une opération 608, l'indice i est incrémenté, et la liste L est dépilée à nouveau en 604. Lorsque la liste L est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants de la liste Cl.In the case of inductive elements, the matrix N will receive the elements that define the inductance of each element concerned, and the matrix F will receive values associated with each element. This will be explained in Figure 10. Then, in an operation 608, the index i is incremented, and the list L is depilated again at 604. When the list L is empty, the operation 50 proceeds to the next loop, which is the processing of the components of the Cl list.

Ici encore, on commence dans une opération 610 par dépiler le vecteur M. Ensuite, dans une opération 612, l'indice i est empilé dans le vecteur KCL à l'indice qui correspond au nœud 1 du couple (k ; 1) qui a été dépilé du vecteur M.Here again, we begin in an operation 610 by unstacking the vector M. Then, in an operation 612, the index i is stacked in the vector KCL at the index corresponding to node 1 of the pair (k; 1) which has has been stripped of the vector M.

Le vecteur KCL représente la ligne de N dans laquelle on va écrire la loi de Kirchhoff en courant. Dans le cas des éléments capacitifs, la matrice N va recevoir la capacité de chaque élément, et la matrice F va recevoir des valeurs associées à chaque élément. Cela sera explicité avec la figure 11.The vector KCL represents the line of N in which we will write Kirchhoff's law while running. In the case of capacitive elements, the matrix N will receive the capacity of each element, and the matrix F will receive values associated with each element. This will be explained with Figure 11.

Ensuite, dans une opération 614, l'indice i est incrémenté et la boucle reprend en 610. Lorsque la liste M est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants de la liste C2.Then, in an operation 614, the index i is incremented and the loop resumes at 610. When the list M is empty, the operation 50 passes to the next loop, which is the processing of the components of the list C2.

Comme on l'a vu précédemment, les éléments de la liste C2 sont les éléments capacitifs qui ne sont pas décrits par une loi de Kirchhoff en courant, mais par leur loi de comportement.As we saw previously, the elements of the list C2 are the capacitive elements which are not described by a current law of Kirchhoff, but by their law of behavior.

Cette boucle comprend donc une opération de dépilage 616, suivie d'une opération 618 d'écriture l'indice i dans le vecteur BCE à l'indice du composant k, et d'une opération 620 d'incrémentation de l'indice i.This loop therefore comprises an unstacking operation 616, followed by an operation 618 of writing the index i in the vector BCE to the index of the component k, and an operation 620 of incrementation of the index i.

Lorsque la liste C2 est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants des données Cir. qui sont stockés dans la liste N2.When the list C2 is empty, the operation 50 proceeds to the next loop, which is the processing of the components of the data Cir. which are stored in the N2 list.

Là encore, la boucle commence par un dépilage dans une opération 622, suivi d'une opération 624 d'écriture l'indice i dans le vecteur KCL à l'indice du nœud k, et d'une opération 626 d'incrémentation de l'indice i. Lorsque la liste N2 est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants de la liste B.Again, the loop starts with unstacking in an operation 622, followed by a write operation 624, the index i in the vector KCL at the index of the node k, and an operation 626 for incrementing the index i. When the list N2 is empty, the operation 50 passes to the next loop, which is the processing of the components of the list B.

Là encore, la boucle commence par un dépilage dans une opération 628, suivi d'une opération 630 d'écriture l'indice i dans le vecteur BCE à l'indice du composant k, et d'une opération 632 d'incrémentation de l'indice i.Again, the loop begins with unstacking in an operation 628, followed by an operation 630 writing the index i in the vector BCE to the index of the component k, and an operation 632 for incrementing the index i.

Lorsque la liste B est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants de la liste C.When the list B is empty, the operation 50 passes to the next loop, which is the processing of the components of the list C.

II s'agit ici de rentrer les indices des composants correspondant aux lois de tension de Kirchhoff pour les éléments capacitifs. La boucle commence donc par un dépilage dans une opération 634, suivi d'une opération 636 d'écriture l'indice i dans le vecteur KVL à l'indice du composant k, et d'une opération 638 d'incrémentation de l'indice i.It is a question here of entering the indices of the components corresponding to the Kirchhoff voltage laws for the capacitive elements. The loop therefore starts with an unstacking in an operation 634, followed by an operation 636 writing the index i in the vector KVL to the index of the component k, and an operation 638 for incrementing the index i.

Enfin, l'opération 50 se termine en 640.Finally, operation 50 ends in 640.

À la fin, on obtient donc un ensemble de vecteurs qui vont, comme on va le voir avec les figures 7 à 13, permettre de remplir les matrices N, F, G, et H. Ces matrices correspondent à un jeu d'équations dynamiques, et un jeu de lois d'entrée/sortie pour les éléments non réguliers, et un jeu de loi d'inclusion, pour délimiter les valeurs des paramètres des éléments non réguliers.In the end, we obtain a set of vectors that will, as we will see in Figures 7 to 13, allow to fill the matrices N, F, G, and H. These matrices correspond to a set of dynamic equations , and a set of input / output laws for non-regular elements, and an inclusion law set, to delimit the values of the non-regular element parameters.

L'ensemble de ces éléments constitue le modèle 16 du circuit Cir. On notera qu'à ce stade, ce modèle ne comprend que des indices de référence vers les éléments de la bibliothèque 6 et pas de scalaires, et que ces indices serviront à remplir les matrices par la suite.All of these elements constitute the model 16 of the CIR circuit. Note that at this stage, this model includes only reference indices to the elements of the library 6 and no scalars, and that these indices will be used to fill the matrices thereafter.

La figure 7 représente une vue schématique du fonctionnement du moteur de simulation 8 lors d'une boucle de simulation. En fait, le moteur de simulation 8 établit la simulation du circuit Cir. en établissant par pas de temps successifs des états stables de ce circuit. La boucle du moteur de simulation 8 pour un pas de temps t part dans une opération 70 du modèle Mod_Shl établit à l'opération 50, et du dernier état déterminé St[t-1] pour le circuit. Le cas particulier de la première boucle sera explicité avec la figure 15.FIG. 7 represents a schematic view of the operation of the simulation engine 8 during a simulation loop. In fact, the simulation engine 8 establishes the simulation of the CIR circuit. by establishing in successive time steps stable states of this circuit. The loop of the simulation engine 8 for a time step t goes into an operation 70 of the model Mod_Shl establishes the operation 50, and the last determined state St [t-1] for the circuit. The particular case of the first loop will be explained with Figure 15.

Dans une opération 75, le réducteur 10 appelle une fonction Stamp_Discr() avec le modèle Mod_Shl 16 et le dernier état simulé St[t-1] du circuit.In an operation 75, the gear 10 calls a function Stamp_Discr () with the model Mod_Shl 16 and the last simulated state St [t-1] of the circuit.

L'opération 75 est celle dans laquelle les matrices N, F, G, et H sont remplies avec des valeurs scalaires.The operation 75 is the one in which the matrices N, F, G, and H are filled with scalar values.

Ainsi, à partir du modèle Mod_Shl, la fonction Stamp_Discr() vient remplir la matrice en réalisant une discrétisation temporelle des équations différentielles qu'elle contient, de sorte que, par exemple, Uk' devient Uk[t]-Uk[t-1], les instants t-1 et t étant très proches. Dans cette matrice, les valeurs à l'instant t-1 sont tirées de l'état St[M].Thus, from the Mod_Shl model, the function Stamp_Discr () comes to fill the matrix by realizing a temporal discretization of the differential equations that it contains, so that, for example, Uk 'becomes Uk [t] -Uk [t-1 ], the instants t-1 and t being very close. In this matrix, the values at time t-1 are taken from the state St [M].

Cette opération est également légèrement compliquée par le fait que la matrice N est simultanément inversée, comme cela apparaît avec la figure 8.This operation is also slightly complicated by the fact that the matrix N is simultaneously reversed, as appears with FIG.

En effet, comme on l'a vu plus haut, on est ici basé sur un système de type Nx' = f(x, z, t), et on a besoin d'inverser N pour récupérer les intensités dans les branches capacitives du vecteur Cl. Il est donc plus simple de réaliser l'inversion et la discrétisation en une seule et unique étape.Indeed, as we saw above, we are here based on a system of Nx '= f (x, z, t) type, and we need to invert N to recover the intensities in the capacitive branches of the vector Cl. It is therefore easier to perform the inversion and discretization in a single step.

En fait, dans un premier temps, la matrice N est remplie, ainsi que les matrices F, G, et H en partie. Ensuite, la matrice N est inversée et les matrices F, G et H complétées. Ces opérations sont représentées avec la figure 8.In fact, at first, the matrix N is filled, as well as the matrices F, G, and H in part. Then, the matrix N is inverted and the matrices F, G and H completed. These operations are shown in FIG.

Ensuite, les matrices ainsi obtenues sont discrétisées. La discrétisation qui est réalisée ici est faite selon la méthode de Moreau, qui est décrite dans l'article « Numerical Methods for Nonsmooth Dynamical Systems » de Acary et Brogliato édité chez Springer Verlag. La figure 8 représente les opérations de remplissage des matrices avant discrétisation. Ce remplissage est réalisé en deux boucles. Dans une première boucle, la représentation du circuit Cir. est successivement dépilée dans une opération 800. Ensuite, pour chaque composant, une fonction Stamp() est appelée avec l'indice k du composant concerné.Then, the matrices thus obtained are discretized. The discretization that is carried out here is done according to the method of Moreau, which is described in the article "Numerical Methods for Nonsmooth Dynamical Systems" of Acary and Brogliato published by Springer Verlag. Figure 8 shows the filling operations of the matrices before discretization. This filling is done in two loops. In a first loop, the representation of the circuit Cir. is successively depilated in an operation 800. Then, for each component, a function Stamp () is called with the index k of the component concerned.

La fonction Stamp() est adaptée à chaque type de composant. Les figures 9 à 12 représentent des exemples pour respectivement une résistance, une inductance, une capacité et une diode.The Stamp () function is adapted to each type of component. Figures 9 to 12 show examples for a resistor, inductance, capacitance and diode respectively.

La figure 9 représente la fonction StampO dans le cas d'une résistance. Elle part donc d'une opération 900 avec la résistance R et l'indice k de ce composant. À l'indice k correspondent deux indices de nœud 11 et 12 qui sont les bornes de la résistance k.Figure 9 shows the StampO function in the case of a resistor. It therefore starts from an operation 900 with the resistance R and the index k of this component. At the index k correspond two indices of node 11 and 12 which are the limits of the resistance k.

Dans une opération 902, la valeur 1/R est ajoutée à l'élément d'indice de coordonnées (KCL(Il) ; 11) de la matrice F.In an operation 902, the value 1 / R is added to the coordinate index element (KCL (II); 11) of the matrix F.

Dans une opération 904, la valeur -1/R est ajoutée dans l'élément d'indice de coordonnées (KCL(Il) ; 12) de la matrice F.In an operation 904, the value -1 / R is added in the coordinate index element (KCL (II); 12) of the matrix F.

Dans une opération 906, la valeur -1/R est ajoutée à l'élément d'indice de coordonnées (KCL(12) ; 11) de la matrice F.In an operation 906, the value -1 / R is added to the coordinate index element (KCL (12); 11) of the matrix F.

Dans une opération 908, la valeur 1/R est ajoutée à l'élément d'indice de coordonnées (KCL(12) ; 12) de la matrice F.In an operation 908, the value 1 / R is added to the coordinate index element (KCL (12); 12) of the matrix F.

Ensuite, la fonction se termine en 910. Ces opérations reflètent l'écriture de l'intensité qui traverse la résistance k vu des nœuds 11 et 12 respectivement.Then, the function ends in 910. These operations reflect the writing of the intensity that traverses the resistance k seen from the nodes 11 and 12 respectively.

La figure 10 représente la fonction StampO dans le cas d'une inductance. Elle part donc d'une opération 1000 avec l'inductance L, l'indice k de ce composant et l'indice xk de l'intensité de cette inductance dans le vecteur x. À l'indice k correspondent deux indices de nœud 11 et 12 qui sont les bornes de l'inductance k.Figure 10 shows the StampO function in the case of an inductor. It therefore starts from an operation 1000 with the inductance L, the index k of this component and the index xk of the intensity of this inductance in the vector x. At the index k correspond two indices of node 11 and 12 which are the terminals of the inductance k.

Dans une opération 1002, la valeur L est ajoutée à l'élément d'indice de coordonnées (BCE(k) ; xk) de la matrice N. Cela revient à écrire la tension U = L*I' pour l'inductance k.In an operation 1002, the value L is added to the coordinate index element (BCE (k); xk) of the matrix N. This amounts to writing the voltage U = L * I 'for the inductance k.

Dans une opération 1004, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (BCE(k) ; 11) de la matrice F.In an operation 1004, the value 1 is added to the coordinate index element (BCE (k); 11) of the matrix F.

Dans une opération 1006, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (BCE(k) ; 12) de la matrice F.In an operation 1006, the value -1 is added to the coordinate index element (BCE (k); 12) of the matrix F.

Dans une opération 1008, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (KCL(11) ; xk) de la matrice F.In an operation 1008, the value 1 is added to the coordinate index element (KCL (11); xk) of the matrix F.

Dans une opération 1010, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KCL(12) ; xk) de la matrice F.In an operation 1010, the value -1 is added to the coordinate index element (KCL (12); xk) of the matrix F.

Ensuite, la fonction se termine en 1012. Ces opérations reflètent l'écriture de l'intensité qui traverse l'inductance k vu des nœuds 11 et 12 respectivement.Then, the function ends in 1012. These operations reflect the writing of the intensity which passes through the inductance k seen from the nodes 11 and 12 respectively.

La figure 11 représente la fonction StampO dans le cas d'une capacité. Elle part donc d'une opération 1100 avec la capacité C, l'indice k de ce composant, l'indice xk de la tension de cette capacité dans le vecteur x, et l'indice zk de l'intensité de cette capacité dans le vecteur zk (lorsque k appartient à C2). À l'indice k correspondent deux indices de nœud 11 et 12 qui sont les bornes de la capacité k.Figure 11 shows the StampO function in the case of a capacity. It therefore starts from an operation 1100 with the capacitance C, the index k of this component, the index xk of the voltage of this capacitance in the vector x, and the index zk of the intensity of this capacitance in the vector zk (when k belongs to C2). At the index k correspond two indices of node 11 and 12 which are the limits of the capacity k.

Cette fonction comprend trois premières opérations 1102, 1104 et 1106 pour écrire la loi de tension de Kirchhoff, et trois tests en fonction de la présence de la capacité dans les vecteurs Nl, N2 et C2. Dans l'opération 1102, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KVL(k) ; xk) de la matrice F.This function comprises three first operations 1102, 1104 and 1106 for writing the Kirchhoff voltage law, and three tests as a function of the presence of the capacitance in the vectors N1, N2 and C2. In operation 1102, the value -1 is added to the coordinate index element (KVL (k); xk) of the matrix F.

Dans l'opération 1104, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (KVL(k) ; 11 ) de la matrice F.In operation 1104, the value 1 is added to the coordinate index element (KVL (k); 11) of the matrix F.

Dans l'opération 1106, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KVL(k) ; 12) de la matrice F.In operation 1106, the value -1 is added to the coordinate index element (KVL (k); 12) of the matrix F.

Ensuite, dans le premier test, une opération 1108 permet de vérifier si le nœud 11 est dans la liste Nl.Then, in the first test, an operation 1108 makes it possible to check whether the node 11 is in the list N1.

Si c'est le cas, dans une opération 1110, on vérifie si k est dans la liste C2. Si c'est le cas, la valeur C est ajoutée à l'élément d'indice de coordonnées (KCL(Il) ; xk) de la matrice N dans une opération 1112. Sinon, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KVL(k) ; 12) de la matrice F dans une opération 1114.If this is the case, in an operation 1110, it is checked whether k is in the list C2. If this is the case, the value C is added to the coordinate index element (KCL (II); xk) of the matrix N in an operation 1112. Otherwise, the value -1 is added to the element coordinate index (KVL (k); 12) of the matrix F in an operation 1114.

Ces opérations reviennent à écrire la loi d'intensité de Kirchhoff ou la loi de tension de la capacité en fonction de son appartenance à Cl ou C2.These operations amount to writing the Kirchhoff intensity law or the voltage law of the capacitance as a function of its Cl or C2 membership.

Ensuite, ou lorsque le test de l'opération 1108 est négatif, un deuxième test est réalisé dans une opération 1116 pour vérifier si le nœud 12 est dans la liste Nl.Then, or when the test of the operation 1108 is negative, a second test is performed in an operation 1116 to check if the node 12 is in the list Nl.

Les opérations 1118 à 1122 sont identiques aux opérations 1110 à 1114 mais avec le nœud 12.The operations 1118 to 1122 are identical to the operations 1110 to 1114 but with the node 12.

Enfin le dernier test de l'opération 1124 prévoit d'écrire les équations de branches de la capacité avec les opérations 1126 et 1128 si la capacité appartient à la liste C2.Finally, the last test of the operation 1124 provides for writing the branch equations of the capacity with the operations 1126 and 1128 if the capacity belongs to the list C2.

Enfin, la fonction se termine dans une opération 1130 (ou directement si la capacité n'appartenait pas à la liste C2). La figure 12 représente la fonction StampO dans le cas d'une diode. Elle part donc d'une opération 1200 avec l'indice k de ce composant, et l'indice zk de l'intensité de cette diode dans le vecteur Ins. À l'indice k correspondent deux indices de nœud 11 et 12 qui sont les bornes de la diode k. Par ailleurs, dans ce qui suit, la valeur x représente la taille du vecteur x, et la valeur z représente la taille du vecteur z.Finally, the function ends in an operation 1130 (or directly if the capacity did not belong to the list C2). Figure 12 shows the StampO function in the case of a diode. It therefore starts from an operation 1200 with the index k of this component, and the index zk of the intensity of this diode in the vector Ins. At the index k correspond two indexes of node 11 and 12 which are the terminals of the diode k. On the other hand, in the following, the value x represents the size of the vector x, and the value z represents the size of the vector z.

Dans une opération 1202, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (KCL(Il) ; x+zk) de la matrice F.In an operation 1202, the value 1 is added to the coordinate index element (KCL (II); x + zk) of the matrix F.

Dans une opération 1204, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KCL(12) ; x+zk) de la matrice F.In an operation 1204, the value -1 is added to the coordinate index element (KCL (12); x + zk) of the matrix F.

Dans une opération 1206, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Ins(k) ; x+zk) de la matrice H. On notera que Ins(k) a été établi avec la figure 4.In an operation 1206, the value -1 is added to the coordinate index element (Ins (k); x + zk) of the matrix H. It will be noted that Ins (k) has been established with FIG.

Dans une opération 1208, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (KCL(Il) ; x+z+Lns(k)) de la matrice H. On notera que Lns(k) a été établi avec la figure 4.In an operation 1208, the value 1 is added to the coordinate index element (KCL (II); x + z + Lns (k)) of the matrix H. It will be noted that Lns (k) has been established with Figure 4.

Dans une opération 1210, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Lns(k) ; x+11) de la matrice G.In an operation 1210, the value -1 is added to the coordinate index element (Lns (k); x + 11) of the matrix G.

Dans une opération 1212, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (Lns(k) ; x+12) de la matrice F.In an operation 1212, the value 1 is added to the coordinate index element (Lns (k); x + 12) of the matrix F.

On notera qu'ici, la fonction StampO est présentée comme une unique fonction. Cependant, dans le cadre d'une mise en œuvre en langage objet, chaque composant du circuit peut être traité comme une instance d'une classe de composants.Note that here, the StampO function is presented as a single function. However, in the context of an implementation in object language, each component of the circuit can be treated as an instance of a class of components.

La fonction StampO est alors un appel de la méthode de chaque instance particulière, la méthode StampO variant pour chaque classe de composant. Une fois que le circuit a été entièrement dépilé, la matrice N est complète et peut être inversée. Tous les éléments de cette matrice qui n'ont pas été remplis sont initialisés à 0.The StampO function is then a call to the method of each particular instance, the StampO variant method for each component class. Once the circuit has been fully stripped, the N matrix is complete and can be inverted. All elements of this matrix that have not been filled are initialized to 0.

L'inversion de la matrice N est réalisée dans une opération 804. Ainsi, une fois la matrice N inversée, on peut obtenir le système x' = NΛ-l*f(x, z, t).The inversion of the matrix N is carried out in an operation 804. Thus, once the matrix N is inverted, one can obtain the system x '= N Λ -l * f (x, z, t).

Ce système est ensuite exploité dans une deuxième boucle. Dans cette boucle, la liste des éléments capacitifs C est dépilée dans une opération 806, et dans une opération 808 une fonction Stamp_inv() est appelée avec k comme argument. Cette fonction est décrite avec la figure 13.This system is then exploited in a second loop. In this loop, the list of capacitive elements C is depilated in an operation 806, and in an operation 808 a function Stamp_inv () is called with k as an argument. This function is described in Figure 13.

Comme on peut le voir sur cette figure, dans une première opération 1300 d'un test pour vérifier si KCL(Il) est supérieur à la dimension du vecteur x.As can be seen in this figure, in a first operation 1300 of a test to check if KCL (II) is greater than the dimension of the vector x.

Si c'est le cas, alors dans une opération 1302, une fonction Fill() est appelée avec comme argument KCL(Il). La fonction Fill() a pour fonction de chercher l'expression de l'intensité manquante correspondant à KCL(Il) au moyen de la matrice inversée Inv_N, et de stocker le résultat dans la matrice F dans la ligne KCL(Il).If this is the case, then in an operation 1302, a function Fill () is called with KCL (Il) as argument. The function Fill () has the function of seeking the expression of the missing intensity corresponding to KCL (II) by means of the inverted matrix Inv_N, and of storing the result in the matrix F in the line KCL (II).

Sinon un second test vérifie dans une opération 1304 si KCL(12) est supérieur à la dimension du vecteur x.Otherwise a second test checks in an operation 1304 if KCL (12) is greater than the dimension of the vector x.

Si c'est le cas, alors la fonction Fill() est appelée dans une opération 1306 avec KCL(12) comme argument, et le résultat est stocké dans la ligne KCL(12) de la matrice F.If this is the case, then the function Fill () is called in an operation 1306 with KCL (12) as an argument, and the result is stored in the KCL line (12) of the matrix F.

Enfin après l'opération 1302, 1306 ou 1304 si les deux tests sont négatifs, la fonction se termine en 1308.Finally after the operation 1302, 1306 or 1304 if the two tests are negative, the function ends in 1308.

Ensuite, les matrices N, F, G et H sont discrétisées comme décrit plus haut, et la fonction Stamp_Discr() retourne un modèle discrétisé Discr_Mod qui est utilisé dans une étape 80 par le mécanisme 12 pour déterminer le prochain état du circuit St[t] au moyen d'une fonction Nxt(). La figure 14 représente une mise en œuvre en exemple de la fonction Nxt(). La fonction Nxt() est un mécanisme de résolution du système décrit par le modèle Discr_Mod, et les équations d'entrée/sortie et d'inclusion (ou de délimitation de domaine).Then, the matrices N, F, G and H are discretized as described above, and the function Stamp_Discr () returns a discretized model Discr_Mod which is used in a step 80 by the mechanism 12 to determine the next state of the circuit St [t ] by means of an Nxt () function. Figure 14 shows an exemplary implementation of the Nxt () function. The Nxt () function is a mechanism for solving the system described by the Discr_Mod model, and the input / output and inclusion (or domain delineation) equations.

Dans l'exemple décrit ici, ce mécanisme comprend deux principes de recherche de solution à ce système :In the example described here, this mechanism comprises two principles for finding a solution to this system:

- un principe de recherche par linéarisation du système, eta principle of research by linearization of the system, and

- l'utilisation de méthodes non linéaires directs (de type Newton généralisé).- the use of direct nonlinear methods (generalized Newton type).

La recherche par linéarisation étant la plus rapide, c'est ce principe qui est d'abord mis en œuvre. Pour cela, deux boucles sont imbriquées.Since linearization is the fastest search, it is this principle that is first implemented. For this, two loops are nested.

La première boucle va linéaire le modèle discrétisé Discr_Mod, résoudre le système du modèle discrétisé linéarisé, et répéter cette opération jusqu'à atteindre un état stable.The first loop goes linear Discr_Mod discretized model, solve the linearized discretized model system, and repeat this operation until reaching a stable state.

La deuxième boucle vient changer le point de départ de la première boucle si la solution obtenue ne convient pas.The second loop changes the starting point of the first loop if the solution obtained is not suitable.

La première boucle part ainsi dans une opération 1400 de la réception du modèle discrétisé Disc_Mod, de l'initialisation d'un pas de temps/indice s a 1, et de la définition de l'état St[t-1] comme état temporaire du circuit St_tmp(s) où s vaut 0 (zéro).The first loop thus goes into an operation 1400 of the reception of the discretized model Disc_Mod, of the initialization of a time step / index sa 1, and of the definition of the state St [t-1] as a temporary state of the circuit St_tmp (s) where s is 0 (zero).

Dans une opération 1402, le modèle Discr_Mod() est linéarisé pour tenir compte de l'état temporaire St_tmp(t-1) au moyen d'une fonction Lin(). La fonction Lin() permet de simplifier les expressions de tous les éléments restés non linéaires dans le modèle Discr_Mod.In an operation 1402, the model Discr_Mod () is linearized to take into account the temporary state St_tmp (t-1) by means of a function Lin (). The Lin () function makes it possible to simplify the expressions of all the non-linear elements in the Discr_Mod model.

Le résultat est stocké dans un modèle discrétisé linéarisé temporaire Discr_Mod_l(s). À ce stade, on a donc un système d'équations linéaires et un ensemble de lois de délimitations de domaines, comme tout a été linéarisé. Ensuite, dans une opération 1404, le mécanisme 12 appelle une fonction Solve() qui vient résoudre ce système d'équations, au moyen de méthodes de pivotage par exemple, ou de techniques de projection/découpage (projection splitting en anglais).The result is stored in a Discr_Mod_l (s) temporary linearized discrete model. At this point, we have a system of linear equations and a set of domain delimitation laws, as everything has been linearized. Then, in an operation 1404, the mechanism 12 calls a Solve () function that solves this system of equations, by means of pivoting methods for example, or projection / splitting techniques.

Enfin, dans une opération 1406, l'état St_tmp(s) ainsi calculé est comparé à l'état temporaire dont il est issu St_tmp(s-1), pour voir si le système est stabilisé.Finally, in an operation 1406, the state St_tmp (s) thus calculated is compared to the temporary state from which it is derived St_tmp (s-1), to see if the system is stabilized.

Si ça n'est pas le cas, alors l'indice s est incrémenté dans une opération 1408 et la première boucle reprend en 1402, avec cette fois l'état temporaire St_tmp(s) qui vient d'être calculé comme point de départ.If this is not the case, then the index s is incremented in an operation 1408 and the first loop resumes in 1402, this time with the temporary state St_tmp (s) which has just been calculated as the starting point.

Si c'est le cas, alors un test dans une opération 1410 vérifie si l'état ainsi déterminé satisfait les équations d'entrée/sortie, le système Discr_Mod non linéarisé, et les délimitations de domaine pour les éléments non réguliers.If this is the case, then a test in an operation 1410 checks whether the state thus determined satisfies the input / output equations, the non-linearized Discr_Mod system, and the domain boundaries for non-regular elements.

Si c'est le cas, alors St_tmp(s) est défini comme le nouvel état simulé du circuit St[t], et renvoyé comme résultat dans une opération terminale 1412.If so, then St_tmp (s) is defined as the new simulated state of the circuit St [t], and returned as a result in a terminal operation 1412.

Si ce n'est pas le cas, une fonction Shuf() est appelée dans une opération 1414 pour relancer la première boucle avec un point de départ différent, à partir de l'état de référence St[M].If this is not the case, a function Shuf () is called in an operation 1414 to restart the first loop with a different starting point, from the reference state St [M].

Si cela a déjà été réalisé plusieurs fois sans obtenir de solution satisfaisante pour St_tmp(s), alors la deuxième boucle est lancée avec une opération 1416.If this has already been done several times without obtaining a satisfactory solution for St_tmp (s), then the second loop is started with an operation 1416.

Sinon, la première boucle reprend en 1402 avec s réinitialisé à 1 (un), et le nouvel état St_tpm(0) déterminé par la fonction Shuf().Otherwise, the first loop resumes at 1402 with s reset to 1 (one), and the new state St_tpm (0) determined by the function Shuf ().

L'opération 1416 appelle une fonction Enum(). La fonction Enum() est moins performante en termes de temps de calcul que la boucle de linéarisation, mais elle met en œuvre des méthodes dites d'optimisation, qui vont explorer méthodique l'espace des paramètres défini par les délimitations de domaine, et calculer progressivement un nouvel état St[t] qui correspond de manière optimale à la solution du système.Operation 1416 calls an Enum () function. The Enum () function is less efficient in terms of computation time than the linearization loop, but it implements so-called optimization methods, which will methodically explore the space of parameters defined by the domain boundaries, and gradually calculate a new state St [t] that optimally matches the solution of the system.

De telles méthodes d'optimisation incluent, sans limitation, les méthodes de projection découpage, les méthodes dites « semi-smooth » de Newton, ou encore les méthodes à base de point intérieur.Such optimization methods include, but are not limited to, cutting projection methods, Newton's "semi-smooth" methods, or interior-based methods.

Une fois que la fonction Enum() a déterminé le nouvel état St[t], l'opération 80 se termine alors en 1412.Once the function Enum () has determined the new state St [t], the operation 80 then ends in 1412.

La figure 15 représente le cas particulier du premier état du circuit. En effet, pour cet état, il n'existe pas d'état précédent.Figure 15 shows the particular case of the first state of the circuit. Indeed, for this state, there is no previous state.

Cette opération part donc en 1500 d'un test qui vérifie si l'état St[O] tiré des données Init_Par est complet. Si c'est le cas, alors pas de besoin de calcul, et l'opération se termine en 1502, la simulation pouvant partir de cet état.This operation therefore starts in 1500 with a test that checks whether the state St [O] derived from the data Init_Par is complete. If this is the case, then no need for calculation, and the operation ends in 1502, the simulation can start from this state.

Sinon, dans une opération 1504, la matrice N est remplie de manière scalaire à la manière de l'opération 75, au moyen d'une fonction Stamp_0(). La fonction Stamp_0() utilise le modèle 16 Mod_Shl et les données Init_Par, pour remplir le système avec les données de départ, et sans réaliser de discrétisation, mais en inversant la matrice N comme décrit plus haut.Otherwise, in an operation 1504, the matrix N is scalarly filled in the manner of the operation 75, by means of a function Stamp_0 (). The function Stamp_0 () uses the model 16 Mod_Shl and the data Init_Par, to fill the system with the starting data, and without carrying out discretization, but by inverting the matrix N as described above.

Ensuite, dans une opération 1506, la fonction Solve() décrite avec la figure 14 est appelée sur le modèle Disc_Mod résultant pour calculer l'état St[O], et l'opération se termine en 1502.Then, in an operation 1506, the Solve () function described with Fig. 14 is called on the resulting Disc_Mod model to compute the state St [O], and the operation ends at 1502.

La figure 16 représente la fonction Stamp() qui est appliquée pour un transistor de type MOSFET.Figure 16 shows the Stamp () function that is applied for a MOSFET transistor.

La Demanderesse a établi qu'un transistor comme le transistor 166 peut être modélisé selon le jeu d'équations de la formule (30) de l'Annexe A. Elle part d'une opération 1600 avec l'indice zk de l'intensité de ce composant dans le vecteur z, et les indices gk, sk et dk qui sont respectivement les indices du nœud de la grille, de la source et du drain du transistor. Par ailleurs, dans ce qui suit, la valeur x représente la taille du vecteur x, et la valeur z représente la taille du vecteur z.The Applicant has established that a transistor such as transistor 166 can be modeled according to the set of equations of formula (30) of Annex A. It starts from an operation 1600 with the index zk of the intensity of this component in the vector z, and the indices gk, sk and dk which are respectively the indices of the node of the grid, the source and the drain of the transistor. On the other hand, in the following, the value x represents the size of the vector x, and the value z represents the size of the vector z.

Dans une opération 1602, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (KCL(dk) ; x+zk) de la matrice F.In an operation 1602, the value 1 is added to the coordinate index element (KCL (dk); x + zk) of the matrix F.

Dans une opération 1604, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (KCL(sk) ; x+zk) de la matrice F.In an operation 1604, the value -1 is added to the coordinate index element (KCL (sk); x + zk) of the matrix F.

Dans une opération 1606, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Ins(k), x+zk) de la matrice H.In an operation 1606, the value -1 is added to the coordinate index element (Ins (k), x + zk) of the matrix H.

Ensuite dans des opérations 1608 à 1632, des vecteurs Nbzh, NbIh, Nbzg et NbIg sont remplis avec des valeurs tirées de la formule (30). Ces vecteurs représentent des dérivées des vecteurs G et H qui sont utilisés par le solveur pour résoudre le système.Then in operations 1608 to 1632, Nbzh, NbIh, Nbzg and NbIg vectors are filled with values from formula (30). These vectors represent derivatives of the G and H vectors that are used by the solver to solve the system.

Dans l'opération 1608, une valeur correspondant à la dérivée en z de la valeur IDS de la formule (30) est ajoutée à l'élément d'indice de coordonnées (Ins(k) ; gk) de la matrice Nbzh.In the operation 1608, a value corresponding to the z-derivative of the IDS value of the formula (30) is added to the coordinate index element (Ins (k); gk) of the matrix Nbzh.

Dans l'opération 1610, la dérivée en z du premier membre de la valeur IDS de la formule (30) est retiré à l'élément d'indice de coordonnées (Ins(k) ; sk) de la matrice Nbzh.In the operation 1610, the z-derivative of the first member of the IDS value of the formula (30) is removed from the coordinate index element (Ins (k); sk) of the matrix Nbzh.

Dans l'opération 1612, la dérivée en z du deuxième membre de la valeur IDS de la formule (30) est retirée à l'élément d'indice de coordonnées (Ins(k) ; sk) de la matrice Nbzh.In the operation 1612, the z derivative of the second member of the IDS value of the formula (30) is removed from the coordinate index element (Ins (k); sk) of the matrix Nbzh.

Dans l'opération 1614, la valeur -K/2*K(Vg-Vd-Vt)2 est ajoutée dans l'élément d'indice de coordonnées (Ins(k), Lns(k)+1) de la matrice NbIh. Dans l'opération 1616, la valeur K/2*K(Vg-Vs-Vt)2 est ajoutée dans l'élément d'indice de coordonnées (Ins(k), Lns(k)+3) de la matrice NbIh.In the operation 1614, the value -K / 2 * K (Vg-Vd-Vt) 2 is added in the coordinate index element (Ins (k), Lns (k) +1) of the matrix NbIh . In the operation 1616, the value K / 2 * K (Vg-Vs-Vt) 2 is added in the coordinate index element (Ins (k), Lns (k) +3) of the matrix NbIh.

Dans l'opération 1618, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+l, gk) de la matrice Nbzg.In the operation 1618, the value -1 is added to the coordinate index element (Lns (k) + 1, gk) of the matrix Nbzg.

Dans l'opération 1620, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+3, gk) de la matrice Nbzg.In the operation 1620, the value -1 is added to the coordinate index element (Lns (k) +3, gk) of the matrix Nbzg.

Dans l'opération 1622, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+1, dk) de la matrice Nbzg.In operation 1622, the value 1 is added to the coordinate index element (Lns (k) +1, dk) of the matrix Nbzg.

Dans l'opération 1624, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+3, sk) de la matrice Nbzg.In the operation 1624, the value 1 is added to the coordinate index element (Lns (k) +3, sk) of the matrix Nbzg.

Dans l'opération 1626, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+1, Lns(k)) de la matrice NbIg.In the operation 1626, the value 1 is added to the coordinate index element (Lns (k) +1, Lns (k)) of the matrix NbIg.

Dans l'opération 1628, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+1 , Lns(k)) de la matrice NbIg.In the operation 1628, the value -1 is added to the coordinate index element (Lns (k) +1, Lns (k)) of the matrix NbIg.

Dans l'opération 1630, la valeur 1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+3, Lns(k)+2) de la matrice NbIg.In the operation 1630, the value 1 is added to the coordinate index element (Lns (k) +3, Lns (k) +2) of the matrix NbIg.

Dans l'opération 1632, la valeur -1 est ajoutée à l'élément d'indice de coordonnées (Lns(k)+2, Lns(k)+3) de la matrice NbIg.In the operation 1632, the value -1 is added to the coordinate index element (Lns (k) +2, Lns (k) +3) of the matrix NbIg.

Enfin, la fonction se termine dans une opération 1634.Finally, the function ends in an operation 1634.

La figure 17 représente un exemple d'un circuit qui peut être modélisé grâce au dispositif de l'invention. Ce circuit comprend une source de tension 160, un pont de capacités 162, une résistance 164, un transistor de type MOSFET 166, une inductance 168 et une résistance 170.FIG. 17 represents an example of a circuit that can be modeled thanks to the device of the invention. This circuit comprises a voltage source 160, a capacitance bridge 162, a resistor 164, a MOSFET transistor 166, an inductor 168 and a resistor 170.

Le pont de capacités 162 est relié d'une part à la source de tension 160 à un nœud 172, et d'autre part à la première résistance 164 et à la grille du transistor 166 par un nœud 174.The capacitance bridge 162 is connected on the one hand to the voltage source 160 to a node 172, and on the other hand to the first resistor 164 and the gate of the transistor 166 by a node 174.

Le pont de capacités 162 comprend quatre capacités Cl, C2, C3, et C4, les capacités Cl et C2 d'une part et C3 et C4 d'autre part étant disposées en série entre les nœuds 172 et 174.The capacitance bridge 162 comprises four capacitors C1, C2, C3, and C4, the capacitors C1 and C2 on the one hand and C3 and C4 on the other hand being arranged in series between the nodes 172 and 174.

L'inductance 168 est reliée d'une part au drain du transistor 166 et d'autre part à la résistance 170.Inductance 168 is connected on the one hand to the drain of transistor 166 and on the other hand to resistor 170.

La source de tension 160, la résistance 162, la source du transistor 166 et la résistance 170 sont reliées à la terre.The voltage source 160, the resistor 162, the source of the transistor 166 and the resistor 170 are connected to the earth.

En appliquant les opérations décrites avec les figures 4 et 5, on obtient tout d'abord un vecteur Ins selon la formule (32) de l'Annexe A avec Ins≈l et Lns=4, et des vecteurs x et z respectivement selon les formules (34) et (36).By applying the operations described in FIGS. 4 and 5, we obtain first of all a vector Ins according to formula (32) of Annex A with Ins≈l and Lns = 4, and vectors x and z respectively according to formulas (34) and (36).

L'arbre de recouvrement est (2,1) (2,4) (1,3), et les vecteurs M, Cl, C2, Nl et N2 obtenus sont selon les formules (38) à (46).The covering tree is (2,1) (2,4) (1,3), and the vectors M, Cl, C2, N1 and N2 obtained are according to formulas (38) to (46).

Ensuite, l'application des opérations de la figure 6 donne les vecteurs BCE selon la formule (48), KCL selon la formule (50), et KVL selon la formule (52).Next, applying the operations of FIG. 6 gives the ECB vectors according to formula (48), KCL according to formula (50), and KVL according to formula (52).

L'application des opérations des figures 7 et 8 donnent les matrices N selon la formule (54) et F selon la formule (56). Ces opérations appliquées au transistor (166) donnent les vecteurs selon les formules (58) à (64).The application of the operations of FIGS. 7 and 8 gives the matrices N according to formula (54) and F according to formula (56). These operations applied to transistor (166) give the vectors according to formulas (58) to (64).

Enfin, l'inversion de la matrice N permet de récupérer l'équation de l'intensité dans le nœud 3, selon la formule (66), et l'application de l'opération 808 donne le remplissage selon l'équation (68).Finally, the inversion of the matrix N makes it possible to recover the equation of the intensity in the node 3, according to the formula (66), and the application of the operation 808 gives the filling according to the equation (68) .

Les vecteurs F, N, Nbzh, NbIh, Nbzg et NbIg ainsi obtenus permettront de simuler le circuit, et serviront de données de modèle pour le réducteur 10 et le solveur 12.The vectors F, N, Nbzh, NbIh, Nbzg and NbIg thus obtained will make it possible to simulate the circuit, and will serve as model data for the reducer 10 and the solver 12.

L'invention décrite dans la présente est donc extrêmement avantageuse pour la simulation de nombreux circuits électriques mêlant des éléments analogiques et numériques. Elle trouve une application toute particulière dans les circuits commutés.The invention described herein is therefore extremely advantageous for the simulation of many electrical circuits combining analog and digital elements. It finds a very particular application in switched circuits.

Cela est obtenu notamment par l'introduction d'un nouveau cadre d'analyse des circuits et de leurs composants qui permet de tenir compte d'une manière fidèle des éléments non réguliers.This is achieved in particular by the introduction of a new framework for analyzing circuits and their components which makes it possible to accurately take into account non-regular elements.

À cet effet, on notera que les délimitations de domaines qui font appel à des éléments mathématiques qui sont appelés règles d'inclusion.For this purpose, it will be noted that domain boundaries that involve mathematical elements that are called inclusion rules.

Ces éléments permettent, avec les équations d'entrée/sortie, de modéliser de manière très fidèle la plupart des composants connus à ce jour.These elements make it possible, with the input / output equations, to model very faithfully most of the components known to date.

Pour plus d'informations sur les règles d'inclusion et leur fonctionnement, la Demanderesse recommande de consulter « Variational Analysis » de R.T. ROCKAFELLAR & J.B. WETS. Springer Verlag, 1998, ou "Finite-dimensional Variational Inequalities and Complementarity Problems" de F. FACCHINEI & J. S. PANG., volume I & II of Springer Séries in Opérations Research, Springer Verlag, 2003. Bien que l'invention a prouvé être particulièrement efficace dans son application aux circuits commutés, elle est entièrement adaptée à la simulation d'autres types de circuit comme les circuits analogiques classiques. Dans ce cadre elle représente une amélioration importante par rapport aux simulateurs connus.For more information on inclusion rules and how they work, the Applicant recommends consulting RT ROCKAFELLAR & JB WETS Variational Analysis. Springer Verlag, 1998, or "Finite-dimensional Variational Inequalities and Complementarity Problems" by F. FACCHINEI & JS PANG., Volume I & II of Springer Series in Operations Research, Springer Verlag, 2003. Although the invention has proved to be particularly effective in its application to switched circuits, it is fully adapted to the simulation of other types of circuit such as conventional analog circuits. In this context it represents a significant improvement over the known simulators.

L'invention ne se limite néanmoins pas à un cadre théorique. La mise en œuvre de ce cadre a posé de nombreux problèmes qui ont déterminé la mise en œuvre décrite plus haut.The invention is not limited to a theoretical framework. The implementation of this framework posed many problems that determined the implementation described above.

II est néanmoins compris que de nombreuses variantes de mise-en-œuvre des éléments décrits dans la présente pourront être envisagées sans s'écarter de la portée des revendications qui suivent.It is understood, however, that many alternative embodiments of the elements described herein may be contemplated without departing from the scope of the following claims.

En outre, l'invention concerne également un procédé de simulation de circuit électrique comprenant :In addition, the invention also relates to an electrical circuit simulation method comprising:

- recevoir des données de description d'un circuit électronique comprenant une représentation de ce circuit par ses composants et leurs interconnexions, ainsi que des données d'état initial de ce circuit,receiving description data of an electronic circuit comprising a representation of this circuit by its components and their interconnections, as well as initial state data of this circuit,

- obtenir des caractéristiques des composants de circuit, chacun avec des caractéristiques permettant de simuler son comportement, dont certains au moins sont associés à une équation dynamique, et/ou une équation d'entrée/sortie avec une expression de délimitation de domaine définissant les paramètres d'état possibles pour le composant concerné,obtaining characteristics of the circuit components, each with characteristics for simulating its behavior, at least some of which are associated with a dynamic equation, and / or an input / output equation with a domain delimitation expression defining the parameters possible status for the component concerned,

- calculer un modèle d'un circuit, à partir de ladite représentation du circuit et des caractéristiques de ses composants, sous la forme d'un triplet de jeux d'équations qui portent respectivement sur les équations dynamiques, les équations d'entrée/sortie et les délimitations de domaine des composants de ce circuit,calculating a model of a circuit, from said representation of the circuit and the characteristics of its components, in the form of a triplet of sets of equations which respectively relate to the dynamic equations, the input / output equations and the domain boundaries of the components of this circuit,

- calculer répétitivement un état postérieur d'un circuit, à partir de son modèle et d'un état antérieur du circuit, jusqu'à remplir une condition portant sur le nombre d'exécutions ou sur le dernier état postérieur calculé.

Figure imgf000032_0001
Figure imgf000033_0001
Figure imgf000034_0001
repetitively calculating a posterior state of a circuit, from its model and from an earlier state of the circuit, until it fulfills a condition relating to the number of executions or the last calculated posterior state.
Figure imgf000032_0001
Figure imgf000033_0001
Figure imgf000034_0001

Figure imgf000034_0002
Figure imgf000034_0002

Figure imgf000035_0002
Figure imgf000035_0002

Figure imgf000035_0001
Figure imgf000035_0001

Claims

Revendications claims 1. Simulateur de circuit électrique comprenant :An electric circuit simulator comprising: - une bibliothèque (6), comprenant des composants de circuit, chacun avec des caractéristiques permettant de simuler son comportement, dont certains au moins sont associés à une équation dynamique, et/ou une équation d'entrée/sortie avec une expression de délimitation de domaine définissant les paramètres d'état possibles pour le composant concerné,a library (6), comprising circuit components, each with characteristics for simulating its behavior, at least some of which are associated with a dynamic equation, and / or an input / output equation with a delimitation expression of domain defining the possible state parameters for the component concerned, - un constructeur (4), agencé pour calculer un modèle (16) d'un circuit, à partir d'une représentation de ce circuit (14) par ses composants et leurs interconnexions, sous la forme d'un triplet de jeux d'équations qui portent respectivement sur les équations dynamiques, les équations d'entrée/sortie et les délimitations de domaine des composants de ce circuit,a constructor (4), arranged to calculate a model (16) of a circuit, from a representation of this circuit (14) by its components and their interconnections, in the form of a game triplet; equations that relate respectively to the dynamic equations, the input / output equations and the domain boundaries of the components of this circuit, - un solveur (12), agencé pour calculer un état postérieur d'un circuit, à partir de son modèle et d'un état antérieur, eta solver (12), arranged to calculate a posterior state of a circuit, from its model and from a previous state, and - un moteur de simulation (8), agencé pour appeler le constructeur (4) avec la représentation d'un circuit, et pour exécuter le solveur (12) avec le modèle résultant à partir d'un état initial du circuit, et pour répéter cette exécution à partir du dernier état postérieur calculé jusqu'à remplir une condition portant sur le nombre d'exécutions ou sur le dernier état postérieur calculé.a simulation engine (8), arranged to call the constructor (4) with the representation of a circuit, and to execute the solver (12) with the resulting model from an initial state of the circuit, and to repeat this execution from the last calculated later state until fulfilling a condition relating to the number of executions or the last calculated posterior state. 2. Simulateur selon la revendication 1, dans lequel le moteur de simulation (8) comprend un réducteur (10), agencé pour calculer une forme discrétisée temporellement du jeu d'équations dynamiques d'un modèle donné, ainsi qu'un mécanisme qui explore le jeu de délimitations de domaines, jusqu'à définir un état qui satisfait le jeu d'équations d'entrée/sortie et le jeu d'équations discrétisées.2. Simulator according to claim 1, wherein the simulation engine (8) comprises a gearbox (10), arranged to calculate a temporally discretized form of the set of dynamic equations of a given model, as well as a mechanism that explores the set of domain boundaries, to define a state that satisfies the set of input / output equations and the set of discretized equations. 3. Simulateur selon la revendication 2, dans lequel le réducteur opère selon la méthode de Moreau pour calculer ladite forme discrétisée temporellement.3. Simulator according to claim 2, wherein the reducer operates according to Moreau's method for calculating said temporally discretized form. 4. Simulateur selon la revendication 2 ou 3, dans lequel le réducteur réalise une linéarisation de ladite forme discrétisée temporellement. 4. Simulator according to claim 2 or 3, wherein the reducer performs a linearization of said temporally discretized form. 5. Simulateur selon l'une des revendications 2 à 4, dans lequel le mécanisme utilise des méthodes de pivotage, ou des techniques de projection/découpage. 5. Simulator according to one of claims 2 to 4, wherein the mechanism uses pivoting methods, or projection techniques / cutting.
PCT/FR2010/000387 2009-05-29 2010-05-25 Electric circuit simulator Ceased WO2010136668A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0902605A FR2946166A1 (en) 2009-05-29 2009-05-29 IMPROVED ELECTRIC CIRCUIT SIMULATOR
FR0902605 2009-05-29

Publications (1)

Publication Number Publication Date
WO2010136668A1 true WO2010136668A1 (en) 2010-12-02

Family

ID=41679476

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2010/000387 Ceased WO2010136668A1 (en) 2009-05-29 2010-05-25 Electric circuit simulator

Country Status (2)

Country Link
FR (1) FR2946166A1 (en)
WO (1) WO2010136668A1 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0742526A1 (en) * 1995-05-12 1996-11-13 Hewlett-Packard Company Method for simulating a circuit
US20040243373A1 (en) * 2003-06-02 2004-12-02 Jeannick Sercu Electromagnetic/circuit co-simulation and co-optimization with parametric layout components

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0742526A1 (en) * 1995-05-12 1996-11-13 Hewlett-Packard Company Method for simulating a circuit
US20040243373A1 (en) * 2003-06-02 2004-12-02 Jeannick Sercu Electromagnetic/circuit co-simulation and co-optimization with parametric layout components

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
AL-JUNAID H ET AL: "Analogue and mixed-signal extension to SystemC", IEE PROCEEDINGS: CIRCUITS DEVICES AND SYSTEMS, INSTITUTION OF ELECTRICAL ENGINEERS, STENVENAGE, GB, vol. 152, no. 6, 9 December 2005 (2005-12-09), pages 682 - 690, XP006025498, ISSN: 1350-2409 *
R.T. ROCKAFELLAR & J.B. WETS.: "Variational Analysis", 1998, SPRINGER VERLAG

Also Published As

Publication number Publication date
FR2946166A1 (en) 2010-12-03

Similar Documents

Publication Publication Date Title
EP1470501B1 (en) Methods and systems for searching and associating information resources such as web pages
FR2820919A1 (en) METHOD AND DEVICE FOR TRACKING NETWORK CONNECTIVITY USING A DESIGN HIERARCHY
FR2966265A1 (en) REDUCED GIBBS SAMPLER FOR FACTORIZING MODELS OF CLEAR SUBJECTS AND DISCRETE MATRICES
WO2009007550A2 (en) Computer device for simulating a set of objects in interaction and corresponding method
CN111461211A (en) Feature extraction method for lightweight target detection and corresponding detection method
Al-Kaff et al. Exploring chaos and bifurcation in a discrete prey–predator based on coupled logistic map
FR3025334A1 (en) METHOD FOR OPTIMIZATION DETERMINATION OF A MULTI-HEART ARCHITECTURE
WO2010136668A1 (en) Electric circuit simulator
WO2008007026A2 (en) Method of modelling the switching activity of a digital circuit
CN113313419B (en) Method and device for acquiring window change risk of information system
EP3317783A1 (en) Device for processing data for additive manufacturing
WO1995008154A1 (en) Automatic proving method
EP0855038B1 (en) Component network diagnosis, using modelling by bands
FR3110725A1 (en) Computer-implemented method for generating generalized additive models
Aït-Ameur et al. Validation et vérification formelles de systèmes interactifs multi-modaux fondées sur la preuve
FR3131413A1 (en) Neural network with on-the-fly generation of network parameters
CN102054070B (en) Method and device for calculating branch current of direct-current working point of nonlinear circuit
WO2012035272A1 (en) Multipurpose calculation computing device
FR3122002A1 (en) METHOD AND DEVICE FOR CALCULATING AN INFLUENCE INDICATOR OF A CRITERION FOR OBTAINING A SCORE IN A MULTI-CRITERIA DECISION-MAKING SYSTEM
Henderson PDE constrained kernel regression methods
EP0401926B1 (en) Processing method, neural network structure and computer for simulating said neural network structure
WO2012017177A2 (en) Multipurpose calculation computing device
EP3042321A1 (en) Method of analysing behaviour of an integrated circuit implemented by computer and comprising the selecting of paths on the basis of several criteria belonging to different types
de M Goulart Estimation of structured tensor models and recovery of low-rank tensors
Covanov Multiplication algorithms: bilinear complexity and fast asymptotic methods

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10723651

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10723651

Country of ref document: EP

Kind code of ref document: A1