• 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. Simulation takes longer when using readns

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 125
  • Views 14527
  • 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

Simulation takes longer when using readns

DavidIMS
DavidIMS over 10 years ago

Hello I wanted to ask if anybody has any idea how to speed up my simulation. The problem is that it needs a lot of time until it actually starts with the real simulation. The simulation starts normally, but reports a lot of Initial Condition errors like “Initial Condition computed for node X is in error by XX”. Then it seems to do nothing for hours, since there are no further notes and no notes are suppressed(I checked that by setting maxnotes very high), until it continues with Important parameter values, which also takes some hours, and then with the simulation, which just needs some minutes. Therefore if I could bypass this “setuptime”,I could save a lot of time.

So I thought it to be a problem with the initial condition, therefore I tried filling write and readns with the same name( spectre.ic), but that makes it even worse. The whole simulation now takes more time and I still get errors regarding the IC. What also confuses me is the fact, that at the end of the simulation it is stated, that the ic calculation just needed a few seconds.

I also tried using readic instead of readns, because as far as I understand it, this should act like some kind of nodeforce and this should shorten the time needed for the IC calculation. However, it did not speed it up.

 

Here are two examples, one without and one with readns. I used a smaller circuit, because the big one needs several hours to simulate. But the behavior is the same.

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

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

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

 

Notice from spectre during IC analysis, during transient analysis `tran'.

   I39<0>.I1<0>.C2: Initial condition computed between nodes I39<0>.I1<0>.net12 and I39<0>.gnd_out<0> is in error by 17.2597 uV.

   I39<0>.I1<1>.C2: Initial condition computed between nodes I39<0>.I1<1>.net12 and I39<0>.gnd_out<1> is in error by 16.3347 uV.

   I39<0>.I1<2>.C2: Initial condition computed between nodes I39<0>.I1<2>.net12 and I39<0>.gnd_out<2> is in error by 15.7473 uV.

   I39<0>.I1<3>.C2: Initial condition computed between nodes I39<0>.I1<3>.net12 and I39<0>.gnd_out<3> is in error by 15.4854 uV.

   I39<0>.I1<4>.C2: Initial condition computed between nodes I39<0>.I1<4>.net12 and I39<0>.gnd_out<4> is in error by 15.5435 uV.

       Further occurrences of this notice will be suppressed.

 

Important parameter values:

   start = 0 s

   outputstart = 0 s

   stop = 200 ns

   step = 200 ps

   maxstep = 4 ns

   ic = all

   skipdc = no

   reltol = 1e-03

   abstol(I) = 1 pA

   abstol(V) = 1 uV

   temp = 27 C

   tnom = 27 C

   tempeffects = all

   errpreset = moderate

   method = traponly

   lteratio = 3.5

   relref = sigglobal

   cmin = 1e-21 F

   gmin = 1 pS

 

   tran: time = 83.58 ps   (41.8 m%), step = 83.58 ps   (41.8 m%)

   tran: time = 5.173 ns   (2.59 %), step = 736.1 ps     (368 m%)

   ………………

   ………………

   tran: time = 197.3 ns   (98.7 %), step = 2.678 ns     (1.34 %)

Number of accepted tran steps =             96

Initial condition solution time: CPU = 6.90395 s, elapsed = 6.90675 s.

Total time required for tran analysis `tran': CPU = 129.949 s (2m 9.9s), elapsed = 135.41 s (2m 15.4s).

Time accumulated: CPU = 136.967 s (2m 17.0s), elapsed = 143.894 s (2m 23.9s).

Peak virtual memory used = 1.22 Gbytes.

 

 

Notice from spectre.

   3195 notices suppressed.

 

finalTimeOP: writing operating point information to rawfile.

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.

spectre completes with 0 errors, 4 warnings, and 3202 notices.

 

And directly after that I started the same Simulation with readns.

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

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

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

 

Notice from spectre during IC analysis, during transient analysis `tran'.

   I39<0>.I1<0>.C2: Initial condition computed between nodes I39<0>.I1<0>.net12 and I39<0>.gnd_out<0> is in error by 17.2597 uV.

   I39<0>.I1<1>.C2: Initial condition computed between nodes I39<0>.I1<1>.net12 and I39<0>.gnd_out<1> is in error by 16.3347 uV.

   I39<0>.I1<2>.C2: Initial condition computed between nodes I39<0>.I1<2>.net12 and I39<0>.gnd_out<2> is in error by 15.7473 uV.

   I39<0>.I1<3>.C2: Initial condition computed between nodes I39<0>.I1<3>.net12 and I39<0>.gnd_out<3> is in error by 15.4854 uV.

   I39<0>.I1<4>.C2: Initial condition computed between nodes I39<0>.I1<4>.net12 and I39<0>.gnd_out<4> is in error by 15.5435 uV.

       Further occurrences of this notice will be suppressed.

 

Important parameter values:

   start = 0 s

   outputstart = 0 s

   stop = 200 ns

   step = 200 ps

   maxstep = 4 ns

   ic = all

   skipdc = no

   reltol = 1e-03

   abstol(I) = 1 pA

   abstol(V) = 1 uV

   temp = 27 C

   tnom = 27 C

   tempeffects = all

   errpreset = moderate

   method = traponly

   lteratio = 3.5

   relref = sigglobal

   cmin = 1e-21 F

   gmin = 1 pS

 

   tran: time = 83.58 ps   (41.8 m%), step = 83.58 ps   (41.8 m%)

   …………

   …………         

   tran: time = 197.3 ns   (98.7 %), step = 2.678 ns     (1.34 %)

 

Number of accepted tran steps =             96

Initial condition solution time: CPU = 6.73797 s, elapsed = 6.83464 s.

Total time required for tran analysis `tran': CPU = 386.797 s (6m 26.8s), elapsed = 391.771 s (6m 31.8s).

Time accumulated: CPU = 393.825 s (6m 33.8s), elapsed = 399.446 s (6m 39.4s).

Peak virtual memory used = 1.22 Gbytes.

 

 

Notice from spectre.

   3195 notices suppressed.

 

finalTimeOP: writing operating point information to rawfile.

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.

spectre completes with 0 errors, 4 warnings, and 3202 notices.

 

My questions:

1.)    Since there are no further notes regarding problems with the ic calculation, but it doesn’t do anything for hours, what exactly is it doing? Still calculating the ic but not updating the log? Is there any way to get a more detailed log so I can see what exactly it is doing?

2.)    Why does it take even longer, when I use readns? Did I not use it correctly?

3.)    Any other ideas how to speed up this “setuptime”?

 

Thank you

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    There's not really enough information to go on here. It's not guaranteed that readns will speed things up - although usually it does tend to help if you write the dc solution and read it again. It sounds as if it is having difficulty reaching DC convergence - but precisely why, it's hard to know.

    You didn't mention which version you're using - if you're using MMSIM13.1.1 or later (that's the 13.1 Update release or a more recent hotfix, one with 13.1.1 in the version - or 14.1.*) then you can try adding +diagnose on the spectre command line. This will make it far more verbose and may give some pointers to the problem.

    In general though I would suggest you contact customer support - it's unlikely we'll be able to debug the problems with the simulation just by seeing parts of the log file in the forums...

    Kind 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