• 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. Custom IC Design
  3. pss/qpss in the same run (alter? in ADE L?)

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 2436
  • 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

pss/qpss in the same run (alter? in ADE L?)

itos
itos over 9 years ago

Hi,

I simulate a mixer and I would like to obtain values for NF and IIP3 at the same time.

NF is obtained using pss+pnoise. For this analysis only one periodic signal must exist (the LO) and the port of the input signal must have zero frequency/power.

IIP3 is obtained using a swept qpss+qpac. Apart from the LO, the input port must contain a nonzero frequency signal.

The stupid way is to change the schematic for each analysis. To avoid that, I created a design variable tran_in_enable and set the frequency and amplitude of the input port to tran_in_enable*fin and tran_in_enable*Pin. In ADE L, I the set tran_in_enable to 0 and run pss/pnoise to get the NF and in the next step set it to 1 and enable qpss/qpac to get IIP3.

However, I want to obtain both values in one shot. Now I learned about the alter statement. If I manually change my input.scs the following way, everything works as expected:

simulator lang=spectre
global 0 vdd!
include "models.scs"
parameters  tran_in_enable=0
[...]
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
    tnom=25 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \
    digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \
    checklimitdest=psf
pss  pss  fund=1G  harms=50  errpreset=conservative  annotate=status
pnoise  (  vop  vom  )  pnoise  sweeptype=absolute  start=1k
+       stop=BW  dec=10  maxsideband=10  iprobe=PORT0  refsideband=-1
+       annotate=status

alter1 alter param=tran_in_enable value=1

sweepqpss  sweep  param=Pin  start=-60  stop=40  lin=100  {
  qpss  qpss  flexbalance=yes  oversample=[1  1]  funds=["LO"  "fin"]
+     maxharms=[3  3]  errpreset=moderate  annotate=status

  qpac  qpac  start=1.09G  clockmaxharm=2  annotate=status
}
[...]

However, ADE L always overwrites the alter line.

What is the correct approach to run pss/qpss simultanuously in ADE L?

Thank you!

  • Cancel
  • Tawna
    Tawna over 9 years ago

    RE:  What is the correct approach to run pss/qpss simultanuously in ADE L?

    Don't use pss/qpss with flexbalance=yes.   Use hb analysis instead.    

    I strongly recommend looking in the SpectreRF User Guide (MMSIM13.1 - 15.1) Appendix A, specifically the examples on simulating mixers.    There are a number of step by step examples.

    In addition, running from the ADE GUI is much less error prone than running standalone.    

    best regards,

    Tawna

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Tawna
    Tawna over 9 years ago

    I believe that I misunderstood your original post, Itos.    Please disregard my comment above.   (Lesson learned:  do not respond prior to my afternoon cup of coffee!  :-)  )

    pss/qpss-hb is still supported.   My point was the hb interface is just more intuitive.  Also all the new features are in the hb interface (autotstab, autoharmonics).    The examples are still worth going through.

    In your situation, the IIP3 is going to be a swept hb measurement - sweeping the input power. (For example, a 3 tone hb or a single tone hb plus hbac-rapidIP3).    Whereas the the noise analysis is not going to be a swept analysis.

    Offhand, I'd set up two tests in ADE XL - one for hb/hbnoise and one for hb/hbac.

    My colleague, Andrew, may have some fancy ways to do this in ADE L.   I'm off to get a cup of coffee now!   Sorry for any confusion I've caused.

    best regards,

    Tawna

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • itos
    itos over 9 years ago

    Thanks. hb+hbac+hbnoise does not seem to suffer from this problem.

    However, for the IIP3 curve I need to sweep hb+hbac over the input power Pin. If I also enable hbnoise, the hbnoise is executed for all swept Pin, resulting in huge computation time. For hbnoise, I only need to execute it once (for an arbitrary Pin).

    Generally, I'm not sure if this really fixes the general problem. What if I need to use shooting engine rather than harmonic balance?

    EDIT: I just saw your second response :)

    The problem is I am using this with Muneda wicked (a tool for circuit optimization) and this requires to obtain all outputs using the same netlist/run.

    I'd be very happy if Andrew has an appropriate hack for this.

    (On a note: I would find it very useful to have a special "Analysis" "alter" which can be freely shifted within the analysis box. Also being able to define multiple analyses of the same type would be very useful: then I could define "hb1" as a swept variant followed by "hbac" and then "hb2" without sweep, followed by hbnoise)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    I was also going to suggest doing this in ADE XL - there's no massive benefit in doing them in the same simulation (in general) because you can't share the pss/qpss or different hb analyses so there's no significant time saving doing them in the same run. In fact ADE XL would allow them to run in parallel which could give you speed up. Then you could use the Cadence optimisers which don't have this restriction ;-)

    In this specific case, you could just omit the analysis statements in ADE L and create a file called (say) analyses.scs containing the analysis statements you showed above. Reference this file via Setup->Model Libraries and it should do the job (I think).

    However, I'd like it if you could log a case via support.cadence.com about this, and quote this bit on the forums, asking the AE to contact me (ideally to pass the case to me). I'd like to add this to the set of similar requests, and I do have another solution which I can't post in a public forum - I need to make sure it has an associated enhancement request so that we can keep track of everyone who has a specific reason for needing it.

    And thanks to Tawna for taking the dangerous risk of attempting to answer pre-coffee...

    Thanks,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

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