Quantcast
Channel: Cadence RF Design Forum
Viewing all articles
Browse latest Browse all 956

Spectre temperature coefficient oddness

$
0
0

We have a tool that makes subcircuit models of passive components (an integrated inductor in this example).  It can now produce models that have temperature dependence, and in that case the output model includes components with linear temperature coefficients.  There are subcircuit models in both Spectre and Spice format.

When I run Spectre and Spice (ngspice in particular) to play back the models at the nominal temperature (25C), the inductor characteristics are identical.  The problem is that the inductor characteristics differ when I use a temperature (125C in this case) that is different than nominal.

In trying to isolate the problem, I converted the Spectre model into a form that writes out the temperature dependence explicitly.  According to the Spectre Components and Device Models Manual, for something like a resistor, the temperature dependence has this form:

Reff = Rnom * (1 + tc1*(T-tnom))

The temperature dependence of inductors and capacitors is similar.  I changed each line in the Spectre model according to this equation.  For example, I changed this:

R8 (n5 n6) resistor r=27.588830e3 tc1=-2.219425e-03

to this:

R8 (n5 n6) resistor r=27.588830e3*(1+ -2.219425e-03*(temp-tnom))

When I run Spectre on this model with explicit temperature dependence, it matches Spice exactly (and hence does not match Spectre with the temperature coefficient).

I have verified this behavior with two different versions of Spectre, one fairly old and one new.

Oddly, when I use Spectre's info statement to examine the components, Spectre shows that both the explicit-temperature and temperature-coefficient versions have identical effective component values!  (And both differ from the nominal temperature case, so the temperature is definitely having an effect.)  So I seem to be somehow getting identical circuit topologies, identical component values, and differing electrical behavior, with the explicit-temperature version exactly matching a different tool.

At this point I'm at a loss.  Clearly I must be misunderstanding something, because this seems far too basic to be broken.  I've been fiddling with it for three days though and can't figure out what's going on.

I've attached a tarball that contains the two Spectre netlists demonstrating the problem, along with the Spice-format model, a run script that invokes Spectre and compares the effective component values, and the S-parameter outputs from the Spectre runs and also from my Spice run.  There's a README.txt that describes the files in the tarball, and also a plot showing the inductor electrical behavior for the two Spectre models and how the explicit version agrees with Spice.  The exact versions of Spectre that I tried are also in the README.txt file.

 


Viewing all articles
Browse latest Browse all 956

Trending Articles