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