• 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. Convergence error in Transient analysis

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 126
  • Views 57375
  • 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

Convergence error in Transient analysis

SAMEERGARG
SAMEERGARG over 11 years ago

 Actually i crated a Memristor Model by using VerilogA code. Then i designed logic gates by using the same with different methodology and i got correct simulated output but when i combined all individual logic gates to make a simple 1 bit adder then i got convergence error. I did simulation for 40n sec but i am getting result upto 6-8 ns . Even i am not able to see input pulse. Please help me to short out this problem. Iam attaching my schematic and log file

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

Transient Analysis `tran': time = (0 s -> 40 ns)

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

Trying `homotopy = gmin' for initial conditions.

Trying `homotopy = source' for initial conditions.

Important parameter values:

    start = 0 s

    outputstart = 0 s

    stop = 40 ns

    step = 40 ps

    maxstep = 800 ps

    ic = all

    skipdc = no

    reltol = 1e-03

    abstol(V) = 1 uV

    abstol(I) = 1 pA

    temp = 27 C

    tnom = 27 C

    tempeffects = all

    errpreset = moderate

    method = traponly

    lteratio = 3.5

    relref = sigglobal

    cmin = 0 F

    gmin = 1 pS

 

 

Warning from spectre at time = 38.8734 ps during transient analysis `tran'.

    WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

Warning from spectre at time = 46.4423 ps during transient analysis `tran'.

    WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

 

    tran: time = 1.245 ns    (3.11 %), step = 308.4 ps     (771 m%)

    tran: time = 3.06 ns     (7.65 %), step = 93.55 ps     (234 m%)

 

Warning from spectre at time = 3.10126 ns during transient analysis `tran'.

    WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

 

    tran: time = 5.205 ns      (13 %), step = 205.2 ps     (513 m%)

 

Warning from spectre at time = 6.0115 ns during transient analysis `tran'.

    WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

Warning from spectre at time = 6.1008 ns during transient analysis `tran'.

    WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

        Further occurrences of this warning will be suppressed.

 

    tran: time = 7.109 ns    (17.8 %), step = 204.3 ps     (511 m%)

 

Error found by spectre at time = 8.03662 ns during transient analysis `tran'.

    ERROR (SPECTRE-16192): No convergence achieved with the minimum time step specified.  Last acceptable solution computed at 8.03662 ns.

 

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(I9.R2:1) = 3.27345 uA, previously 3.28612 uA.

        update too large:  | -5.69514 uA | > 1.55317 uA + 1 pA

    I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.

        update too large:  | -5.69514 uA | > 1.55317 uA + 1 pA

    I(I9.R1:1) = -6.63437 uA, previously -3.59126 uA.

        update too large:  | 5.63895 uA | > 1.55653 uA + 1 pA

    I(I9.I0:p_n_flow) = -6.63437 uA, previously -3.59126 uA.

        update too large:  | 5.63895 uA | > 1.55653 uA + 1 pA

    I(V3:p) = -508.065 uA, previously -508.099 uA.

        update too large:  | 5.69437 uA | > 2.05796 uA + 1 pA

 Top 10 Residue too large Convergence failure:

    I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.

        residue too large: | 575.245 mV | > 5.45743 mV + 1 uV

 

 

The following set of suggestions might help you avoid convergence difficulties.  

 

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

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

 3. Small floating resistors connected to high impedance nodes might cause convergence difficulties. Avoid very small floating resistors, particularly small parasitic resistors in semiconductors. Instead, use voltage sources or iprobes to measure current.

 4. Ensure that a complete set of parasitic capacitors is used on nonlinear devices to avoid jumps in the solution waveforms.  On MOS models, specify nonzero source and drain areas.

 5. Perform sanity check on the parameter values 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 using the `info' analysis.  Ensure that the bounds given for instance, model, output, temperature-dependent, and operating-point (if possible) parameters are reasonable.

 

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

 

 7.  Enable diagnostic messages by setting option `diagnose=yes'.

 8. Use the `cmin' parameter to install a small capacitor from every node in the circuit to ground.  This usually eliminates any jumps in the solution.

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

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

 

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

finalTimeOP: writing operating point information to rawfile.

Trying `homotopy = gmin'.

Trying `homotopy = source'.

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.


 

  • 1BIT_Adder_Schematic.png
  • View
  • Hide
  • Cancel
  • Quek
    Quek over 11 years ago

    Hi Sameer

    For convergence issues, I think it would be good if you can test if the problem still occurs using the latest version of MMSIM package. By the way, I think you had not provided any info on the version of spectre which you are using.

    terminal>spectre -W

    Best regards
    Quek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SAMEERGARG
    SAMEERGARG over 11 years ago

    Hii Queck

    Thanks for your response. Here i am udating complete log file detail in which all information available viz verion etc.. I got from googling they was telling about to change the value of Cmin but from where i will get this option..........Also some block told about to change integration methode to gear or euler but i am not getting thesse option. Shall i change value of RELTOL ABSTOL or other parameter..

     

    Cadence (R) Virtuoso (R) Spectre (R) Circuit Simulator

    Version 10.1.0.204 32bit -- 14 Sep 2010

    Copyright (C) 1989-2010 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence, Virtuoso and Spectre are registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective holders.

     

    Protected by U.S. Patents: 

            5,610,847; 5,790,436; 5,812,431; 5,859,785; 5,949,992; 5,987,238; 

            6,088,523; 6,101,323; 6,151,698; 6,181,754; 6,260,176; 6,278,964; 

            6,349,272; 6,374,390; 6,493,849; 6,504,885; 6,618,837; 6,636,839; 

            6,778,025; 6,832,358; 6,851,097; 6,928,626; 7,024,652; 7,035,782; 

            7,085,700; 7,143,021; 7,493,240; 7,571,401.

     

    Includes RSA BSAFE(R) Cryptographic or Security Protocol Software from RSA Security, Inc.

     

    User: root   Host: cadence614   HostID: A0F02   PID: 14634

    Memory  available: 58.9127 MB  physical: 820.8261 MB

    CPU Type: Intel(R) Pentium(R) CPU        P6100  @ 2.00GHz

              Processor PhysicalID CoreID Frequency

     

     

    Simulating `input.scs' on cadence614 at 11:40:37 PM, Sat Apr 19, 2014 (process id: 14634).

    Environment variable:

        SPECTRE_DEFAULTS=-E

    Command line:

        /Cadence/MMSIM10.1/tools.lnx86/spectre/bin/32bit/spectre input.scs  \

            +escchars +log ../psf/spectre.out +inter=mpsc  \

            +mpssession=spectre8_2568_46 -format sst2 -raw ../psf  \

            +lqtimeout 900 -maxw 5 -maxn 5

    spectre pid = 14634

     

    Loading /Cadence/MMSIM10.1/tools.lnx86/cmi/lib/5.0/libinfineon_sh.so ...

    Loading /Cadence/MMSIM10.1/tools.lnx86/cmi/lib/5.0/libphilips_sh.so ...

    Loading /Cadence/MMSIM10.1/tools.lnx86/cmi/lib/5.0/libsparam_sh.so ...

    Loading /Cadence/MMSIM10.1/tools.lnx86/cmi/lib/5.0/libstmodels_sh.so ...

     

    Time for NDB Parsing: CPU = 1.59876 s, elapsed = 2.67938 s.

    Time accumulated: CPU = 1.59876 s, elapsed = 2.67938 s.

    Peak resident memory used = 37 Mbytes.

     

     

    Time for Elaboration: CPU = 369.944 ms, elapsed = 387.481 ms.

    Time accumulated: CPU = 1.9687 s, elapsed = 3.07253 s.

    Peak resident memory used = 57 Mbytes.

     

     

    Time for EDB Visiting: CPU = 5.999 ms, elapsed = 7.19118 ms.

    Time accumulated: CPU = 1.9747 s, elapsed = 3.08798 s.

    Peak resident memory used = 57.3 Mbytes.

     

     

    Notice from spectre during topology check.

        Only one connection to the following 2 nodes:

            S

            cout

     

     

    Circuit inventory:

                  nodes 52

                  bsim4 8     

              bsource_1 8     

              Memristor 18    

               resistor 27    

                vsource 4     

     

     

    Time for parsing: CPU = 14.998 ms, elapsed = 123.726 ms.

    Time accumulated: CPU = 1.9897 s, elapsed = 3.21214 s.

    Peak resident memory used = 58 Mbytes.

     

    Entering remote command mode using MPSC service (spectre, ipi, v0.0, spectre8_2568_46, ).

     

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

    Transient Analysis `tran': time = (0 s -> 40 ns)

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

    Trying `homotopy = gmin' for initial conditions.

    Trying `homotopy = source' for initial conditions.

    Important parameter values:

        start = 0 s

        outputstart = 0 s

        stop = 40 ns

        step = 40 ps

        maxstep = 800 ps

        ic = all

        skipdc = no

        reltol = 1e-03

        abstol(V) = 1 uV

        abstol(I) = 1 pA

        temp = 27 C

        tnom = 27 C

        tempeffects = all

        errpreset = moderate

        method = traponly

        lteratio = 3.5

        relref = sigglobal

        cmin = 0 F

        gmin = 1 pS

     

     

    Warning from spectre at time = 38.8734 ps during transient analysis `tran'.

        WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

    Warning from spectre at time = 46.4423 ps during transient analysis `tran'.

        WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

     

        tran: time = 1.245 ns    (3.11 %), step = 308.4 ps     (771 m%)

        tran: time = 3.06 ns     (7.65 %), step = 93.55 ps     (234 m%)

     

    Warning from spectre at time = 3.10126 ns during transient analysis `tran'.

        WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

     

        tran: time = 5.205 ns      (13 %), step = 205.2 ps     (513 m%)

     

    Warning from spectre at time = 6.0115 ns during transient analysis `tran'.

        WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

    Warning from spectre at time = 6.1008 ns during transient analysis `tran'.

        WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.

            Further occurrences of this warning will be suppressed.

     

        tran: time = 7.109 ns    (17.8 %), step = 204.3 ps     (511 m%)

     

    Error found by spectre at time = 8.03662 ns during transient analysis `tran'.

        ERROR (SPECTRE-16192): No convergence achieved with the minimum time step specified.  Last acceptable solution computed at 8.03662 ns.

     

    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(I9.R2:1) = 3.27345 uA, previously 3.28612 uA.

            update too large:  | -5.69514 uA | > 1.55317 uA + 1 pA

        I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.

            update too large:  | -5.69514 uA | > 1.55317 uA + 1 pA

        I(I9.R1:1) = -6.63437 uA, previously -3.59126 uA.

            update too large:  | 5.63895 uA | > 1.55653 uA + 1 pA

        I(I9.I0:p_n_flow) = -6.63437 uA, previously -3.59126 uA.

            update too large:  | 5.63895 uA | > 1.55653 uA + 1 pA

        I(V3:p) = -508.065 uA, previously -508.099 uA.

            update too large:  | 5.69437 uA | > 2.05796 uA + 1 pA

     Top 10 Residue too large Convergence failure:

        I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.

            residue too large: | 575.245 mV | > 5.45743 mV + 1 uV

     

     

    The following set of suggestions might help you avoid convergence difficulties.  

     

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

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

     3. Small floating resistors connected to high impedance nodes might cause convergence difficulties. Avoid very small floating resistors, particularly small parasitic resistors in semiconductors. Instead, use voltage sources or iprobes to measure current.

     4. Ensure that a complete set of parasitic capacitors is used on nonlinear devices to avoid jumps in the solution waveforms.  On MOS models, specify nonzero source and drain areas.

     5. Perform sanity check on the parameter values 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 using the `info' analysis.  Ensure that the bounds given for instance, model, output, temperature-dependent, and operating-point (if possible) parameters are reasonable.

     

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

     

     7.  Enable diagnostic messages by setting option `diagnose=yes'.

     8. Use the `cmin' parameter to install a small capacitor from every node in the circuit to ground.  This usually eliminates any jumps in the solution.

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

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

     

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

    finalTimeOP: writing operating point information to rawfile.

    Trying `homotopy = gmin'.

    Trying `homotopy = source'.

    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.


     

    • Adder_wrong_out.png
    • View
    • Hide
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 11 years ago

    Hi Sameer

    You are currently using spectre 10.1 which is already very out-dated. I think the current spectre 13.1 might resolve the convergence problem.

    Best regards
    Quek

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

    It's far more likely that the convergence issue is caused by your veriloga model or the connectivity of the circuit than it is by the version of the simulator you are using. I doubt changing to MMSIM 13.1 would solve this unless you got lucky. So please post your input.scs (so we can see the entire circuit) plus your memristor veriloga model. 

    Thanks.

    Andrew 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SAMEERGARG
    SAMEERGARG over 11 years ago

    Hii Quek & Andrew

    Thanks for your responce. As per your guidline i simulate my libreries on updated version  spectre13.1 and i got exactley what i want (Correct Output). But when i tried to resimulate then again same convergence error came in log window. I restarted my cadance 2-3 times then it worked again and later again same problem....Shall i change parameters what i discussed in privious post........

     

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

    As I explained before, the major cause of convergence problems is the quality of the models. VerilogA gives you the freedom to do things which make it very difficult for a simulator to converge - you might get lucky with a poor model, but equally you might not. Altering accuracy parameters to reach convergence should not be your first step - it should be to check whether the models are realistic. Without seeing the example I would be reluctant to suggest altering reltol etc. For such a simple circuit I really would not expect convergence challenges unless something was wrong with the models or the circuit connectivity (eg inside the gates).

    So please post the information I requested in my last post. 

    Regards,

    Andrew 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SAMEERGARG
    SAMEERGARG over 11 years ago

     Hii Andrew

    Thanks for your kind response. I am attaching simulation directory and current library in which my all logic blocs are available. I exactley dont know where i will get input.scs ile so i hope that it should be inside one of those folder... 

    Thanks

    Adder.zip
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • SAMEERGARG
    SAMEERGARG over 11 years ago

    Hiii Andrew Sir

    Hearty Thanks for your intrest. I got that what u exactley told for input.scs. Please suggest me what kind of parameter i have to changed to avoid this error. from two days onward i could not do my further analysis so please guide me.....1 more think I would like to share... later  i checked on  Spectre 11.** version in which i got output frequentley so shall i asked for updated version or by changind some parameter can solve the problem

    Input_SCS.zip
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Quek
    Quek over 11 years ago

    Hi Sameer

    I am a little confused about the following comment which you had made:

    >>> As per your guidline i simulate my libreries on updated version  spectre13.1 and i got exactley what i want (Correct Output). But when i tried to resimulate then again same convergence error came in log window.

    Would you please confirm if you meant the following?
    a. Execute "Simulation->Netlist and Run"
    b. Successful
    c. Without changing any setting, simply execute "Simulation->Netlist and Run" again
    d. Now it fails

    Best regards
    Quek

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

    I took a look at the testcase and models, and realistically it's more complex than I really have time to debug. Running "spectre +aps -ahdllint input.scs" does flag a few things that could be improved - but I think the right thing to do would be to follow this up with customer support (I'm travelling for a couple of weeks so have limited bandwidth for detailed debugging).

    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