• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. RF Design
  3. Spectre temperature coefficient oddness

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 63
  • Views 16921
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Spectre temperature coefficient oddness

Sharad314
Sharad314 over 10 years ago

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.

 

tcweirdness.tar.gz
  • Cancel
Parents
  • Sharad314
    Sharad314 over 10 years ago

     We finally figured out what's going on.  Apparently Spectre is using the nominal inductances rather than the effective inductances when calculating the interaction between coupled inductors.  If we "correct" the k values appropriately in the temperature-coefficient model for Spectre, then we can make it exactly match Spice and the explicit-temperature Spectre model (though only for one particular temperature).  Since the info statement prints only k values and not the k*sqrt(L1*L2) which is actually used internally, you don't see the problem in the info output.

    This may be a bug in Spectre, but at least we understand it now.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Sharad314
    Sharad314 over 10 years ago

     We finally figured out what's going on.  Apparently Spectre is using the nominal inductances rather than the effective inductances when calculating the interaction between coupled inductors.  If we "correct" the k values appropriately in the temperature-coefficient model for Spectre, then we can make it exactly match Spice and the explicit-temperature Spectre model (though only for one particular temperature).  Since the info statement prints only k values and not the k*sqrt(L1*L2) which is actually used internally, you don't see the problem in the info output.

    This may be a bug in Spectre, but at least we understand it now.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information