• 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. MMSIM, ADE no Convergence during simulation...

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 126
  • Views 19085
  • 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

MMSIM, ADE no Convergence during simulation...

marten
marten over 11 years ago

Hi all,

we just setup a new installation of MMSIM 12.11, IC6.16 and a 28nm PDK. After installing these tools and configuring PDK with the given scripts we built a simple NAND2 schematic to test our setup. But when it comes to simulation the simulator is not able to reach convergence. What could be the reason for this? We simulated the same Design with out legacy 65nm environment and it worked.So maybe this is a PDK issue ? But how to fix ?

 

Best regard,

Marten

 

Here is a part of the logfile written out by spectre:

 ...Warning from spectre during AHDL read-in.
    WARNING (VACOMP-2343): Cannot display/strobe/write information or call $system from a protected analog block.
    WARNING (VACOMP-2343): Cannot display/strobe/write information or call $system from a protected analog block.
    WARNING (VACOMP-1050): Encountered warnings in encrypted file "./designkits/DATA/MODELS/SPECTRE/CORNERS/ESD_DIODEGR.va".
    WARNING (VACOMP-2343): Cannot display/strobe/write information or call $system from a protected analog block.
    WARNING (VACOMP-1050): Encountered warnings in encrypted file "./designkits/DATA/MODELS/SPECTRE/CORNERS/ESD_DIODEGR.va".
    WARNING (VACOMP-2343): Cannot display/strobe/write information or call $system from a protected analog block.
    WARNING (VACOMP-1050): Encountered warnings in encrypted file "./designkits/DATA/MODELS/SPECTRE/CORNERS/ESD_DIODEGR.va".

Reading file:  ./designkits/DATA/MODELS/SPECTRE/CORNERS/ESD_DIODE.va

Warning from spectre during AHDL read-in.
    WARNING (VACOMP-2343): Cannot display/strobe/write information or call $system from a protected analog block.
        Further occurrences of this warning will be suppressed.
    WARNING (VACOMP-1050): Encountered warnings in encrypted file "./designkits/DATA/MODELS/SPECTRE/CORNERS/ESD_DIODE.va".

Reading file:  ./designkits/DATA/MODELS/SPECTRE/CORNERS/esdlayer.va
Reading file:  ./simulation/nand_tb/spectre/schematic/netlist/setupCornersIncludeFile.scs
Reading file:  :/simulation/nand_tb/spectre/schematic/netlist/importNetlist.scs

Time for NDB Parsing: CPU = 330 ms, elapsed = 10.3906 s.
Time accumulated: CPU = 330 ms, elapsed = 10.3906 s.
Peak resident memory used = 48.1 Mbytes.

Reading link:  ./cadence/mmsim-12.11hf096/tools.lnx86/spectre/etc/ahdl/discipline.h

Warning from spectre in `LL_NAND2AX9_P0':`I0', during hierarchy flattening.
    WARNING (SFE-32): "input.scs" 14: Duplicate specification for parameter `ptwell' (using last value specified).
    WARNING (SFE-32): "input.scs" 20: Duplicate specification for parameter `ptwell' (using last value specified).
    WARNING (SFE-32): "input.scs" 26: Duplicate specification for parameter `ptwell' (using last value specified).
    WARNING (SFE-32): "input.scs" 32: Duplicate specification for parameter `ptwell' (using last value specified).
    WARNING (SFE-32): "input.scs" 38: Duplicate specification for parameter `ptwell' (using last value specified).
        Further occurrences of this warning will be suppressed.


Time for Elaboration: CPU = 40 ms, elapsed = 41.4619 ms.
Time accumulated: CPU = 370 ms, elapsed = 10.4323 s.
Peak resident memory used = 54.3 Mbytes.


Time for EDB Visiting: CPU = 0 s, elapsed = 1.091 ms.
Time accumulated: CPU = 370 ms, elapsed = 10.4335 s.
Peak resident memory used = 54.6 Mbytes.

Loading ./cadence/mmsim-12.11hf096/tools.lnx86/spectre/lib/64bit/mdl/libSpectreEH_sh.so ...

Notice from spectre during topology check.
    No DC path from node `vdds!' to ground, Gmin installed to provide path.
    No DC path from node `gnds!' to ground, Gmin installed to provide path.


Circuit inventory:
              nodes 7
             iprobe 39   
             assert 56   
              utsoi 8    
            vsource 2    


Notice from spectre.
    6 warnings suppressed.


Time for parsing: CPU = 100 ms, elapsed = 104.374 ms.
Time accumulated: CPU = 470 ms, elapsed = 10.538 s.
Peak resident memory used = 66 Mbytes.


Warning from spectre.
    WARNING (SPECTRE-16707): Only tran supports psfxl format, result of other analyses will be in psfbin format.
Notice from spectre during transient analysis `tran'.
    No checklimit analysis defined for asserts. A default checklimit analysis 'SpectreChecklimitAnal' has been created with all asserts enabled.

The following asserts will be enabled for all subsequent analyses until the next checklimit analysis statement is found:
I0.M0.soa_299 : ON
I0.M0.soa_300 : ON
I0.M0.soa_301 : ON
I0.M0.soa_302 : ON
I0.M0.soa_303 : ON
I0.M0.soa_304 : ON
I0.MP0.soa_299 : ON
I0.MP0.soa_300 : ON
I0.MP0.soa_301 : ON
I0.MP0.soa_302 : ON
I0.MP0.soa_303 : ON
I0.MP0.soa_304 : ON
I0.MP3.soa_299 : ON
I0.MP3.soa_300 : ON
I0.MP3.soa_301 : ON
I0.MP3.soa_302 : ON
I0.MP3.soa_303 : ON
I0.MP3.soa_304 : ON
I0.MP1.soa_299 : ON
I0.MP1.soa_300 : ON
I0.MP1.soa_301 : ON
I0.MP1.soa_302 : ON
I0.MP1.soa_303 : ON
I0.MP1.soa_304 : ON
I0.MP2.soa_299 : ON
I0.MP2.soa_300 : ON
I0.MP2.soa_301 : ON
I0.MP2.soa_302 : ON
I0.MP2.soa_303 : ON
I0.MP2.soa_304 : ON
I0.MN2.soa_292 : ON
I0.MN2.soa_293 : ON
I0.MN2.soa_294 : ON
I0.MN2.soa_295 : ON
I0.MN2.soa_296 : ON
I0.MN2.soa_297 : ON
I0.MN1.soa_292 : ON
I0.MN1.soa_293 : ON
I0.MN1.soa_294 : ON
I0.MN1.soa_295 : ON
I0.MN1.soa_296 : ON
I0.MN1.soa_297 : ON
I0.MN0.soa_292 : ON
I0.MN0.soa_293 : ON
I0.MN0.soa_294 : ON
I0.MN0.soa_295 : ON
I0.MN0.soa_296 : ON
I0.MN0.soa_297 : ON
I0.MN0.soa_298 : ON
I0.MN1.soa_298 : ON
I0.MN2.soa_298 : ON
I0.MP2.soa_305 : ON
I0.MP1.soa_305 : ON
I0.MP3.soa_305 : ON
I0.MP0.soa_305 : ON
I0.M0.soa_305 : ON

***********************************************
Transient Analysis `tran': time = (0 s -> 5 ns)
***********************************************
Trying `homotopy = gmin' for initial conditions.
Trying `homotopy = source' for initial conditions.
Trying `homotopy = dptran' for initial conditions...
Trying `homotopy = ptran' for initial conditions..
Trying `homotopy = arclength' for initial conditions.
None of the instantiated devices support arclength homotopy. Skipping.

Error found by spectre during IC analysis, during transient analysis `tran'.
    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(I0:6) = 0 A
        residue too large: | -1.2 V | > 6 mV + 1 uV
    I(I0:2) = 0 A
        residue too large: | -1.2 V | > 6 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. If the analysis fails at an extreme temperature, but succeeds at room temperature, try adding a DC analysis that sweeps temperature. Start at room temperature, sweep to the extreme temperature, and write the final solution to a nodeset file.
11. Increase the value of gmin (on options statement).
12. 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).
13. Try to simplify the nonlinear component models to avoid regions that might contribute to convergence problems in the model.
14. 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.
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 `tran' was terminated prematurely due to an error.
finalTimeOP: writing operating point information to rawfile.

Error found by spectre during DC analysis, during info `finalTimeOP'.
    ERROR (SPECTRE-16041): Analysis was skipped due to inability to compute operating point.

Analysis `finalTimeOP' 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
Parents
  • Andrew Beckett
    Andrew Beckett over 11 years ago

    Hi Marten,

    Not sure why you thought that an excerpt showing me which files were read would show me anything suspicious! That didn't tell me anything useful at all...

    As I said, the input.scs is far more likely to be useful - if it's a single gate, presumably it's not very big...

    Regards,

    Andrew.

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

    Hi Marten,

    Not sure why you thought that an excerpt showing me which files were read would show me anything suspicious! That didn't tell me anything useful at all...

    As I said, the input.scs is far more likely to be useful - if it's a single gate, presumably it's not very big...

    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