I am using Cadence IC5141 and running a simulation which requires the ".IC" setup for inductors. I tried to put some value under the "initial condition" field of the inductor, but the value is going when I doubly confirmed it with the transient analysis. Are there anything that I may miss or the initial condition of the inductor does not work at all? By the way, are there any alternative way to figure this out? Thanks a lot in advance.
I'm not sure what you mean by "the value is going". You might want to clarify.
Whether initial conditions on devices is controlled by the ic parameter for tran analysis, or the force parameter for dc. This defaults to all for tran, and none for dc. It needs to be dev or all for the initial condition to be used.
By the way, you didn't specify which simulator you're using. What I'm talking about above is for spectre. The fact you're talking about ".IC" suggests to me you might be using a different simulator?
Thank you very much for your reply and sorry for the confusing.
What I really mean the value is going is the following:
1. I set the inital current of the inductor as 1mA. Later, I run the transient simulation, and the inductor current at t=0 is zero.
2. I did try to set "dev" and later "all" under the trans analysis, but none of them work.
3. I am using "spectre"
Thanks again and hope that helps.
In reply to tester:
Is this an inductor from analogLib? Or from some other library? Perhaps the other library has a field for initial condition but doesn't netlist it, or doesn't use it? I tried this myself and it does work...
If you have a simple small testcase, can you paste the input.scs here?
In reply to Andrew Beckett:
I am using the inductor in analogLib, and here is the input.scs testing file. Thank you again for your help.
// Design view name: schematicsimulator lang=spectreglobal 0
// View name: schematicV1 (net38 0) vsource dc=1.8 type=dcR1 (net31 net15) resistor r=1KR0 (net30 net13) resistor r=1KC2 (net30 net31) capacitor c=300f ic=-30mC1 (net13 net15) capacitor c=100f ic=300mL1 (net38 net31) inductor l=70nL0 (net38 net30) inductor l=70n ic=500uic net13=0.35 net30=-40m
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 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 tran tran stop=0.001m errpreset=conservative maxstep=100p ic=all write="spectre.ic" writefinal="spectre.fc" annotate=status maxiters=5 finalTimeOP info what=oppoint where=rawfile
modelParameter info what=models where=rawfileelement info what=inst where=rawfileoutputParameter info what=output where=rawfiledesignParamVals info what=parameters where=rawfileprimitives info what=primitiveswhere=rawfilesubckts info what=subckts where=rawfilesaveOptions options save=allpub
I just tried this, and plotting L0:1 (the current through the inductor):
As you can see, the current starts off at 500uA.
Thank you very much for your try. With the same exact input.scs (unless you have changed the some of the analysis parameter, which I would love to know and give a try myself), the current starts off at 30.4mA. I do not know how to paste the simulation output into this post.
Notice from spectre during IC analysis, during transient analysis `tran'. L0: Initial condition computed for node L0:1 is in error by 29.8501 mA (5.97001 k%). C2: Initial condition computed between nodes net30 and net31 is in error by 30 mV (100 %). Decrease `rforce' to reduce error in computed initial conditions. However, setting rforce too small may result in convergence difficulties or in the matrix becoming singular.
Thank you again for your help and have a nice weekend!
What version of spectre are you using ("spectre -W" should tell you this, or it also appears in the spectre log file)?
To upload the picture, I just created myself an account on pict.com and then did File->Save Image from ViVA (wavescan too) and saved a png file - I uploaded this to pict.com and then used the little image icon when posting to reference the image URL.
I tried both an MMSIM71 ISR and an IC5141 ISR for spectre, and they both gave the same results I posted. I didn't cjhange anything - just ran "spectre indic.scs" (indic.scs was your netlist, which I cut and paste and fixed the line wraps):
// Design view name: schematic
// View name: schematic
V1 (net38 0) vsource dc=1.8 type=dc
R1 (net31 net15) resistor r=1K
R0 (net30 net13) resistor r=1K
C2 (net30 net31) capacitor c=300f ic=-30m
C1 (net13 net15) capacitor c=100f ic=300m
L1 (net38 net31) inductor l=70n
L0 (net38 net30) inductor l=70n ic=500u
ic net13=0.35 net30=-40m
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 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
tran tran stop=0.001m errpreset=conservative maxstep=100p ic=all write="spectre.ic" writefinal="spectre.fc" annotate=status maxiters=5
finalTimeOP info what=oppoint where=rawfile
modelParameter info what=models where=rawfile
element info what=inst where=rawfile
outputParameter info what=output where=rawfile
designParamVals info what=parameters where=rawfile
primitives info what=primitives where=rawfile
subckts info what=subckts where=rawfile
Thank you again for your help. After running "spectre -W", I got
After running "spectre -V', I got
@(#)$CDS: spectre version 6.2.1 32bit 02/10/2008 06:20 (usim440-30) $
Hope that helps.