• 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. "FATAL: Insufficient memory available" spectre issue

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 5950
  • 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

"FATAL: Insufficient memory available" spectre issue

Dresdener
Dresdener over 9 years ago

Dear all,

While running post extracted simulations of a large circuit I end up having "insufficient memory issue". I have 64 differential amplifiers connected back to back to form a delay line. By the end of this post I have pasted the required data (inventory, type of simulation, run time, and the exact error).

I do realize that this issue has already been posted many years ago.

community.cadence.com/.../15369

www.designers-guide.org/.../

My spectre version is 12.1.1.164.isr15 and DFII version is 6.1.6 and using IBM pdk which usually have elaborated models.

Post layout extraction ends up having 788277 nodes (which is enormous). I don't off course get memory issue when I simulate only schematics.

I tried using command mentioned in one of the above posts to convert spectre to 64 bits but to no avial. Although I have not tried the suggestion that Andrew mentioned in analog design forum (using : envSetVal("spectre.envOpts" "useCsfe" 'boolean t)) 

Since the circuit inventory is so much enormous, should I :

1. simulate the circuit for less time?

2. reduce voltage/current tolerances?

3. simulate only part of the circuit and give its output to following part in second simulation? (since I have a delay line I can do that)

4. simulate interconnects of the circuit in a 3D tool and simulate its S parameters (with other active devices) in spectre?

Also the circuit inventory says I have 700+ parasitic inductors. I don't know where do they come from since I extract the circuit with Calibre option R+C+CC with no inductances. Anyway here is the output of my spectre.out : 

Circuit inventory:

              nodes 788277

            bsimsoi 8163 

          bsource_1 396  

          capacitor 738887

           inductor 674  

           resistor 1147262

        transformer 2    

            vsource 6    

Notice from spectre.

    62 notices suppressed.

    24073 warnings suppressed.

Time for parsing: CPU = 3.48447 s, elapsed = 3.51935 s.

Time accumulated: CPU = 17.0184 s, elapsed = 18.1081 s.

Peak resident memory used = 1.57 Gbytes.

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

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

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

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

Finding DC approximate solution failed. Try again with try_fast_op set to no.

Trying `homotopy = gmin' for initial conditions.

DC simulation time: CPU = 3.36482 ks, elapsed = 3.3627 ks.

Important parameter values:

    start = 0 s

    outputstart = 0 s

    stop = 15 ns

    step = 15 ps

    maxstep = 300 ps

    ic = all

    useprevic = no

    skipdc = no

    reltol = 1e-03

    abstol(V) = 1 uV

    abstol(I) = 1 pA

    abstol(Temp) = 100 uC

    abstol(Pwr) = 1 nW

    temp = 100 C

    tnom = 27 C

    tempeffects = all

    errpreset = moderate

    method = traponly

    lteratio = 3.5

    relref = sigglobal

    cmin = 0 F

    gmin = 1 pS

Output and IC/nodeset summary:

               save 7    

    tran: time = 15 ps       (100 m%), step = 15 ps        (100 m%)

    tran: time = 101.4 ps    (676 m%), step = 627.4 fs    (4.18 m%)

    tran: time = 105.1 ps    (701 m%), step = 104.4 fs     (696 u%)

    tran: time = 108.6 ps    (724 m%), step = 776.5 fs    (5.18 m%)

    tran: time = 123.2 ps    (821 m%), step = 2.414 ps    (16.1 m%)

    tran: time = 149.5 ps    (997 m%), step = 3.579 ps    (23.9 m%)

    tran: time = 192.2 ps    (1.28 %), step = 6.32 ps     (42.1 m%)

    tran: time = 210.4 ps     (1.4 %), step = 3.679 ps    (24.5 m%)

    tran: time = 233.5 ps    (1.56 %), step = 2.94 ps     (19.6 m%)

    tran: time = 258 ps      (1.72 %), step = 2.881 ps    (19.2 m%)

    tran: time = 287 ps      (1.91 %), step = 3.905 ps      (26 m%)

    tran: time = 308.9 ps    (2.06 %), step = 3.414 ps    (22.8 m%)

    tran: time = 357.7 ps    (2.38 %), step = 10.55 ps    (70.3 m%)

    tran: time = 392.7 ps    (2.62 %), step = 20.75 ps     (138 m%)

    tran: time = 600.3 ps       (4 %), step = 312.5 fs    (2.08 m%)

    tran: time = 604.3 ps    (4.03 %), step = 825.5 fs     (5.5 m%)

    tran: time = 606 ps      (4.04 %), step = 234.6 fs    (1.56 m%)

    tran: time = 610 ps      (4.07 %), step = 483 fs      (3.22 m%)

    tran: time = 611.6 ps    (4.08 %), step = 482.6 fs    (3.22 m%)

    tran: time = 621.2 ps    (4.14 %), step = 2.204 ps    (14.7 m%)

    tran: time = 630.8 ps    (4.21 %), step = 852.8 fs    (5.69 m%)

    tran: time = 638.7 ps    (4.26 %), step = 1.296 ps    (8.64 m%)

    tran: time = 647.2 ps    (4.31 %), step = 1.33 ps     (8.86 m%)

    tran: time = 656.3 ps    (4.38 %), step = 1.285 ps    (8.57 m%)

    tran: time = 671.1 ps    (4.47 %), step = 2.754 ps    (18.4 m%)

    tran: time = 686.6 ps    (4.58 %), step = 2.419 ps    (16.1 m%)

    tran: time = 699.5 ps    (4.66 %), step = 2.095 ps      (14 m%)

    tran: time = 716.4 ps    (4.78 %), step = 2.859 ps    (19.1 m%)

    tran: time = 729.3 ps    (4.86 %), step = 1.511 ps    (10.1 m%)

    tran: time = 741.9 ps    (4.95 %), step = 1.025 ps    (6.83 m%)

    tran: time = 765.7 ps     (5.1 %), step = 4.92 ps     (32.8 m%)

    tran: time = 830 ps      (5.53 %), step = 13.79 ps    (91.9 m%)

Notice from spectre at time = 1.1 ns during transient analysis `tran'.

    Found trapezoidal ringing on node I681.net115.

    tran: time = 1.1 ns      (7.33 %), step = 41.12 ps     (274 m%)

    tran: time = 1.103 ns    (7.35 %), step = 614.7 fs     (4.1 m%)

    tran: time = 1.106 ns    (7.37 %), step = 248 fs      (1.65 m%)

    tran: time = 1.11 ns      (7.4 %), step = 505.4 fs    (3.37 m%)

    tran: time = 1.111 ns    (7.41 %), step = 244.2 fs    (1.63 m%)

    tran: time = 1.117 ns    (7.45 %), step = 1.252 ps    (8.35 m%)

    tran: time = 1.125 ns     (7.5 %), step = 1.59 ps     (10.6 m%)

    tran: time = 1.147 ns    (7.64 %), step = 3.353 ps    (22.4 m%)

    tran: time = 1.17 ns      (7.8 %), step = 3.568 ps    (23.8 m%)

    tran: time = 1.193 ns    (7.95 %), step = 3.216 ps    (21.4 m%)

    tran: time = 1.215 ns     (8.1 %), step = 3.118 ps    (20.8 m%)

    tran: time = 1.238 ns    (8.26 %), step = 3.201 ps    (21.3 m%)

    tran: time = 1.261 ns    (8.41 %), step = 3.432 ps    (22.9 m%)

    tran: time = 1.284 ns    (8.56 %), step = 3.307 ps      (22 m%)

    tran: time = 1.306 ns    (8.71 %), step = 3.125 ps    (20.8 m%)

    tran: time = 1.329 ns    (8.86 %), step = 3.148 ps      (21 m%)

    tran: time = 1.352 ns    (9.01 %), step = 3.33 ps     (22.2 m%)

    tran: time = 1.375 ns    (9.17 %), step = 3.393 ps    (22.6 m%)

    tran: time = 1.398 ns    (9.32 %), step = 3.167 ps    (21.1 m%)

    tran: time = 1.42 ns     (9.47 %), step = 3.112 ps    (20.7 m%)

    tran: time = 1.443 ns    (9.62 %), step = 3.216 ps    (21.4 m%)

    tran: time = 1.466 ns    (9.77 %), step = 3.436 ps    (22.9 m%)

    tran: time = 1.502 ns      (10 %), step = 6.673 ps    (44.5 m%)

    tran: time = 1.601 ns    (10.7 %), step = 729.8 fs    (4.87 m%)

    tran: time = 1.605 ns    (10.7 %), step = 493.8 fs    (3.29 m%)

    tran: time = 1.606 ns    (10.7 %), step = 377.7 fs    (2.52 m%)

    tran: time = 1.61 ns     (10.7 %), step = 185.6 fs    (1.24 m%)

    tran: time = 1.614 ns    (10.8 %), step = 885.6 fs     (5.9 m%)

    tran: time = 1.627 ns    (10.8 %), step = 1.268 ps    (8.46 m%)

    tran: time = 1.635 ns    (10.9 %), step = 954 fs      (6.36 m%)

    tran: time = 1.646 ns      (11 %), step = 1.482 ps    (9.88 m%)

    tran: time = 1.654 ns      (11 %), step = 1.136 ps    (7.58 m%)

    tran: time = 1.677 ns    (11.2 %), step = 5.489 ps    (36.6 m%)

 

Fatal error found by spectre at time = 1.68366 ns during transient analysis `tran'.

    FATAL: Insufficient memory available.

Aggregate audit (11:52:17 PM, Tue Apr 26, 2016):

Time used: CPU = 5.18 ks (1h 26m 23s), elapsed = 5.18 ks (1h 26m 23s), util. = 100%.

Time spent in licensing: elapsed = 102 ms.

Peak memory used = 1.57 Gbytes.

Simulation started at: 10:25:54 PM, Tue Apr 26, 2016, ended at: 11:52:17 PM, Tue Apr 26, 2016, with elapsed time (wall clock): 5.18 ks (1h 26m 23s).

spectre completes with 1 error, 14 warnings, and 8 notices.

spectre terminated prematurely due to fatal error.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 9 years ago

    Unknown said:

    I tried using command mentioned in one of the above posts to convert spectre to 64 bits but to no avial. Although I have not tried the suggestion that Andrew mentioned in analog design forum (using : envSetVal("spectre.envOpts" "useCsfe" 'boolean t)) 

    Since the circuit inventory is so much enormous, should I :

    1. simulate the circuit for less time?

    2. reduce voltage/current tolerances?

    3. simulate only part of the circuit and give its output to following part in second simulation? (since I have a delay line I can do that)

    4. simulate interconnects of the circuit in a 3D tool and simulate its S parameters (with other active devices) in spectre?

    Also the circuit inventory says I have 700+ parasitic inductors. I don't know where do they come from since I extract the circuit with Calibre option R+C+CC with no inductances. Anyway here is the output of my spectre.out : 

    OK, first of all, the useCsfe is irrelevant since "SFE" has been used since MMSIM6.0 - so way before the version you're using. Also, that's nothing to do with the memory consumption. In this case you just need to tell spectre to run in 64 bit mode, which in ADE can be done on the Setup->Environment form (there's a checkbox to enable running 64 bit spectre).

    Some other answers:

    1. This won't help. The memory consumption is based on the size of the circuit, not the length of the simulation (it doesn't remember all the historical data). The one exception is if you're running with the output format being PSF XL and you're saving all node voltages - but even then, the memory should be controlled so that it flushes the buffers more frequently. Anyway, it's irrelevant if  you move to 64 bit (although saving every single node is probably not wise anyway)
    2. This won't help either (other than making the simulation faster)
    3. You could do that, but again, 64 bit is the simple answer.
    4. This is likely to cause more problems (and take more time) than it's worth. A 3D simulator is likely to be very slow for any reasonably complex network, plus you then have the challenges of recovering all the data you lost by converting a frequency domain description back into the time domain.

    The inductors may not be parasitic inductors - they may be included in other models in the design hierarchy. I can't tell that without seeing the circuit though. Anyway, I doubt it's worth worrying too much about...

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Dresdener
    Dresdener over 9 years ago

    Hi Andrew,

    Thanks. 

    I did couple of things to make my simulations running:

    1. changed the spectre to 64 bits.

    2. reduced the tolerances by a factor of 10 

    3. Used high performance Mode "APS" and used manual multithreading option (set the number of threads to 20)

     I believe the 2nd and 3rd points can only speed up the simulations and setting the simulator to 64 bit mode has likely done the job.

    • 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