• 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. No DC solution found (no convergence)

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 28066
  • 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

No DC solution found (no convergence)

barla
barla over 6 years ago

I am a beginner in cadence tool.
I am designing a hybrid full adder using CMOS/MTJ(magnetic tunnel junction) components. I am able to simulate the transient response clearly and obtained output for sum,carry and total power dissipation for the circuit. But while performing DC analysis (to find static power dissipation) I am getting the following errors. I have set the initial condition during the DC simulation but still the error persists.

ERROR (SPECTRE-16385): There were 8 attempts to find the DC solution. In some of those attempts, a signal exceeded the blowup limit of its quantity. The last signal that failed is I(I20.I4:Ttrans_flow) = -1.80144 GA, for which the quantity is `I' and the blowup limit is (1 GA). It is possible that the circuit has no DC solution. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.

ERROR (SPECTRE-16080): No DC solution found (no convergence).

Kindly suggest.
Thank you

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

    This post is suspiciously similar to this one. See the answer there, since not enough information was provided for that too. Presumably the other poster is a colleague of yours since the issue seems to be rather too similar.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • barla
    barla over 6 years ago in reply to Andrew Beckett

    Dear Sir

    As you have mentioned we are colleagues and we are working on the same group. I am really stuck at DC analysis. I need it to find static power dissipation. As I have mentioned earlier I am able to simulate transient analysis of the same circuit. I am posting the LOG file. Kindly suggest.  Thank you in advance

     ******************

    DC Analysis `dcOp'

    ******************

    Important parameter values:

        reltol = 1e-03

        abstol(V) = 1 uV

        abstol(I) = 1 pA

        temp = 27 C

        tnom = 27 C

        tempeffects = all

        gmindc = 1 pS

    Trying `homotopy = gmin'.

    Trying `homotopy = source'.

    Trying `homotopy = dptran'...

    Trying `homotopy = ptran'..

    Trying `homotopy = arclength'.

    None of the instantiated devices support arclength homotopy. Skipping.

    Arclength failed after a total of 0 iterations.

    Attempting Newton loop with latest solution.

      Error found by spectre during DC analysis `dcOp'.  

    ERROR (SPECTRE-16385): There were 8 attempts to find the DC solution. In some of those attempts, a signal exceeded the blowup limit of its quantity. The last signal that failed is I(I20.I4:Ttrans_flow) = -1.80144 GA, for which the quantity is `I' and the blowup limit is (1 GA). It is possible that the circuit has no DC solution. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.  

    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 Solution too large Convergence failure:

        I(M2_bar.R0:1) = 0 A

            update too large:  | 1.21597 GA | > 0 A + 1 pA

        I(I20.R0:1) = 0 A

            update too large:  | 1.21597 GA | > 0 A + 1 pA

        I(M2_bar.I4:Ttrans_flow) = 0 A

            update too large:  | -1.21597 GA | > 0 A + 1 pA

        I(I20.I4:Ttrans_flow) = 0 A

            update too large:  | -1.21597 GA | > 0 A + 1 pA

        I(I19.R0:1) = 0 A

            update too large:  | 45.036 MA | > 0 A + 1 pA

        I(I34.R0:1) = 0 A

            update too large:  | 45.036 MA | > 0 A + 1 pA

        I(I19.I4:Ttrans_flow) = 0 A

            update too large:  | -45.036 MA | > 0 A + 1 pA

        I(I34.I4:Ttrans_flow) = 0 A

            update too large:  | -45.036 MA | > 0 A + 1 pA

        I(V0:p) = 0 A

            update too large:  | 18.2276 mA | > 0 A + 1 pA

        V(s2) = 0 V

            update too large:  | 1 V | > 0 V + 1 uV

     Top 10 Residue too large Convergence failure:

        V(net049) = 0 V

            residue too large: | 9.29958 mA | > 46.4979 uA + 1 pA

        V(net38) = 0 V

            residue too large: | 8.92804 mA | > 44.6402 uA + 1 pA

        V(net020) = 0 V

            residue too large: | -9.29958 mA | > 46.4979 uA + 1 pA

        V(net060) = 0 V

            residue too large: | -8.92804 mA | > 44.6402 uA + 1 pA

        I(I19.I4:Ttrans_flow) = 0 A

            residue too large: | 1 V | > 5 mV + 1 uV

        I(I34.I4:Ttrans_flow) = 0 A

            residue too large: | 1 V | > 5 mV + 1 uV

        I(M2_bar.R0:1) = 0 A

            residue too large: | -999.999 mV | > 5 mV + 1 uV

        I(I20.R0:1) = 0 A

            residue too large: | -999.999 mV | > 5 mV + 1 uV

        V(net09) = 0 V

            residue too large: | -621.998 pA | > 3.10999 pA + 1 pA

    Warning from spectre during DC analysis `dcOp'.

        WARNING (SPECTRE-16881): Detected possible convergence difficulties which might be related to Verilog-A models. Use the command-line option '-ahdllint=warn' to check the Verilog-A modeling issues.

     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.

    Evaluate and resolve any notice, warning, or error messages.

    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.

    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.

    Enable diagnostic messages by setting option `diagnose=detailed'.

    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.

    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.

    Use realistic device models. Check all component parameters, particularly nonlinear device model parameters, to ensure that they are reasonable.

    If simulating a bipolar analog circuit, ensure that the region parameter on all transistors and diodes is set correctly.

    Loosen tolerances, particularly absolute tolerances like `iabstol' (on options statement). If tolerances are set too tight, they might preclude convergence.

    Increase the value of gmin (on options statement).

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

    Try to simplify the nonlinear component models to avoid regions that might contribute to convergence problems in the model.

    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.

    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 `dcOp' was terminated prematurely due to an error.

    dcOpInfo: writing operating point information to rawfile.

    Error found by spectre during DC analysis, during info `dcOpInfo'.

    ERROR (SPECTRE-16041): Analysis was skipped due to inability to compute operating point.

    Analysis `dcOpInfo' was terminated prematurely due to an error.

    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
    • Cancel
Reply
  • barla
    barla over 6 years ago in reply to Andrew Beckett

    Dear Sir

    As you have mentioned we are colleagues and we are working on the same group. I am really stuck at DC analysis. I need it to find static power dissipation. As I have mentioned earlier I am able to simulate transient analysis of the same circuit. I am posting the LOG file. Kindly suggest.  Thank you in advance

     ******************

    DC Analysis `dcOp'

    ******************

    Important parameter values:

        reltol = 1e-03

        abstol(V) = 1 uV

        abstol(I) = 1 pA

        temp = 27 C

        tnom = 27 C

        tempeffects = all

        gmindc = 1 pS

    Trying `homotopy = gmin'.

    Trying `homotopy = source'.

    Trying `homotopy = dptran'...

    Trying `homotopy = ptran'..

    Trying `homotopy = arclength'.

    None of the instantiated devices support arclength homotopy. Skipping.

    Arclength failed after a total of 0 iterations.

    Attempting Newton loop with latest solution.

      Error found by spectre during DC analysis `dcOp'.  

    ERROR (SPECTRE-16385): There were 8 attempts to find the DC solution. In some of those attempts, a signal exceeded the blowup limit of its quantity. The last signal that failed is I(I20.I4:Ttrans_flow) = -1.80144 GA, for which the quantity is `I' and the blowup limit is (1 GA). It is possible that the circuit has no DC solution. If you really want signals this large, set the `blowup' parameter of this quantity to a larger value.  

    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 Solution too large Convergence failure:

        I(M2_bar.R0:1) = 0 A

            update too large:  | 1.21597 GA | > 0 A + 1 pA

        I(I20.R0:1) = 0 A

            update too large:  | 1.21597 GA | > 0 A + 1 pA

        I(M2_bar.I4:Ttrans_flow) = 0 A

            update too large:  | -1.21597 GA | > 0 A + 1 pA

        I(I20.I4:Ttrans_flow) = 0 A

            update too large:  | -1.21597 GA | > 0 A + 1 pA

        I(I19.R0:1) = 0 A

            update too large:  | 45.036 MA | > 0 A + 1 pA

        I(I34.R0:1) = 0 A

            update too large:  | 45.036 MA | > 0 A + 1 pA

        I(I19.I4:Ttrans_flow) = 0 A

            update too large:  | -45.036 MA | > 0 A + 1 pA

        I(I34.I4:Ttrans_flow) = 0 A

            update too large:  | -45.036 MA | > 0 A + 1 pA

        I(V0:p) = 0 A

            update too large:  | 18.2276 mA | > 0 A + 1 pA

        V(s2) = 0 V

            update too large:  | 1 V | > 0 V + 1 uV

     Top 10 Residue too large Convergence failure:

        V(net049) = 0 V

            residue too large: | 9.29958 mA | > 46.4979 uA + 1 pA

        V(net38) = 0 V

            residue too large: | 8.92804 mA | > 44.6402 uA + 1 pA

        V(net020) = 0 V

            residue too large: | -9.29958 mA | > 46.4979 uA + 1 pA

        V(net060) = 0 V

            residue too large: | -8.92804 mA | > 44.6402 uA + 1 pA

        I(I19.I4:Ttrans_flow) = 0 A

            residue too large: | 1 V | > 5 mV + 1 uV

        I(I34.I4:Ttrans_flow) = 0 A

            residue too large: | 1 V | > 5 mV + 1 uV

        I(M2_bar.R0:1) = 0 A

            residue too large: | -999.999 mV | > 5 mV + 1 uV

        I(I20.R0:1) = 0 A

            residue too large: | -999.999 mV | > 5 mV + 1 uV

        V(net09) = 0 V

            residue too large: | -621.998 pA | > 3.10999 pA + 1 pA

    Warning from spectre during DC analysis `dcOp'.

        WARNING (SPECTRE-16881): Detected possible convergence difficulties which might be related to Verilog-A models. Use the command-line option '-ahdllint=warn' to check the Verilog-A modeling issues.

     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.

    Evaluate and resolve any notice, warning, or error messages.

    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.

    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.

    Enable diagnostic messages by setting option `diagnose=detailed'.

    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.

    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.

    Use realistic device models. Check all component parameters, particularly nonlinear device model parameters, to ensure that they are reasonable.

    If simulating a bipolar analog circuit, ensure that the region parameter on all transistors and diodes is set correctly.

    Loosen tolerances, particularly absolute tolerances like `iabstol' (on options statement). If tolerances are set too tight, they might preclude convergence.

    Increase the value of gmin (on options statement).

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

    Try to simplify the nonlinear component models to avoid regions that might contribute to convergence problems in the model.

    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.

    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 `dcOp' was terminated prematurely due to an error.

    dcOpInfo: writing operating point information to rawfile.

    Error found by spectre during DC analysis, during info `dcOpInfo'.

    ERROR (SPECTRE-16041): Analysis was skipped due to inability to compute operating point.

    Analysis `dcOpInfo' was terminated prematurely due to an error.

    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
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to barla

    I doubt it will be possible to debug this from just a segment of the log file alone (you didn't include the whole log file, so I don't even know which version you're using). it seems rather odd that a transient would succeed but a dc operating point wouldn't, since the transient has to start with a dc operating point (the only explanation other than the setup being different is that that the time-zero voltages are different from the DC voltages on the sources). My guess from the I20.I4:Ttrans_flow error is that I20.I4 is an instance of a Verilog-A model, so it may be an issue with the Verilog-A code - hard to be sure without seeing it all.

    As mentioned in the other post, seeing the design would help. Given that this is usually not possible on the forums, I would suggest you contact customer support.

    Regards,

    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