Forum
Jun 30th, 2022, 1:16pm
 Pages: 1 2 3
 Signal exceeds blowup quantity (Read 32131 times)
 pancho_hideboo Senior Fellow Offline Posts: 1424 Real Homeless Re: Signal exceeds blowup quantity Reply #15 - Sep 15th, 2010, 9:09am   .matteo wrote on Sep 15th, 2010, 9:02am:So, why for ka=1 is still not converging? Am I messing up two different kind of stabilities? "Non Physical" are completely different issues from "Unstability".Total energy stored in inductors with coupling is negative for your circuits with your parameters.This is "Non-Physical".This situation is similar to "Non-Causal-System" which is also "Non Physical".There is no problem in pure frequency domain HB Analysis for handling "Non-Causal-System".But it is not true for time domain analysis. Back to top « Last Edit: Sep 15th, 2010, 11:14am by pancho_hideboo »     IP Logged
 Ken Kundert Global Moderator Offline Posts: 2336 Silicon Valley Re: Signal exceeds blowup quantity Reply #16 - Sep 15th, 2010, 12:21pm   Let me try to clear a few things up. First, this is not a convergence problem, and it is not a Spectre problem. Your circuit is unstable and Spectre is right to issue the blow up message because the resulting waveforms do shoot off to infinity.Your circuit is unstable because your inductance matrix is not positive definite. I know this because I converted your netlist into a python script that constructed and analyzed the eigenvalues of your inductance matrix. That script is: Code:```import numpy from math import sqrt L = numpy.zeros((10, 10)) L0=1.3e-9 L1=1.3e-9 L2=1.4e-9 L3=1.4e-9 L4=1.5e-9 L5=1.5e-9 L6=1.265e-9 L7=1.265e-9 L8=4.165e-9 L9=4.165e-9 L[0][2] = 1*sqrt(L0*L2) L[2][0] = 1*sqrt(L2*L0) L[1][3] = 1*sqrt(L1*L3) L[3][1] = 1*sqrt(L3*L1) L[5][7] = 1*sqrt(L5*L7) L[7][5] = 1*sqrt(L7*L5) L[4][6] = 1*sqrt(L4*L6) L[6][4] = 1*sqrt(L6*L4) L[7][8] = 0.185*sqrt(L7*L8) L[8][7] = 0.185*sqrt(L8*L7) L[6][9] = 0.185*sqrt(L6*L9) L[9][6] = 0.185*sqrt(L9*L6) L[0][7] = 0.823*sqrt(L0*L7) L[7][0] = 0.823*sqrt(L7*L0) L[1][6] = 0.823*sqrt(L1*L6) L[6][1] = 0.823*sqrt(L6*L1) L[0][0] = L0 L[1][1] = L1 L[2][2] = L2 L[3][3] = L3 L[4][4] = L4 L[5][5] = L5 L[6][6] = L6 L[7][7] = L7 L[8][8] = L8 L[9][9] = L9 ev = numpy.linalg.eigvalsh(L) print ev ```It computed the eigenvalues as Code:```[ -6.69232309e-10  -6.69232309e-10   4.50778482e-10   4.50778482e-10   2.31985763e-09   2.31985763e-09   3.26523077e-09   3.26523077e-09   4.26336543e-09   4.26336543e-09] ```Several of the eigenvalues are negative, meaning that the inductance matrix is not positive definite, meaning that your coupled inductor is not passive.So this leaves three questions to be answered.1. Why does ADS eigenanalysis report the circuit as being stable?I don't know why. Perhaps Pancho Hideboo accidentally modified the circuit, or perhaps there is a bug in ADS. A pole-zero analysis by Spectre reports RHP poles.2. Why does harmonic balance analysis give a bounded result (even with k=1)?Like DC analysis, HB analysis computes a steady-state solution regardless of whether that solution is stable. In a very real sense, this is a problem with HB analysis because it can lead you to believe your circuit is working properly when it is really unstable.3. Why do HSpice results remain bounded?I believe that this is because HSpice is using too large a timestep. It is a known problem with transient simulators that like HB simulators they too can sometimes ignore instabilities if they take too large a timestep. Forcing them to take smaller timesteps will eventually cause them to properly produce waveforms that exhibit the instability.One final comment. In his last post, Pancho Hideboo seems to suggest that the fact that HB simulators are capable of simulating non-physical systems is a good thing. In fact it is not. It can lead designers to into a false sense of security. For example, in this case if you were using only a harmonic balance simulator, you might have missed the fact that your inductor model is fundamentally flawed.-Ken Back to top IP Logged
 pancho_hideboo Senior Fellow Offline Posts: 1424 Real Homeless Re: Signal exceeds blowup quantity Reply #17 - Sep 15th, 2010, 8:31pm   Ken Kundert wrote on Sep 15th, 2010, 12:21pm:3. Why do HSpice results remain bounded?I believe that this is because HSpice is using too large a timestep. No.Even if I set "delmax" fairly small, results are same. Back to top IP Logged
 Ken Kundert Global Moderator Offline Posts: 2336 Silicon Valley Re: Signal exceeds blowup quantity Reply #18 - Sep 15th, 2010, 10:06pm   Pancho Hideboo,     Please post the full HSpice netlist.-Ken Back to top IP Logged
 pancho_hideboo Senior Fellow Offline Posts: 1424 Real Homeless Re: Signal exceeds blowup quantity Reply #19 - Sep 16th, 2010, 8:15am   Ken Kundert wrote on Sep 15th, 2010, 10:06pm:Please post the full HSpice netlist. I'm using the following Sub Netlist of HSPICE format commonly for Synopsys HSPICE and Cadence Spectre."matteo.spi" Quote:* Converted from Spectre Netlist to HSPICE Netlist* Generated for: spectre* Generated on: Sep 14 17:33:16 2010* Design library name: RX* Design cell name: balun_test* Design view name: schematic* Library name: RX* Cell name: balun_eq_mdl* View name: schematic.subckt balun_eq_mdl ct p1 p2 s1 s2    C12  s1 net033   42.5e-15 ic=0    C8  net054 0   28e-15 ic=0    C10  net052 0   14e-15 ic=0    C13  net033 0   14e-15 ic=0    C9  ct net054   85e-15 ic=0    C11  s2 net052   42.5e-15 ic=0    C14  p1 s2   9e-15 ic=0    C15  p2 s2   9e-15 ic=0    C16  p2 s1   9e-15 ic=0    C6  p1 s1   9e-15 ic=0    C5  net15 0   260e-15 ic=0    C4  net27 net15   83e-15 ic=0    C3  net17 0   130e-15 ic=0    C2  p2 net17   41.5e-15 ic=0    C1  net14 0   130e-15 ic=0    C0  p1 net14   41.5e-15 ic=0    R26  s2 0   100e6    R27  p2 0   100e6    R28  p1 0   100e6    R24  s1 0   100e6    R16  net32 0   100e6    R17  net29 0   100e6    R18  net095 0   100e6    R19  net088 0   100e6    R22  net0146 0   100e6    R23  net089 0   100e6    R21  net31 0   100e6    R15  net084 net052   56    R14  net086 net054   56    R8  0 net054   38    R13  net092 ct   2.53    R11  0 net033   76    R12  net090 s2   2.53    R20  net30 0   100e6    R9  0 net052   76    R6  0 net15   40    R5  0 net17   80    R2  0 net14   80    R1  net33 p2   2.65    R0  net35 net27   2.65    R7   net088  net089   2.7e3    R10  net0146 net095   2.7e3    R4  net29 net30   2.75e3    R3  net31 net32   2.75e3*   Ka=1.0    K0 L0 L2   K='Ka'    K1 L1 L3   K='Ka'    K2 L5 L7   K='Ka'    K3 L4 L6   K='Ka'*   Kb=0.185    K4 L7 L8   K='Kb'    K5 L6 L9   K='Kb'*   Kc=0.823    K6 L0 L7   K='Kc'    K7 L1 L6   K='Kc'    L0  p1 net35   1.3e-9 ic=0    L2  net32 net31   1.4e-9 ic=0    L1  net27 net33   1.3e-9 ic=0    L3  net30 net29   1.4e-9 ic=0    L5  net095 net0146   1.5e-9 ic=0    L7  s1 net092   1.265e-9 ic=0    L4  net089 net088   1.5e-9 ic=0    L6  ct net090   1.265e-9 ic=0    L8  net033 net086   4.165e-9 ic=0    L9  net054 net084   4.165e-9 ic=0.ends balun_eq_mdl* End of subcircuit definition.* Library name: RX* Cell name: balun_test* View name: schematicX25  ct p1 0 s1 s2  balun_eq_mdl Top Netlist for HSPICE is http://www.designers-guide.org/Forum/YaBB.pl?num=1284463608/13#13.Here I add ".pz" statement.The following is a Top Netlist for Cadence Spectre Quote:// Generated for: spectre// Generated on: Sep 16 14:13:04 2010// Design library name: My_RFDE_Test// Design cell name: test_matteo// Design view name: schematicsimulator lang=spectreglobal 0parameters prf=0 frf=10G Ka=1*1.0 Kb=1*0.185 Kc=1*0.823include "~/RFDE/matteo.spi"// Library name: My_RFDE_Test// Cell name: test_matteo// View name: schematicV1 (net9 0) vsource mag=1 type=sine sinedc=0 ampl=2*sqrt(2*50*10**((prf-30)/10)) freq=frfR1 (in net9) resistor r=50R0 (ct 0) resistor r=100MC1 (s2 0) capacitor c=200fC0 (s1 0) capacitor c=200fC9 (in p1) capacitor c=1.5p ic=0*447.2mC3 (in 0) capacitor c=80f ic=0*447.2msimulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=25.0 \    tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 \    digits=5 cols=80 pivrel=1e-3 sensfile="../psf/sens.output" \    checklimitdest=psf pz ( s1 0 ) pz iprobe=V1 freq=1 tran tran stop=2n errpreset=moderate write="spectre.ic" \    writefinal="spectre.fc" annotate=status maxiters=5 designParamVals info what=parameters where=rawfilesave in p1 s1 ct s2 saveOptions options save=selected pwr=none Back to top « Last Edit: Sep 16th, 2010, 9:20am by pancho_hideboo »     IP Logged