Component Statements
You can give the resistance explicitly or allow it to be computed from the physical length and width of the resistor. In either case, the resistance can be a function of temperature or applied voltage.
This device is supported within altergroups.
If R(inst) is not given and R(model) is given
R(inst) = Rsh * (L - 2 * etchl) / (W - 2 * etch)
If the polynomial coefficients vector (coeffs=[c1 c2 ...]) is specified, the resistor is nonlinear. When nonlinform is set to g, the conductance is
= (1 + c1 * V + c2 * V^2 + ...) / R(inst).
The branch current as a function of applied voltage is
I(V) = (V / R(inst)) * (1 + 1/2 * c1 * V + 1/3 * c2 * V^2 + ...)
When nonlinform is set to r, the resistance is
= R(inst) * (1 + c1 * V + c2 * V^2 + ...).
where ck is the kth entry in the coefficient vector.
For AC analysis, RAC(inst) AC resistance will be used.
If RAC(inst) is not given, and RAC(model) is given,
RAC(inst) will use DC resistance.
The value of the resistor as a function of the temperature is given by:
R(T) = R(tnom) * [1 + tc1 * (T - tnom) + tc2 * (T - tnom)^2]
If you specify capacitance the model is a wire RC model. You can give the capacitance explicitly or allow it to be computed from the physical length and width of the resistor. The model parameter cratio can be used to allocate the parasitic capacitance of the wire element between the models input capacitor and output capacitor.
If C(inst) is not given and C(model) is given,
C(inst) = Cj * (L - 2 * etchl) * (W - 2 * etch) + 2 * Cjsw * (W + L - 2 * etch - 2 * etchl).
The parasitic capacitance assigned to the input and output nodes is given by:
C(2) = C(inst) * (1 - cratio).
The value of each capacitor as a function of the temperature is given by:
C(T) = C(tnom) * [1 + tc1c * (T - tnom) + tc2c * (T - tnom)^2].
Sample Instance Statement
r1 (1 2) resistor r=1.2K rac=100K m=2
r1 (1 2) resmod l=8u w=1u
Sample Model Statement
model resmod resistor rsh=150 l=2u w=2u etch=0.05u tc1=0.1 tnom=27 kf=1
This device support behavior expression
Sample behavior Statement
r1 (1 0) resistor r=rsh*(1 + v(1,2)*c1 + v(1,2)^2*c2)
r1 (1 0) resistor r= 100 + sqrt($freq)/1e6
Instance Syntax
Name 1 2 [0] ModelName parameter=value ...
Name 1 2 [0] resistor parameter=value ...
Instance Parameters
|
Use the resistance form for this instance. Default is |
|
|
Should resistor generate noise. Possible values are |
|
The instance parameter scale, if specified, overrides the value given by the option parameter scale. The w and l parameters are scaled by the resulting scale, and the option parameter scalem. The parameters w and l are scaled also by the model parameter shrink.The values of w and l printed out by spectre are those given in the input, and these values might not have the correct units if the scaling factors are not unity. The correct effective resistor dimensions are stored in the output parameters. You can obtain these dimensions by using the info statement.
Model Syntax
model modelName resistor parameter=value ...
Model Parameters
Resistance parameters
|
Resistances smaller than this will use the resistance form, as opposed to the standard conductance form. |
|
Resistor size parameters
Temperature effects parameters
Nonlinear resistance
|
The form of the nonlinear resistance. Possible values are |
|
|
Use symmetric resistor model. Possible values are |
Noise model parameters
|
Alias of flicker (1/f) noise W effective exponent, default value=1 when spice compatible. |
|
|
Alias of flicker (1/f) noise L effective exponent, default value=1 when spice compatible. |
|
DC-mismatch model parameters
Wire RC parameters
Safe operating areas parameters
The instance parameter resform and the model parameter thresh control whether a resistor is formulated in the standard conductance form, or in the resistance form. If the value of the resistor is smaller than thresh, Spectre uses the resistance form; otherwise it uses the conductance form. If resform is set on an instance, it overrides the thresh parameter. The resistance form is appropriate for small resistances and the conductance form is intended for larger resistances. Using the conductance form for small resistances or the resistance form for large resistances can cause convergence problems.
With the resistance form, the resistance can be zero; with the conductance form, the resistance can be infinite. The resistance form is less efficient than the conductance form. You cannot change the formulation of a resistor once it has been determined. Spectre makes this choice by comparing the initial value of the resistance to thresh.
If the polynomial coefficients vector is specified and symmetric=absolute, the resistor model is symmetric. When nonlinform is set to g, the conductance is
= (1 + c1 * |V| + c2 * |V|^2 + ...) / R(inst)
where |V| = ABS(V(1) - V(2)) and ck is the kth entry in the coefficient vector.
When nonlinform is set to r, the resistance is
= R(inst) * (1 + c1 * |V| + c2 * |V|^2 + ...)
If symmetric=smooth the smoothing function f(V) is used:
f(V) = V * V / sqrt(V * V + 0.00001).
For nonlinform=g the conductance is
= (1 + c1 * f(V) + c2 * f(V)^2 + ...) / R(inst).
In certain situations, a part of a circuit that is required to calculate the DC operating point needs to be removed during a subsequent AC analysis or visa versa. An example of a situation in which this occurs is when measuring the loop gain of a feedback amplifier. In this case the feedback loop must be removed when computing the AC response of the amplifier. In Spectre, the most accurate method of doing this is to use an ideal switch component (see spectre -h switch), e.g.
Sw1 (nin out 0) switch position=1 ac_position=2
Another possibility is that the resistance of an instance changes from one analysis to another. The following subcircuit models a resistance whose value is given by the parameter rac during AC analyses, and rdc for all other analyses.
Sw (i b) switch position=1 ac_position=0
Output Parameters
Operating-Point Parameters
Related Topics
Return to top