Pseudo Transient Initial Conditions and DC Convergence

62 views
Skip to first unread message

fnp

unread,
Apr 19, 2024, 12:15:31 PMApr 19
to xyce-users
Hi Xyce Team,

i successfully simulated a circuit with this inventory in Xyce:

***** Device Count Summary ...
       B level 1 (Expression Based Voltage or Current Source)    36
       C level 1 (Capacitor)                                   1592
       D level 1,2 (Diode)                                     3047
       E level 1 (Linear Voltage Controlled Voltage Source)      14
       custom_veriloga1 level 1 (ADMS custom_veriloga1)                     4
       L level 1 (Inductor)                                      51
       M level 103 (PSP103VA MOSFET)                           6558
       Q level 10000234 (HICUM v2.4.0 four-terminal)            396
       R level 1 (Resistor)                                   11969
       custom_veriloga2 level 1 (ADMS custom_veriloga2)         4
       custom_veriloga3 level 1 (ADMS custom_veriloga3)         1
       custom_veriloga4 level 1 (ADMS custom_veriloga4)        12
       custom_veriloga5 level 1 (ADMS custom_veriloga5)        17
       custom_veriloga6 level 1 (ADMS custom_veriloga6)         2
       custom_veriloga7 level 1 (ADMS custom_veriloga7)         1
       custom_veriloga8 level 1 (ADMS custom_veriloga8)           160
       V level 1 (Independent Voltage Source)                    26
       ------------------------------------------------------------
       Total Devices                                          23890
***** Setting up matrix structure...
***** Number of Unknowns = 63442
***** Initializing...

The circuit is designed in a BiCMOS process for which a Spectre PDK is provided
by the foundry but unfortunately I can't share it.

In spectre, only the dptran algorithm converges, gmin and source don't work.
This is probably because the circuit has multiple feedback loops that could
have non intended stable operating points.

So I converted the netlist to Xyce format and implemented a basic ptran
setup by replacing each DC source with a ramp source that ramps up from
0 to its final value and ran a transient with the UIC option.

The good news is that this converges even significantly faster than spectre to the exact same operating point that spectre finds.

Now I want to run other analyses based on this operating point (AC, etc).
So I added a .save and saved an initial conditions file at the end of the transient simulation.

Then I take the original netlist with the DC sources (this time not the ramp-up sources)
and include the initial conditions file that I got from the ptran run before.

My hope is that now that I actually have a perfect operating point file I should be able
to get the normal .op analysis to converge with the help of the initial conditions file, but it doesn't seem to work:

***** Solution Summary *****
Number Successful Steps Taken: 0
Number Failed Steps Attempted: 1
Number Jacobians Evaluated: 1
Number Linear Solves: 1
Number Failed Linear Solves: 1
Number Residual Evaluations: 4
Number Nonlinear Convergence Failures: 1
Total Residual Load Time: 0.235939 seconds
Total Jacobian Load Time: 0.019237 seconds
Total Linear Solution Time: 0.022625 seconds

Failed DC sweep steps:
DC Step # 1

I also tried the same approach with a nodeset-file instead of initial-conditions but it also doesn't converge.

Do you have any ideas how to solve this?

It looks like the whole thing is actually solvable because the ptran apporach converges so nicely. It would be a shame if that ptran operating point can't be "transferred" to a "real" operating point solution that can be used for AC and so on.

Also, if this approach turns out to work, it might even make sense to implement a ptran approach for DC in Xyce itself. Replacing the DC sources with ramps and running a tran and then taking the end-point of the tran as the DC solution.

Best regards,
Thomas

Mehmet Cirit

unread,
Apr 23, 2024, 1:59:56 PMApr 23
to fnp, xyce-users
Try saving the state of the circuit into a .ic statement. Read the initial state back and perform  whatever ac analysis
you want. If you have flops, you need to do that anyway. It will take two runs.

--
You received this message because you are subscribed to the Google Groups "xyce-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to xyce-users+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/xyce-users/2cf8ad6b-f55d-4a3c-a7ec-ea34d483dff1n%40googlegroups.com.


--

Dr. Mehmet A. Cirit                    Phone:  (408) 647-6025
Library Technologies, Inc.        Cell:       (408) 647-6025
19959 Lanark Lane                   http://www.libtech.com
Saratoga, CA 95070                 Email: m...@libtech.com

fnor...@gmail.com

unread,
Apr 23, 2024, 2:00:01 PMApr 23
to Mehmet Cirit, xyce-users
Hi Mehmet,

thank you for your reply! That's exactly what I am trying to do. But the dc op computation in the second run using the initial conditions created in the first run fails.

Best regards,
Thomas

Mehmet Cirit (Ceridli)

unread,
Jul 16, 2024, 3:33:45 PM (11 days ago) Jul 16
to xyce-users
Skip dc for the second stage.

xyce-users

unread,
Jul 22, 2024, 7:42:05 PM (5 days ago) Jul 22
to xyce-users
Thomas,

If you add "NOOP" or "UIC" to the .TRAN line, then Xyce will apply the .IC statements as initial conditions and will otherwise skip the DCOP calculation.  If you try this does it work for you?

If you don't add these, then Xyce attempts to perform a DCOP calculation while applying the IC statements as constraints.

thanks,
Eric

fnp

unread,
Jul 23, 2024, 8:13:06 PM (4 days ago) Jul 23
to xyce-users
Hi Eric,

I did that and it worked! And even better, I found the cause of the .op failing to converge!

In the .op that didn't converge, I had also specified .options nonlin continuation=35 because for some other circuits it helped 'magically', so I kept it.
But in this case it prevents the .op from converging.

So I removed it and the .op now converges perfectly with the nodeset from the previous transient simulation.

You suggestion helped a lot to fix that problem. Thank you!

Thomas

xyce-users

unread,
Jul 24, 2024, 1:19:10 PM (3 days ago) Jul 24
to xyce-users
Glad that helped!  I think continuation=35 is sequential source stepping, which can be helpful in some cases.  

But if you have it set, then Xyce won't attempt anything else.     By default, if you don't set any continuation options, Xyce will attempt a sequence of different methods.  But, if you set a specific option, that is the only one it will try.  So, if that one method fails, game over.


thanks,
Eric
Reply all
Reply to author
Forward
0 new messages