Pseudo Transient Initial Conditions and DC Convergence

Skip to first unread message


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,

Mehmet Cirit

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
To view this discussion on the web visit


Dr. Mehmet A. Cirit                    Phone:  (408) 647-6025
Library Technologies, Inc.        Cell:       (408) 647-6025
19959 Lanark Lane         
Saratoga, CA 95070                 Email:

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,

Mehmet Cirit (Ceridli)

Jul 16, 2024, 3:33:45 PM (5 days ago) Jul 16
to xyce-users
Skip dc for the second stage.
Reply all
Reply to author
0 new messages