• 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. Spectre PSS simulation for sigma-delta modulator and verilogA...

Stats

  • Replies 3
  • Subscribers 131
  • Views 493
  • Members are here 0

Spectre PSS simulation for sigma-delta modulator and verilogA model

StephanWeber
StephanWeber 20 days ago

Hi,

fora  sigma-delta modulator I made a verilogA model, and in transient simulation the results are very nice. However, I believe for a stable Vin PSS should be able to calculate the steady-state with good accuracy, and in PSS setup I can also apply nice sweeps. 

As usual, I run into the issue of hidden state, so I add the ignore hidden state command before the module definition.

Now PSS runs, but it looks bad, although I made tstab very large!

Next I found out that ffund = 1MHz = fclk is (of course) to high, e.g. my modulator use DEM with 7 periods, so I went for ffund=1M/7, but that causes sometimes convergence issues AND the results are still often bad for most inputs.

Is there a way to improve, e.g. to tell Spectre about which variables in the VA module should be taken into account as state? Or should I go with other PSS settings? I decided for 7 harmonics & shooting (all other at default).

Bye Stephan 

  • Cancel
  • Sign in to reply
  • Andrew Beckett
    Andrew Beckett 20 days ago

    Stephan,

    For PSS to be successful, the circuit must be truly periodic. Nearly always a sigma-delta is not periodic (at least not at any useful period - in fact you usually go out of your way to ensure that the design is not periodic to avoid tones appearing in the output). 

    Secondly, trying to fool the simulator into not having hidden state variables when those variables actually contain state is an act of folly. It's an effective way of ensuring you get the wrong answer. There are cases where it's OK to add the instrument_module attribute (typically when the module is a signal source, or a monitor that doesn't affect the signal behaviour), or to use the per-variable ignore_state attribute when (say) a variable is only used for debug messages and doesn't alter the behaviour. This is described quite clearly in Ken Kundert's app note: https://designers-guide.org/analysis/hidden-state.pdf . That app note also explains strategies for creating hidden-state free models for registers etc (it's not that easy to do this in most cases).

    This is not a matter of fiddling around with PSS settings. It's really whether what you're doing makes sense...

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • StephanWeber
    StephanWeber 19 days ago in reply to Andrew Beckett

    Thanks, Andrew.

    Likely your are full right on real-world SD-ADC, but my simple modulator (D/A) gives truly periodic outputs (e.g. DEM scheme is linear, not rnd). The issue is that frequency varies with code, and f is >> fclk, so even if PSS would work, it would be not so efficient.   

    Another aspect: Can Swept-PSS run the different variable settings in parallel? Such parallelization would speedup everything a lot too.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 19 days ago in reply to StephanWeber
    StephanWeber said:
    Another aspect: Can Swept-PSS run the different variable settings in parallel? Such parallelization would speedup everything a lot too.

    If you do the sweep in ADE rather than via the sweep on the analysis form, then separate simulations will be run and hence they can be run in parallel. It can't be done within the simulator (there wouldn't be much advantage of doing it within the simulator since each solution would need its own memory for the PSS solution and subsequent small-signal analyses, and so running separate simulations in parallel doesn't add much overhead and then gives the option of running on different machines).

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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.

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

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