Actually i crated a Memristor Model by using VerilogA code. Then i designed logic gates by using the same with different methodology and i got correct simulated output but when i combined all individual logic gates to make a simple 1 bit adder then i got convergence error. I did simulation for 40n sec but i am getting result upto 6-8 ns . Even i am not able to see input pulse. Please help me to short out this problem. Iam attaching my schematic and log file
************************************************
Transient Analysis `tran': time = (0 s -> 40 ns)
************************************************
Trying `homotopy = gmin' for initial conditions.
Trying `homotopy = source' for initial conditions.
Important parameter values:
start = 0 s
outputstart = 0 s
stop = 40 ns
step = 40 ps
maxstep = 800 ps
ic = all
skipdc = no
reltol = 1e-03
abstol(V) = 1 uV
abstol(I) = 1 pA
temp = 27 C
tnom = 27 C
tempeffects = all
errpreset = moderate
method = traponly
lteratio = 3.5
relref = sigglobal
cmin = 0 F
gmin = 1 pS
Warning from spectre at time = 38.8734 ps during transient analysis `tran'.
WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.
Warning from spectre at time = 46.4423 ps during transient analysis `tran'.
WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.
tran: time = 1.245 ns (3.11 %), step = 308.4 ps (771 m%)
tran: time = 3.06 ns (7.65 %), step = 93.55 ps (234 m%)
Warning from spectre at time = 3.10126 ns during transient analysis `tran'.
WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.
tran: time = 5.205 ns (13 %), step = 205.2 ps (513 m%)
Warning from spectre at time = 6.0115 ns during transient analysis `tran'.
WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.
Warning from spectre at time = 6.1008 ns during transient analysis `tran'.
WARNING (SPECTRE-16266): Error requirements were not satisfied because of convergence difficulties.
Further occurrences of this warning will be suppressed.
tran: time = 7.109 ns (17.8 %), step = 204.3 ps (511 m%)
Error found by spectre at time = 8.03662 ns during transient analysis `tran'.
ERROR (SPECTRE-16192): No convergence achieved with the minimum time step specified. Last acceptable solution computed at 8.03662 ns.
The values for those nodes that did not converge on the last Newton iteration are given below. The manner in which the convergence criteria were not satisfied is also given.
Failed test: | Value | > RelTol*Ref + AbsTol
Top 10 Solution too large Convergence failure:
I(I9.R2:1) = 3.27345 uA, previously 3.28612 uA.
update too large: | -5.69514 uA | > 1.55317 uA + 1 pA
I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.
update too large: | -5.69514 uA | > 1.55317 uA + 1 pA
I(I9.R1:1) = -6.63437 uA, previously -3.59126 uA.
update too large: | 5.63895 uA | > 1.55653 uA + 1 pA
I(I9.I0:p_n_flow) = -6.63437 uA, previously -3.59126 uA.
update too large: | 5.63895 uA | > 1.55653 uA + 1 pA
I(V3:p) = -508.065 uA, previously -508.099 uA.
update too large: | 5.69437 uA | > 2.05796 uA + 1 pA
Top 10 Residue too large Convergence failure:
I(I9.I1:p_n_flow) = 3.27345 uA, previously 3.28612 uA.
residue too large: | 575.245 mV | > 5.45743 mV + 1 uV
The following set of suggestions might help you avoid convergence difficulties.
1. Evaluate and resolve any notice, warning, or error messages.
2. Use realistic device models. Check all component parameters, particularly nonlinear device model parameters, to ensure that they are reasonable.
3. Small floating resistors connected to high impedance nodes might cause convergence difficulties. Avoid very small floating resistors, particularly small parasitic resistors in semiconductors. Instead, use voltage sources or iprobes to measure current.
4. Ensure that a complete set of parasitic capacitors is used on nonlinear devices to avoid jumps in the solution waveforms. On MOS models, specify nonzero source and drain areas.
5. Perform sanity check on the parameter values using the parameter range checker (use ``+param param-limits-file'' as a command line argument) and heed any warnings. Print the minimum and maximum parameter value using the `info' analysis. Ensure that the bounds given for instance, model, output, temperature-dependent, and operating-point (if possible) parameters are reasonable.
6. Check the direction of both independent and dependent current sources. Convergence problems might result if current sources are connected such that they force current backward through diodes.
7. Enable diagnostic messages by setting option `diagnose=yes'.
8. Use the `cmin' parameter to install a small capacitor from every node in the circuit to ground. This usually eliminates any jumps in the solution.
9. Loosen tolerances, particularly absolute tolerances like `iabstol' (on options statement). If tolerances are set too tight, they might preclude convergence.
10. Try to simplify the nonlinear component models in order to avoid regions in the model that might contribute to convergence problems.
Analysis `tran' was terminated prematurely due to an error.
finalTimeOP: writing operating point information to rawfile.
Trying `homotopy = gmin'.
Trying `homotopy = source'.
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.