I'm implementing a SPAD model(base on: SPICE modeling of single photon
avalanche diodes. by F. Zappa∗, A. Tosi, A. Dalla Mora, S. Tisa and
published in Sensors and Actuators A 153 (2009) on pages 197–204) and
the problem is in a swith out of the analogLib of Cadence (in
combination with Spectre) that should simulate the selfsustainability of
a above breakdown reversed baised diode. See circuit.PNG for the whole
circuit and "switch properties.PNG" for the properties of the switch
that troubles me. In "setup.PNG" the setup of the model of "circuit.PNG"
is showed (in short: anode and substrate are grounded, cathode is
connected to a ramp (20V -> 25V in 10u seconds) and photon is
connected to a pulse source (10Vpk-pk. Period: 2us, dutycycle 50% and a
delay of 500ns).
Because the switching voltage of the troubeling switch (W3) is 100uV,
you would expect that the switch stays closed when the voltage across
Rsense (in orange in "simulation results..PNG") is more than 100uV.
However (as can be seen in "simulation results..PNG" (the colors of
"simulation results..PNG" are matched with "circuit.PNG")) this doesn't
At first there won't flow any current (and so the voltage drop across
Rsense is zero). This is because switch S1 is closed intil
Vcathode-Vanode > 21.54 V. After that moment in time, Vtrigger won't
be grounded and so switch Strig will be in opperation mode (this can be
seen in the simulation results by the first non-zero slope of the
voltage across Rsense and the first rising egde of Vtrigger (red in the
simulation results)). After the second pulse (indicated by the indicater
in the simulation results) the voltage across Rsense is already
~1.71mV, so more then 100uV and so switch W3 should be closed (and stay
closed) resulting in a "self sustaining avalanche". When a self
sustaining avalanche occures, the current through switch Strig and W3
should be continuous (ignoring the resistance of the switches) and so
the voltage drop over Rsense should be continuous to. However, as can be
seen in "simulation_results..PNG", is isn't.
The weird thing is that after the next pulse of Vin, the switch stays closed.
Does someone recognize this behaviour or experienced it before and know a workaround of a fix for it?
Oowja: the weird thing in the middel-botom of the circuit is a piecewise
linear voltage controlled voltage source in series with a piecewise
linear voltage controlled resistor (as suggested in SPICE modeling of
single photon avalanche diodes. by F. Zappa∗, A. Tosi, A. Dalla Mora, S.
Tisa). It just models the non linear current behaviour of an reversed
biased diode in avalanche. So when Vin (Vanode-Vcathode) rises, the
current through this component rises. It works fine so I don't expect
this guy is the problem.
Because one of the replies I attached the input.scs netlist. However I couldn't upload .scs files, so I renamed it to input.txt.
With kind regard,
P.s. I also build the the setup with Rsense, the two parallel switches
and a current limitation resistor to check if the concept works (in
Cadence) and that one just worked fine.
Please post the images here rather than links to files that require a login in a different forum to view. You can attach pictures (one at a time) via the Options tab when posting.
Might also help if you posted the input.scs netlist that you're simulating.
In reply to Andrew Beckett:
Have you tried to acces the images? Because I can acces them at edaboard.com without logging in at there forum. However I've uploaded them somewhere else and made added some tumbnails and links to the start post. I also attached the input.scs file but renamed it to input.txt because this forum system won't accept .scs files.
With kind regards,
In reply to edwina:
Of course I tried to access the images. That's why I asked for you not to post things on other forums that required a login - it asked me for a login. This forum can store images (albeit only one per post), but that's usually not too onerous.
I'll take a look at what you've posted now.
OK, I can't run your circuit, because there's a VerilogA model missing, but that doesn't matter - I think it's fairly clear from the pictures and netlist you've posted. The issue is a consequence of the fact that you've only specified the Open voltage and not the Close voltage. From "spectre -h relay" (the switch is really a relay):
The four-terminal relay is a voltage controlled relay tied between terminals `t1' and `t2'. Thevoltage between terminals `ps' and `ns' controls the relay resistance. The relay resistance variesnonlinearly between `ropen' and `rclosed', the open relay resistance and closed relay resistance,respectively. These resistance values correspond to control voltages of `vt1' and `vt2' respectively.The four parameters, `vt1', `vt2', `ropen', and `rclosed', can be instance or model parameters.... ===================Instance Parameters===================1 vt1 (V) Relay resistance is `ropen' at this voltage.2 vt2=vt1+1.0 V Relay resistance is `rclosed' at this voltage.3 ropen=infinity Ohm Resistance of a fully open relay.4 rclosed=1.0 Ohm Resistance of a fully closed relay.
As you can see, the default "closed" resistance is 1V above the "open" voltage, and the resistance varies between open and closed between these two voltages. This can be seen in the following simple testcase:
//v1 (n1 0) vsource dc=1vtrig (trig 0) vsource type=pulse val0=0 val1=2 rise=100n r1 (n1 0 trig 0) relay ropen=1m rclosed=1T vt1=100msave v1:1 n1 trigtran tran stop=100n
Which I ran with "spectre testrelay.scs". I then plotted the trigger voltage and the current through the voltage source. You can see the current flow being high at the point where the trigger voltage is less than 100mV (because it is "open"), and then essentially 0 when the trigger voltage is above 1.1V - between these two it varies due to the fact that the resistance is being varied "nonlinearly. The help for the relay (spectre -h relay) explains the exact criteria.
So I think it's just that you've not specified the parameters for the switch correctly.
You're my hero! I couldn't find a proper description of the switch on the internet and I wasn't aware of the help function of spectre. So I assumed (after some simulations to hunt down its behaviour) that the closed voltage didn't affect its behaviour when left empty.I couldn't be so wrong! When set the closed voltage to 101uV it seems to work properly.
Thank you so much!
With kind regards,