1 Introduction

Fault diagnosis of analog circuits is an important problem in the design and testing of electronic devices [13]. Generally, fault diagnosis includes detecting faulty circuits, locating (identification) faulty elements and determinating their parameters. A fault is called soft when the parameter deviates from its tolerance range, but does not produce a short circuit or an open circuit. In some cases, physical imperfections such as near–opens and near–shorts may occur [46]. If circuit simulations take place after any testing, the diagnosis method is classified as the simulation-after-test (SAT) approach.

During the last several years, many methods devoted to soft fault diagnosis of analog circuits have been developed [723]. Appropriate tools for soft-fault diagnosis are SAT methods. Most of the previous research work addresses only the case when just one element is faulty. Several papers have been focused on the multiple fault diagnosis, e.g. [11, 14, 16, 17, 19, 20]. Although many achievements in this field have been made, the problem is still open and no fully automatic method is available for analog circuits.

The soft-fault SAT methods exploit a diagnostic equation that is generally nonlinear. When the parameters are slightly drifted from their tolerance ranges the equation can be linearized, e.g. [10, 19]. More accurate results are obtained using some methods for solving nonlinear equations, e.g. the Newton–Raphson method or its variants [7, 9, 12, 18], evolutionary algorithms [13], and the least square methods [8]. The soft-fault diagnosis becomes more complicated if the parameter deviations are large. In such a case some of the methods fail. Moreover, it can occur that several sets of the parameters satisfy the test equation. To find the sets (multiple solutions of the equation) different initial guesses can be chosen as proposed in [11]. Another approach based on the homotopy concept was proposed in the report [24]. This paper extends both the theoretical and numerical results of [24].

Location (identification) of faulty elements and determination of their parameters play a very important role at the pre-production stage, where corrections of the technological process are possible. In this way some defects of the technological process can be eliminated, leading to its improvement. The approach proposed in this paper is especially useful at this stage of production. In such a case, the time consumed by the diagnostic method is not crucial.

Let us consider a nonlinear resistive circuit, e.g. a diode-transistor one, driven by DC independent sources. Suppose that n circuit elements, specified by parameters x 1, …, x n such as resistances, β forward factors of bipolar transistors, intrinsic transconductance parameter KP or channel width/length (W/L) of MOS transistors are considered as possible faulty. We wish to find the actual values of all the parameters. For this purpose a diagnostic test must be performed leading to a system of n nonlinear equations in n unknown variables x 1, …, x n . The test equation can be presented in the form

$$ {{\bf f}}\left( {\widehat{{{\bf x}}}} \right) = {{\bf u}}, $$
(1)

where \( \widehat{{{\bf x}}} = {\left[ {{x_1}\; \cdots \;{x_n}} \right]^{\,{\text{T}}}} \in {R^n} \) is a vector of the parameters, \( {{\bf u}} = {\left[ {{u_1}\; \cdots \;{u_n}} \right]^{\,{\text{T}}}} \in {R^n} \) is a vector of the measured signals, \( {{\bf f}}\left( {\widehat{{{\bf x}}}} \right) = {\left[ {{f_1}\left( {\widehat{{{\bf x}}}} \right)\; \cdots \;{f_n}\left( {\widehat{{{\bf x}}}} \right)} \right]^{\,{\text{T}}}} \) is a nonlinear function mapping R n into R n. Generally it is impossible to formulate the nonlinear functions \( {f_i}\left( {\widehat{{{\bf x}}}} \right) \), i = 1, …, n, in explicit analytical form. Thus, the Eq. 1 only asserts that the output signals u 1, ⋯, u n are some functions of the parameters x 1, …, x n . Fortunately, the values of f i (x 1, …, x n ) and their derivatives with respect to x j (i, j = 1, …, n) can be found numerically for given values of x 1, …, x n .

For example, the test can be arranged as follows. Assume that the nonlinear circuit under test has w accessible input nodes and r accessible output nodes. We apply DC voltage sources to the input nodes (see Fig. 1) and for K different sets of values of these voltage sources measure the corresponding output voltages. As a result we obtain rK values of the output voltages. This test enables us to perform the diagnosis of a circuit with n ⩽ rK elements considered as possible faulty.

Fig. 1
figure 1

Arrangement of a diagnostic test

2 Preliminary Discussion

The diagnostic Eq. 1 with n unknown parameters x 1, …, x n , being real variables, consists of n nonlinear individual equations. As a result it may actually possess a unique solution, several different solutions or no solution.

The case where no solution exists means that the equation is not a realistic description of the physical circuit and should be reformulated. Existence of multiple solutions indicates that there are several sets of parameters which satisfy the test. Such a case frequently occurs in the diagnosis of many practical circuits. Research of the existence and uniqueness of the solutions of different nonlinear equations has a long history and several fundamental results relating to this problem have been obtained, including the powerful Palais theorem [25] about the global diffeomorphism.

Many algorithms are generally capable of finding only one solution, even if the nonlinear equation possesses several solutions. The Newton–Raphson method is the best known and the most frequently used for this purpose. However, finding just one specific solution in the case where the equation has multiple solutions is rarely of interest and not sufficient for the reliable diagnosis of the circuit. The solution found by the Newton–Raphson method is not necessarily the correct one. Sometimes the Newton–Raphson method fails, even if the equation has a unique solution, because in the computation process the Jacobian matrix can become singular. In many cases described in Section 4 the Newton–Raphson method applied to the nonlinear diagnostic equations fails or leads to an incorrect solution.

Since the diagnostic Eq. 1 is nonlinear, and we wish to analyse considerable deviations of the parameters, it is necessary to apply a method capable of finding multiple solutions. There is very rich literature devoted to the solvability of nonlinear equations describing resistive circuits and computing of multiple DC operating points. Unfortunately, the results obtained in this field cannot be applied to the diagnostic Eq. 1, because there is no explicit analytical representation of the function \( {{\bf f}}\left( {\widehat{{{\bf x}}}} \right) \). Generally, it is impossible to obtain analytical expressions, but the value of f i (x 1, …, x n ) and its derivatives with respect to x j (j = 1, …, n, i = 1, …, n) can be found numerically for given values of x 1, …, x n . This fact will be exploited to trace a homotopy path as described in Section 3.

In this paper, we propose the continuation (homotopy) approach [26, 27] for finding multiple solutions of the diagnostic Eq. 1. The idea of this approach is as follows. To solve an equation g(x) = 0 a parameter λ is embedded into this equation to obtain a new one h(x, λ) = 0, called a homotopy equation, such that for λ = 0, h(x, λ) = 0 can be easily solved and for λ = 1 it becomes the original equation g(x) = 0. This augmented equation is deformed as the parameter λ varies. At each stage of the deformation the corresponding solution is calculated, taking into account the previous solution. As a result, a solution (homotopy) path is traced and each intersection of the path with λ = 1 plane is a solution of the diagnostic equation.

3 Fault Diagnosis

Let us consider a circuit belonging to the class defined in Section 1 and assume that the parameters x 1, …, x n have their nominal values \( \widehat{{{\bf x}}} = {\widehat{{{\bf x}}}^{(0)}} \). We analyse this circuit and find the output signals leading to u = u (0). Thus, the equation

$$ {{\bf f}}\left( {{{\widehat{{{\bf x}}}}^{(0)}}} \right) = {{{\bf u}}^{(0)}} $$
(2)

holds. For the diagnostic Eq. 1 we form the Newton homotopy [26]

$$ {{\bf h}}\left( {\widehat{{{\bf x}}},\;\lambda } \right) = {{\bf f}}\left( {\widehat{{{\bf x}}}} \right) - {{{\bf u}}^{(0)}} - \lambda \left( {{{\bf u}} - {{{\bf u}}^{(0)}}} \right) = {\bf 0}. $$
(3)

Note that for λ = 0 the Eq. 3 reduces to the equation \( {{\bf f}}\left( {\widehat{{{\bf x}}}} \right) = {{{\bf u}}^{(0)}} \) having the known solution \( {\widehat{{{\bf x}}}^{(0)}} \), whereas for λ = 1 it becomes the original diagnostic equation. Denote λ = x n+1 and form an augmented vector \( {{\bf x}} = {\left[ {{{\widehat{{{\bf x}}}}^{\text{T}}}{x_{n + 1}}} \right]^{\,{\text{T}}}} = {\left[ {{x_1}\; \cdots {x_n}\;{x_{n + 1}}} \right]^{\,{\text{T}}}} \). Then, the homotopy equation can be written as \( \widehat{{{\bf h}}}\left( {{\bf x}} \right) = {\bf 0} \). It represents a system of n nonlinear scalar equations in n + 1 variables. As x n+1 = λ varies, starting from x n+1 = 0, the solution of the homotopy equation traces a homotopy path. Each intersection of this path with the x n+1 = 1 plane is a solution of the diagnostic Eq. 1. If there are several intersection points, then the test equation has several different solutions. Let us parameterize the path with respect to arc length [24, 27, 28]. This is the standard treatment of representing a path in parametric coordinates x = x(s).

If \( \sqrt {{{{\left( {\frac{{{\text{d}}{x_1}}}{{{\text{d}}s}}} \right)}^2} + \cdots + {{\left( {\frac{{{\text{d}}{x_n}}}{{{\text{d}}s}}} \right)}^2} + {{\left( {\frac{{{\text{d}}{x_{n + 1}}}}{{{\text{d}}s}}} \right)}^2}}} = 1 \), then s is the arc length of the path. Using the parameterization we form the set of equations

$$ \widehat{{{\bf h}}}\left( {{\bf x}} \right) = {\bf 0},\ \sum\limits_{i = 1}^{n + 1} {{{\left( {\frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}} \right)}^2}} = 1. $$
(4)

The derivative \( \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_{j + 1}}} \right) \) can be expressed in terms of x i (s j+1) and x i (s j ) using the approximate formula

$$ \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_{j + 1}}} \right) = \frac{1}{h}\left( {{x_i}\left( {{s_{j + 1}}} \right) - {x_i}\left( {{s_j}} \right)} \right)\,,\quad i = 1,\; \ldots, \;n + 1, $$
(5)

where h = s j+1 − s j . Using (5) we formulate the set of Eq. 4 at s = s j+1 as w(x(s j+1)) = 0, where

$$ \quad {{\bf w}}\left( {{{\bf x}}\left( {{s_{j + 1}}} \right)} \right) = \left[ {\matrix{ {{{\widehat{h}}_1}\left( {{{\bf x}}\left( {{s_{j + 1}}} \right)} \right)} \\ \vdots \\ {{{\widehat{h}}_n}\left( {{{\bf x}}\left( {{s_{j + 1}}} \right)} \right)} \\ {\left( {\,\sum\limits_{i = 1}^{n + 1} {{{\left( {{x_i}\left( {{s_{j + 1}}} \right) - {x_i}\left( {{s_j}} \right)} \right)}^2} - {h^2}} } \right)} \\ }<!end array> } \right] $$
(6)

To solve the Eq. 6 we apply the Newton–Raphson method. At each iteration m + 1 (m = 0, 1, …) the vector \( {{\bf w}}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) and the Jacobian matrix \( \frac{{{\text{d}}{{\bf w}}}}{{{\text{d}}{{\bf x}}}}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) have to be calculated. For this purpose \( {f_k}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) and \( \frac{{\partial {f_k}}}{{\partial {x_l}}}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) (k, l = 1, …, n) are required. Unfortunately, the function f is not given in explicit analytical form. Consequently, neither f k nor \( \frac{{\partial {f_k}}}{{\partial {x_l}}} \) can be found directly. To overcome this drawback the following approach is proposed. In order to determine \( {f_k}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) and \( \frac{{\partial {f_k}}}{{\partial {x_l}}}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \), (k, l = 1, …, n) we set the known values of the parameters \( {x_i} = x_i^{(m)}\left( {{s_{j + 1}}} \right) \) (i = 1, …, n) and perform the DC and the sensitivity analyses of the tested circuit at different values of the input voltages. Since f k is an appropriate output voltage, we obtain in this way the required \( {f_k}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) and \( \frac{{\partial {f_k}}}{{\partial {x_l}}}\left( {{{{\bf x}}^{(m)}}\left( {{s_{j + 1}}} \right)} \right) \) (k, l = 1, …, n). As the initial guess we assume

$$ {{\mathbf{x}}^{{(0)}}}\left( {{s_{{j + 1}}}} \right) = {\mathbf{x}}\left( {{s_j}} \right) + \frac{{{\text{d}}{\mathbf{x}}}}{{{\text{d}}s}}\left( {{s_j}} \right)\,h, $$
(7)

where \( \frac{{{\text{d}}{{\bf x}}}}{{{\text{d}}s}}\left( {{s_j}} \right) = \frac{1}{h}\left( {{{\bf x}}\left( {{s_j}} \right) - {{\bf x}}\left( {{s_{j - 1}}} \right)} \right) \), j = 1, 2, … .

To find the initial guess x (0)(s 1) the derivative \( \frac{{{\text{d}}{{\bf x}}}}{{{\text{d}}s}}(0) \) is needed. For this purpose we differentiate both sides of the first Eq. 4 with respect to s at s = 0

$$ \left[ {\frac{{\partial \widehat{{{\bf h}}}}}{{\partial \widehat{{{\bf x}}}}}\left( {\widehat{{{\bf x}}}(0)} \right)} \right]\frac{{{\text{d}}\widehat{{{\bf x}}}}}{{{\text{d}}s}}(0) + \frac{{\partial \widehat{{{\bf h}}}}}{{\partial {x_{n + 1}}}}\frac{{{\text{d}}{x_{n + {1}}}}}{{{\text{d}}s}}(0) = {\bf 0}, $$
(8)

where x n+1 = λ. According to (3) \( \frac{{\partial \widehat{{{\bf h}}}}}{{\partial {x_{n + 1}}}} = {{{\bf u}}^{(0)}} - {{\bf u}} \). Hence, we obtain

$$ \left[ {\frac{{\partial \widehat{{{\bf h}}}}}{{\partial \widehat{{{\bf x}}}}}\left( {\widehat{{{\bf x}}}(0)} \right)} \right]\frac{{{\text{d}}\widehat{{{\bf x}}}}}{{{\text{d}}s}}(0) = \left( {{{\bf u}} - {{{\bf u}}^{(0)}}} \right)\frac{{{\text{d}}{x_{n + {1}}}}}{{{\text{d}}s}}(0). $$
(9)

Since the homotopy path should go towards \( {x_n}_{ + {1}} = \lambda = {1} \) we assume \( \frac{{{\text{d}}{x_{n + 1}}}}{{{\text{d}}s}}(0) = 1 \), solve the Eq. 9 for \( \frac{{{\text{d}}{{\bf \hat{x}}}}}{{{\text{d}}s}}(0) \) and create, according to (7), the initial guess

$$ {{{\bf x}}^{(0)}}\left( {{s_1}} \right) = {{\bf x}}(0) + \left[ {\matrix{ {\frac{{{\text{d}}\widehat{{{\bf x}}}}}{{{\text{d}}s}}(0)} \\ 1 \\ }<!end array> } \right]\;h. $$
(10)

As the length s varies, the homotopy path is traced as described in Section 2. To carry out this process efficiently the step size h has to be changed during the computations. The step size should be decreased to a very small value, when the solution varies very fast and should be increased to a larger value when the solution changes slowly. The strategy of changing the step size is based on the error ε i produced by the approximate formula (5), defined as follows

$$ {\varepsilon_i} = {x_i}\left( {{s_{j + 1}}} \right) - {x_i}\left( {{s_j}} \right) - h\frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_{j + 1}}} \right)\,,\quad i = 1,\; \ldots, \;n + 1, $$
(11)

where x i and dx i /ds are the exact solution and its derivative, respectively, at the indicated values of s, where \( {s_{j + 1}} - {s_j} = h \). To derive a useful formula for ε i we expand the functions \( {x_i}\left( {{s_{j + 1}}} \right) = {x_i}\left( {{s_j} + h} \right) \) and \( \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_{j + 1}}} \right) = \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_j} + h} \right) \) into the Taylor series about the point s j :

$$ {x_i}\left( {{s_{j + 1}}} \right) = {x_i}\left( {{s_j}} \right) + h\frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_j}} \right) + \frac{1}{2}{h^2}\frac{{{{\text{d}}^2}{x_i}}}{{{\text{d}}{s^2}}}\left( {{l_1}} \right), $$
(12)
$$ \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_{j + 1}}} \right) = \frac{{{\text{d}}{x_i}}}{{{\text{d}}s}}\left( {{s_j}} \right) + h\frac{{{{\text{d}}^2}{x_i}}}{{{\text{d}}{s^2}}}\left( {{l_2}} \right), $$
(13)

where \( {l_1},\;{l_2} \in \left( {{s_j},\;{s_{j + 1}}} \right) \). Since \( {s_{j + 1}} - {s_j} = h \) is small we may assume that l 1 = l 2 = l. Substituting (12) and (13) into (11) yields

$$ {\varepsilon_i} = - \frac{1}{2}{h^2}\frac{{{{\text{d}}^2}{x_i}}}{{{\text{d}}{s^2}}}(l),\quad i = 1,\; \ldots, n + 1. $$
(14)

To perform the computation process we assume a lower and upper bounds of the error \( \left| {{\varepsilon_i}} \right|{:}\,\;\varepsilon_i^{-}, \;\varepsilon_i^{+} \). If at the current step \( \varepsilon_i^{-} \leqslant \left| {{\varepsilon_i}} \right| \leqslant \varepsilon_i^{+} \) for i = 1, …, n + 1 then the step h remains unchanged. If \( \left| {{\varepsilon_i}} \right| > \varepsilon_i^{+} \) for at least one i, the step is decreased four times. If \( \varepsilon_i^{-} > \left| {{\varepsilon_i}} \right| \), for all i = 1, …, n + 1, in two successive steps, the step h is increased twice.

During the computation process the Newton–Raphson method is applied for solving the homotopy equation to go from s j to s j+1. To perform each iteration of this method, the DC analysis of the nonlinear tested circuit has to be executed, using also the Newton–Raphson method. Thus, the Newton–Raphson iteration process is carried out on two levels.

The proposed approach enables us to find several sets of parameters. One of them represents the correct set of parameters, whereas the others are virtual. Having several solutions (sets of parameters) we select these ones which satisfy some physical constraints and discard the others, e.g. containing negative resistances. If more than one solution remain, including the correct solution and virtual ones, then under the applied test they possess equal rights. To determine the correct result a different test should be carried out and the common set selected. In some cases the method gives just one set of the parameters.

4 Numerical Examples

The proposed method was implemented on a computer using Delphi and tested on several circuits. The computations were executed using PC Pentium Core 2 Duo E6400. The computations were terminated when a closed homotopy path was obtained or the parameters assumed very large (positive or negative) values.

  • Example 1

Let us consider the CMOS benchmark operational amplifier circuit [29] operating as the voltage follower, shown in Fig. 2. The MOS transistors are represented by the model built up in Level 1 of SPICE [30]-[31]. The nominal parameters of the MOS transistors are as follows [32]:

Fig. 2
figure 2

CMOS based voltage follower

$$ \begin{array}{*{20}{c}} {{\text{PMOS}}:{\text{GAMMA}} = 0.53\,{{{\text{V}}}^{{0.5}}},IS = {{{10}}^{{ - 16}}}\,{\text{A}},KP = 28.3\,\mu {\text{A}}/{{{\text{V}}}^{2}},PHI = 0.58\,{\text{V}},RD = RS = 94\,\Omega ,VT0 = - 0.84\,{\text{V}},} \\ {{\text{NMOS}}:{\text{GAMMA}} = 0.38\,{{{\text{V}}}^{{0.5}}},IS = {{{10}}^{{ - 16}}}\,{\text{A}},KP = 79.7\mu {\text{A}}/{{{\text{V}}}^{2}},PHI = 0.53\,{\text{V}},RD = RS = 63\Omega ,VT0 = 0.79\,{\text{V}}.} \\ \end{array} $$

The channel width and length of the transistors are indicated in Fig. 2.

At first we consider the KP intrinsic transconductance parameters as faulty. The faults can be caused by deviation of the gate oxide thickness TOX or the carrier mobility UO. We consider 100% increase of KP in all PMOS transistors (KP = 56.60μA/V2) and 25.47% increase of KP in all NMOS transistors (KP = 100.00μA/V2).

We perform the diagnostic test at nodes A, B as described in Section 1. The measurement accuracy is assumed to be 1μV. The proposed method gives one set of the parameters (KP) which meet the test, as follows: 56.64, 56.62, 56.65, 55.77, 57.50, 99.34, 101.59, 100.01. They are very close to the actual values of the parameters. The time consumed by the method is 13.17 s. For illustration, projection of the traced homotopy path on λ − KP 1 plane is shown in Fig. 3.

Fig. 3
figure 3

Projection of the homotopy path on λ − KP 1 plane

Another diagnostic case is as follows. Let us assume –30% deviation of the channel width/length (W/L) for PMOS and 20% deviation for NMOS transistors. Thus, the actual values of W/L of the transistors are:\( {2}.{625},{6}.{125},{35}.000,{1}0.{5}00,{1}0.{5}00,{8}.{25}0,{8}.{25}0,{9}0.000. \) The proposed method gives two sets of the parameters (W/L), which meet the test: {2.63, 6.16, 35.00, 10.75, 10.36, 8.45, 8.14, 90.00} and {2.64, 77.16, 35.18, 100.63, 280.42, 55.15, 153.66, 90.01}.

The first set contains the parameters very close to the actual ones, whereas the second set is virtual. The time consumed by the method is 13.36 s. For illustration, projection of the traced homotopy path on λ − (W/L)7 plane is shown in Fig. 4.

Fig. 4
figure 4

Projection of the homotopy path on λ − (W/L)7 plane

Numerical experiments (30 cases) show that in 29 cases the method does not lose the correct solutions, leading either just to the correct solution (25 cases) or the correct solution and one virtual (4 cases). In one case the method diverges.

  • Example 2

Let us consider the transistor circuit shown in Fig. 5 [24]. In this circuit we consider single, double and triple faults of the resistors R 1, …, R 7, under the assumption that the deviations of the faulty elements are equal to 35% of their nominal values. We examined 14 single faults, 42 double faults and 70 triple faults, every time assuming the values of the unfaulty elements within their 5% tolerance ranges. In addition, an unfaulty circuit were considered with the parameters dissipated inside their tolerance frames. We performed the diagnostic test at nodes A and B, as described in Section 1.

Fig. 5
figure 5

Circuit for Example 2

The proposed diagnostic method gives the following results.

  • The percentage of the correct results: 89.8%,

  • 70% only one correct set,

  • 19.8% the correct set and one or two virtual.

  • In 10.2% the method diverges.

The average time of one analysis was 40s.

Several larger faults were diagnosed under the same test. Two of 22 considered cases are given below. Three elements {R 1, R 2, R 3} are faulty (more than 50%) and the values of the others are within their tolerance ranges. The values of all the circuit elements are as follows: \( \left\{ {{R_1} = 100\,{\text{k}}\Omega, {R_2} = 6\,{\text{k}}\Omega, {R_3} = 20\,{\text{k}}\Omega, {R_4} = 6.95\,{\text{k}}\Omega, {R_5} = 2.78\,{\text{k}}\Omega, {R_6} = 278\Omega, {R_7} = 277\Omega, {\beta_1} = {385,}{\beta_2} = {391}} \right\} \). We consider the set of all resistors {R 1, …, R 7} as possible faulty. The proposed method gives two sets of parameters which satisfy the test, including the correct one. The time consumed by the method is 47s. The homotopy path is closed, its projection on λ − R 1 plane is shown in Fig. 6. The points of intersection of the curve with the vertical line λ = 1 correspond to two values of the resistance R 1.

Fig. 6
figure 6

Projection of the homotopy path on λ − R 1 plane

Another case is as follows. Let us consider all the resistors {R 1, …, R 7} and β forward factors (β 1 and β 2) as possible faulty. We extend the previous test by adding two input voltages and find (measure) 9 values of the output voltages. The measurement accuracy is assumed to be 0.1μV. The parameters are as follows: \( \left\{ {{R_1} = 265\,{\text{k}}\Omega, {R_2} = 21\,{\text{k}}\Omega, {R_3} = 42\,{\text{k}}\Omega, {R_4} = 6.95\,{\text{k}}\Omega, {R_5} = 2.78\,{\text{k}}\Omega, {R_6} = 157\Omega, {R_7} = 157\Omega, {\beta_1} = 260,{\beta_2} = 260} \right\} \). Thus, four elements {R 6, R 7, β 1, β 2} are faulty. The proposed method gives two sets of parameters which meet the test, including the correct one. The time consumed by the method is 62s. For illustration, the projection of the obtained homotopy path on λ − R 6 plane is shown in Fig. 7.

Fig. 7
figure 7

Projection of the homotopy path on λ − R 6 plane

Sometimes the method fails as illustrated below. Let the parameters be as follows: \( \left\{ {{R_1} = {\text{265k}}\Omega, {R_2} = {\text{21k}}\Omega, {R_3} = {\text{42k}}\Omega, {R_4} = {4}.{\text{42k}}\Omega, {R_5} = {1}.{\text{755k}}\Omega, {R_6} = {175}.{5}\Omega, {R_7} = {269}\Omega, {\beta_1} = {392}, {\beta_2} = {392}} \right\} \). In this case the homotopy path traced by the proposed method does not intersect the λ = 1 plane. It is illustrated in Fig. 8, where the projection of this path on λ − R 4 plane is shown. Consequently, no set of parameters which meet the test is provided. However, for a different test performed at the point C instead of A the method gives two sets of the parameters including the correct set very close to the actual one: \( \left\{ {{R_1} = {265}.{\text{3k}}\Omega, {R_2} = {2}0.{\text{9k}}\Omega, {R_3} = {42}.0{\text{9k}}\Omega, {R_4} = {4}.{4}0{\text{k}}\Omega, {R_5} = {1}.{\text{75k}}\Omega, {R_6} = {175}.{8}\Omega, {R_7} = {268}.{7}\Omega, {\beta_1} = {392}, {\beta_2} = {392}} \right\} \).

Fig. 8
figure 8

Projection of the homotopy path on λ − R 4 plane

5 Conclusion

The proposed method enables us to diagnose nonlinear analog circuits including CMOS and BJT circuits. The following properties of the method make it very useful.

  1. (1)

    The method is based on nonlinear test equations and finds, in systematic way, different sets of the parameters which satisfy the diagnostic test, rather than one specific set.

  2. (2)

    The method enables us to locate the multiple faults in nonlinear circuits and evaluate parameters of all elements belonging to a large set of elements considered as possible faulty.

  3. (3)

    The method is capable of diagnosing the soft faults caused by both slight and considerable deviations of the parameters from their tolerance ranges.

The proposed method, based on the homotopy idea, does not guarantee finding all the solutions. However, numerous (about 450) experiments performed show that for any case where the method is convergent it never loses the correct solutions, leading either to only the correct solution or the correct solution and one or two virtual ones. In some cases (about 10%) the method diverges.

The proposed approach is especially useful at the pre-production stage, where corrections of the technological process are possible and CPU time is not crucial.