• 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. LoapPull Analysis For Differential Power Amplifier

Stats

  • Replies 2
  • Subscribers 63
  • Views 361
  • Members are here 0

LoapPull Analysis For Differential Power Amplifier

RM202501276525
RM202501276525 11 days ago

Is using a VCVS to convert the differential output to single-ended the correct way to perform a load pull on a differential power amplifier?

---- Cannot upload pictures onto the website.

  • Cancel
  • Sign in to reply
Parents
  • Andrew Beckett
    Andrew Beckett 11 days ago

    Perhaps you should use the ideal_balun from analogLib instead? Using a vcvs will isolate the load which is not what you want...

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett 11 days ago

    Perhaps you should use the ideal_balun from analogLib instead? Using a vcvs will isolate the load which is not what you want...

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • RM202501276525
    RM202501276525 11 days ago in reply to Andrew Beckett

    When I use the ideal_balun_p2s from analogLib to convert my differential output to a single-ended signal for the load port, the simulation fails during the initial DC convergence for every sweep point.

    I receive  this error.

    Warning from spectre at theta = 359 during IC analysis, during periodic steady state analysis `lppssrho-010_lppssphi-020_pss', in `lppssrho-010_lppssphi', during Sweep analysis `lppssrho'.
    WARNING (SPECTRE-16001): Sweep iteration for `theta' = 359 terminated prematurely because of the following error(s):
    Error found by spectre at theta = 359 during IC analysis, during periodic steady state analysis `lppssrho-010_lppssphi-020_pss', in `lppssrho-010_lppssphi', during Sweep analysis `lppssrho'.
    ERROR (SPECTRE-11006): Matrix is singular (detected at `L2:1' and `I9.K1:t1').
    ERROR (SPECTRE-16080): No DC solution found (no convergence).

    The values for those nodes that did not converge on the last Newton iteration are given below. The manner in which the convergence criteria were not satisfied is also given.
    Failed test: | Value | > RelTol*Ref + AbsTol

    Top 10 Residue too large Convergence failure:
    I(V0:p) = 0 A
    residue too large: | 2 V | > 10 mV + 1 uV
    I(V1:p) = 0 A
    residue too large: | 450 mV | > 2.25 mV + 1 uV


    The following set of suggestions might help you avoid convergence difficulties. After you have a solution, write it to a nodeset file by using the `write' parameter, and read it back in on subsequent simulations by using the `readns' parameter.

    1. Evaluate and resolve any notice, warning, or error messages.
    2. Perform sanity check on the parameter values by using the parameter range checker (use ``+param param-limits-file'' as a command line argument) and heed any warnings. Print the minimum and maximum parameter value by using `info' analysis. Ensure that the bounds given for instance, model, output, temperature-dependent, and operating-point (if possible) parameters are reasonable.

    3. Check the direction of both independent and dependent current sources. Convergence problems might result if current sources are connected such that they force current backward through diodes.

    4. Enable diagnostic messages by setting option `diagnose=detailed'.
    5. Small floating resistors connected to high impedance nodes can cause convergence difficulties. Avoid very small floating resistors, particularly small parasitic resistors in semiconductors. Instead, use voltage sources or iprobes to measure current.
    6. If you have an estimate of what the solution should be, use nodeset statements or a nodeset file, and set as many nodes as possible.
    7. Use realistic device models. Check all component parameters, particularly nonlinear device model parameters, to ensure that they are reasonable.
    8. If simulating a bipolar analog circuit, ensure that the region parameter on all transistors and diodes is set correctly.
    9. Loosen tolerances, particularly absolute tolerances like `iabstol' (on options statement). If tolerances are set too tight, they might preclude convergence.
    10. Increase the value of gmin (on options statement).
    11. Use numeric pivoting in the sparse matrix factorization by setting `pivotdc=yes' (on options statement). Sometimes, it is also necessary to increase the pivot threshold to a value in the range of 0.1 to 0.5 by using `pivrel' (on options statement).
    12. Try to simplify the nonlinear component models to avoid regions that might contribute to convergence problems in the model.
    13. Divide the circuit into smaller pieces and simulate them individually. However, ensure that the results are close to what they would be if you had simulated the whole circuit. Use the results to generate nodesets for the whole circuit.
    14. Check the connections to ground. Convergence problems might result if no connections to ground.
    15. If all else fails, replace the DC analysis with a transient analysis and modify all the independent sources to start at zero and ramp to their DC values. Run transient analysis well beyond the time when all the sources have reached their final value (remember that transient analysis is very cheap when none of the signals in the circuit are changing) and write the final point to a nodeset file. To make transient analysis more efficient, set the integration method to backward Euler (`method=euler') and loosen the local truncation error criteria by increasing `lteratio', say to 50. Occasionally, this approach fails or is very slow because the circuit contains an oscillator. Often, for finding the dc solution, the oscillation can be eliminated for by setting the minimum capacitance from each node to ground (`cmin') to a large value.

    Analysis `lppssrho-010_lppssphi-020_pss' was terminated prematurely due to an error.

    **** Run Status for sweep analysis `lppssrho-010_lppssphi' ****
    Sweep iteration 1 (`theta' = 0) failed.
    Sweep iteration 2 (`theta' = 17.95) failed.
    Sweep iteration 3 (`theta' = 35.9) failed.
    Sweep iteration 4 (`theta' = 53.85) failed.
    Sweep iteration 5 (`theta' = 71.8) failed.
    Sweep iteration 6 (`theta' = 89.75) failed.
    Sweep iteration 7 (`theta' = 107.7) failed.
    Sweep iteration 8 (`theta' = 125.65) failed.
    Sweep iteration 9 (`theta' = 143.6) failed.
    Sweep iteration 10 (`theta' = 161.55) failed.
    Sweep iteration 11 (`theta' = 179.5) failed.
    Sweep iteration 12 (`theta' = 197.45) failed.
    Sweep iteration 13 (`theta' = 215.4) failed.
    Sweep iteration 14 (`theta' = 233.35) failed.
    Sweep iteration 15 (`theta' = 251.3) failed.
    Sweep iteration 16 (`theta' = 269.25) failed.
    Sweep iteration 17 (`theta' = 287.2) failed.
    Sweep iteration 18 (`theta' = 305.15) failed.
    Sweep iteration 19 (`theta' = 323.1) failed.
    Sweep iteration 20 (`theta' = 341.05) failed.
    Sweep iteration 21 (`theta' = 359) failed.
    Total time required for sweep analysis `lppssrho-010_lppssphi': CPU = 496 ms, elapsed = 677.585 ms.
    Time accumulated: CPU = 8.36 s, elapsed = 10.4121 s.
    Peak resident memory used = 134 Mbytes.


    **** Run Status for sweep analysis `lppssrho' ****
    Sweep iteration 1 (`mag' = 0) failed.
    Sweep iteration 2 (`mag' = 0.095) failed.
    Sweep iteration 3 (`mag' = 0.19) failed.
    Sweep iteration 4 (`mag' = 0.285) failed.
    Sweep iteration 5 (`mag' = 0.38) failed.
    Sweep iteration 6 (`mag' = 0.475) failed.
    Sweep iteration 7 (`mag' = 0.57) failed.
    Sweep iteration 8 (`mag' = 0.665) failed.
    Sweep iteration 9 (`mag' = 0.76) failed.
    Sweep iteration 10 (`mag' = 0.855) failed.
    Sweep iteration 11 (`mag' = 0.95) failed.
    Total time required for loadpull analysis `lppss': CPU = 5.608 s, elapsed = 7.56544 s.
    Time accumulated: CPU = 8.368 s, elapsed = 10.4204 s.
    Peak resident memory used = 134 Mbytes.

    modelParameter: writing model parameter values to rawfile.
    element: writing instance parameter values to rawfile.
    outputParameter: writing output parameter values to rawfile.
    designParamVals: writing netlist parameters to rawfile.
    primitives: writing primitives to rawfile.
    subckts: writing subcircuits to rawfile.

    • 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.

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

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