• 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. Complex-constant multiplier in VerilogA

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 64
  • Views 18043
  • 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

Complex-constant multiplier in VerilogA

RFStuff
RFStuff over 11 years ago

 Dear All,

I am doing a PSS+PNOISE simulation of a circuit in Spectre.

I need to multiply the output voltage of certain terminals with Complex Constant ( exp(j*pi/4)=0.707+0.707i).

This I don't want for post-processing ( which can be easily done using Ocean Script).

I want it on the fly of simulation.

Is there any ways of achieving this in VerilogA.

Kind Regards,

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    In general, this is impossible in the simulator. This is a constant phase shift of 45 degrees, and that would be non-causal in the time domain.

    It could be done in frequency domain analyses only (e.g. ac and hb, including PSS in hb mode), but not by using Verilog-A. Verilog-A cannot be written in the frequency domain - you'd have to translate it into the time domain, and since there is no time domain representation of such behaviour (except maybe over a narrow band), it can't be done that way.

    The way I would do this is to create an s-parameter file representing the complex transfer function, and then use nport with this. Be aware though that simulating it in time domain analyses would either fail or give bad answers, as it is not possible in real life. When creating the s-parameter file, you should make sure there is a dc point which doesn't have a complex transfer function (as that's not possible) to ensure the DC behaviour is correct and it can find an operating point.

    There is an internal implementation of a phaseShift for SpectreRF use (in frequency domain analyses), but it's not really in a state that I'd want to post it on the forum.

    Why can't you do this in the post-processing tool? That works fine - simply multiple your signal by complex(sqrt(2) sqrt(2)) in the calculator.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    In general, this is impossible in the simulator. This is a constant phase shift of 45 degrees, and that would be non-causal in the time domain.

    It could be done in frequency domain analyses only (e.g. ac and hb, including PSS in hb mode), but not by using Verilog-A. Verilog-A cannot be written in the frequency domain - you'd have to translate it into the time domain, and since there is no time domain representation of such behaviour (except maybe over a narrow band), it can't be done that way.

    The way I would do this is to create an s-parameter file representing the complex transfer function, and then use nport with this. Be aware though that simulating it in time domain analyses would either fail or give bad answers, as it is not possible in real life. When creating the s-parameter file, you should make sure there is a dc point which doesn't have a complex transfer function (as that's not possible) to ensure the DC behaviour is correct and it can find an operating point.

    There is an internal implementation of a phaseShift for SpectreRF use (in frequency domain analyses), but it's not really in a state that I'd want to post it on the forum.

    Why can't you do this in the post-processing tool? That works fine - simply multiple your signal by complex(sqrt(2) sqrt(2)) in the calculator.

    Regards,

    Andrew.

    • 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