As shown in section 3.3, modeling of nonlinear analog devices using model cards as static objects has the advantage of separating the nonlinear function and the enclosing process. As long as model class methods accept terminal voltages and return both nonlinear function value and partial derivatives, the actual method implementation is of no importance. We used this property to develop a model class whose methods model MOSFET drain current using artificial neural network. It was shown that an artificial feed-forward neural network may be trained to behave like a nonlinear device, given the sufficient input-output data set, obtained either by measurements or simulation [Lito92, Lito93]. Such a network has as many neurons in the input layer as there are input variables (in our case voltages Vgs and Vds), and one output neuron (Ids). Training has shown that one hidden layer with 10 neurons is sufficient to obtain neural network response with an acceptable error. The results of the training were weights and thresholds associated with the neurons, and they were introduced in the defined model card class as parameters. Once the neural network response method was implemented, the MOSFET model did not differ from the example given in section 3.3, with the identical interface type signature.

The following declaration was used to introduce a model class annmos :

class annmos {

private:

double w[32], t[12], x[50]; // weights, thresholds

double oj[11], ojg[11]; // intermediate results

int n, n0, np; // network dimensions

int hidden_transfer, outtransfer; // transfer type

double hidden_gain, outgain; // transfer gains

annmos(int, int, int); // class constructor

>annmos(); // model card preprocessor

void create_unified_neurodata(); // class unifier

public:

double vds_min, vgs_min; // vds normalization

double vds_max, vgs_max; // vgs normalization

double ids_min, ids_max; // ids normalization

double vgsd, vdsd, idsd; // normalized values

double Cgd, Cgs, Cgb; // MOS capacitances

double Cbd, Cbs; // junction capacitances

double type; // device polarization

void neuro_response(double *, double *); // net response

};

A subcircuit that defines artificial neural network MOSFET model is defined by the use of structural modeling:

The simulation of a CMOS inverter composed of two ANNMOS (Artificial Neural Network MOS) devices is illustrated in the Fig. 5.8. Since the nonlinear function that models MOSFET drain current has continuous first derivatives in the entire range of interest (four orders of magnitude), no convergence problems occurred in the transition regions. It should be noted that this modeling method may be used for any nonlinear device or system, given sufficient input-output relation data.

Fig. 5.8: Comparison of the simulation results of a CMOS inverter composed of standard transistor models (MOS) and artificial neural network models (ANN). Two curves evidently match in the whole voltage domain of interest.