[go: up one dir, main page]

WO2010136668A1 - Simulateur de circuit électrique - Google Patents

Simulateur de circuit électrique 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
English (en)
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/fr
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

Un simulateur de circuit électrique comprend : - 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é, - 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, - un solveur (12), agencé pour calculer un état postérieur d'un circuit, à partir de son modèle et d'un état antérieur, et - 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é.

Description

Simulateur de circuit électrique amélioré
L'invention concerne la simulation des circuits électriques.
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.
Parmi ces outils, on distingue les outils de simulation analogique, les outils de simulation numérique, et les outils hybrides.
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.
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.
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é.
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.
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.
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.
L'invention vient améliorer la 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, et
- 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.
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 :
- la figure 1 représente une vue schématique d'un simulateur de circuit électrique selon l'invention,
- la figure 2 représente un diagramme de fonctionnement général du simulateur de la figure 1,
- la figure 3 représente un diagramme de fonctionnement général du constructeur de la figure 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,
- la figure 6 représente un exemple de mise en œuvre d'une troisième opération de la figure 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,
- les figures 9 à 13 représentent des mises en œuvre en exemple de fonctions de la figure 8,
- la figure 14 représente un exemple de mise en œuvre d'une opération de la figure 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, et
- la figure 17 représente un circuit dont la simulation par l'outil de l'invention est décrite en exemple.
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.
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.
La figure 1 représente une vue schématique d'un simulateur de circuit électrique 2 selon l'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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Une fois le modèle 16 calculé, l'état initial de simulation du circuit est établi dans une opération 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.
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.
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.
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.
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.
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.
Comme on peut le voir, cette mise en œuvre comprend trois opérations principales.
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.
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.
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.
À ce stade, il convient de reprendre le cadre théorique dans lequel s'inscrit l'invention.
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).
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).
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.
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).
Cependant, ces équations ne sont valables que pour des composants réguliers.
Les travaux de la Demanderesse ont permis de modifier ces équations, pour permettre d'intégrer ces éléments.
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.
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).
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.
La figure 4 représente un exemple de mise en œuvre d'une partie de l'opération 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.
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.
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.
Lorsque le composant est régulier, ou une fois les opérations 404 et 406 exécutées, la boucle reprend en 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.
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.
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.
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.
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.
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.
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 .
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.
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.
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.
Deux boucles sont alors initialisées successivement pour préparer l'opération 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.
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.
Une fois ces indices stockés, la boucle reprend en 510, jusqu'à ce que l'arbre ST soit vidé.
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.
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.
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.
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.
Ainsi, les espaces mémoires correspondant à ces objets sont réservés dans cette opération comme suit :
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.
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.
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.
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.
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.
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é.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Lorsque la liste B est vide, l'opération 50 passe à la boucle suivante, qui est le traitement des composants de la liste 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.
Enfin, l'opération 50 se termine en 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.
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.
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.
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.
L'opération 75 est celle dans laquelle les matrices N, F, G, et H sont remplies avec des valeurs scalaires.
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].
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.
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.
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.
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é.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Ensuite, dans le premier test, une opération 1108 permet de vérifier si le nœud 11 est dans la liste Nl.
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.
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.
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.
Les opérations 1118 à 1122 sont identiques aux opérations 1110 à 1114 mais avec le nœud 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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).
Sinon un second test vérifie dans une opération 1304 si KCL(12) est supérieur à la dimension du vecteur 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.
Enfin après l'opération 1302, 1306 ou 1304 si les deux tests sont négatifs, la fonction se termine en 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).
Dans l'exemple décrit ici, ce mécanisme comprend deux principes de recherche de solution à ce système :
- un principe de recherche par linéarisation du système, et
- l'utilisation de méthodes non linéaires directs (de type Newton généralisé).
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.
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.
La deuxième boucle vient changer le point de départ de la première boucle si la solution obtenue ne convient pas.
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).
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.
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).
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é.
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.
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.
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.
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].
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.
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().
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.
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.
Une fois que la fonction Enum() a déterminé le nouvel état St[t], l'opération 80 se termine alors en 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.
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.
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.
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.
La figure 16 représente la fonction Stamp() qui est appliquée pour un transistor de type MOSFET.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Enfin, la fonction se termine dans une opération 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.
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.
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.
L'inductance 168 est reliée d'une part au drain du transistor 166 et d'autre part à la résistance 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.
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).
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).
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).
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).
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).
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.
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.
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.
À 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.
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.
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.
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.
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.
En outre, l'invention concerne également un procédé de simulation de circuit électrique comprenant :
- 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,
- 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é,
- 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,
- 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
Figure imgf000034_0002
Figure imgf000035_0002
Figure imgf000035_0001

Claims

Revendications
1. Simulateur de circuit électrique comprenant :
- 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é,
- 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,
- un solveur (12), agencé pour calculer un état postérieur d'un circuit, à partir de son modèle et d'un état antérieur, et
- 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é.
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.
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.
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.
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.
PCT/FR2010/000387 2009-05-29 2010-05-25 Simulateur de circuit électrique Ceased WO2010136668A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0902605A FR2946166A1 (fr) 2009-05-29 2009-05-29 Simulateur de circuit electrique ameliore
FR0902605 2009-05-29

Publications (1)

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

Family

ID=41679476

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2010/000387 Ceased WO2010136668A1 (fr) 2009-05-29 2010-05-25 Simulateur de circuit électrique

Country Status (2)

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

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0742526A1 (fr) * 1995-05-12 1996-11-13 Hewlett-Packard Company Méthode pour simuler un 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 (fr) * 1995-05-12 1996-11-13 Hewlett-Packard Company Méthode pour simuler un 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 (fr) 2010-12-03

Similar Documents

Publication Publication Date Title
EP0198729B1 (fr) Système de simulation d'un circuit électronique
EP1470501B1 (fr) Procedes et systemes de recherche et d'association de ressources d'information telles que des pages web
FR2820919A1 (fr) Procede et dispositif pour suivre une connectivite de reseau au moyen d'une hierarchie de conception
FR2966265A1 (fr) Echantillonneur de gibbs reduit pour factorisation de modeles de sujets clairsemes et de matrices discretes
WO2009007550A2 (fr) Dispositif informatique pour la simulation d'un ensemble d'objets en interaction et procédé correspondant
Al-Kaff et al. Exploring chaos and bifurcation in a discrete prey–predator based on coupled logistic map
WO2010136668A1 (fr) Simulateur de circuit électrique
WO2008007026A2 (fr) Procédé de modélisation de l'activité de commutation d'un circuit numérique
CN113313419B (zh) 信息系统窗口变更风险获取方法和装置
EP3317783A1 (fr) Dispositif de traitement de données pour fabrication additive
WO1995008154A1 (fr) Procede de demonstration automatique
EP0855038B1 (fr) Diagnostic de réseaux de composants, avec modélisation par bandes
FR3110725A1 (fr) Procédé mis en oeuvre par ordinateur pour générer des modèles additifs généralisés
Aït-Ameur et al. Validation et vérification formelles de systèmes interactifs multi-modaux fondées sur la preuve
FR3131413A1 (fr) Réseau de neurones avec génération à la volée des paramètres du réseau
CN102054070B (zh) 非线性电路直流工作点的支路电流计算方法与装置
WO2012035272A1 (fr) Dispositif informatique de calcul polyvalent
FR3122002A1 (fr) Procede et dispositif de calcul d'un indicateur d'influence d'un critere pour l'obtention d'un score dans un systeme decisionnel multicriteres
EP0401926B1 (fr) Procédé de traitement, stucture de réseau de neurones mettant en oeuvre le procédé et ordinateur pour simuler ladite structure de réseau de neurones
WO2012017177A2 (fr) Dispositif informatique de calcul polyvalent
EP3042321A1 (fr) Procédé d'analyse du comportement d'un circuit intégré mis en oeuvre par ordinateur et comprenant la sélection de chemins sur la base de plusieurs critères appartenant à des types différents
de M Goulart Estimation of structured tensor models and recovery of low-rank tensors
Covanov Multiplication algorithms: bilinear complexity and fast asymptotic methods
FR3131995A1 (fr) Support de calculs sur nombres reels au niveau des commutateurs physiques
FR3133648A1 (fr) Procédé de génération d’architectures fonctionnelles de circuit de refroidissement

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