Contents Overview
-Deck layout
-Exercise One: Create a simple 1D Diode structure
-Exercise Two: Bias the 1D Diode structure
-Exercise Three: Inject a Beam of charge into the diode
-Exercise Four: Add defects into the 1D diode
-Exercise Five: Create a 2D structure
-Exercise Six: Apply a beam of light to the 2D structure
-Exercise Seven: 3D Pixel Array
-Exercise Eight: Advanced Automation Techniques
Creating a simulation deck in Atlas – Statement Order
GroupStatements
Structure SpecificationMESH
REGION
ELECTRODE
DOPING
Material & Model SpecificationMATERIAL
MODELS
CONTACT
INTERFACE
Numerical MethodsMETHOD
Electro-Optical SolutionLOG
SOLVE
LOAD
SAVE
Results AnalysisEXTRACT
TONYPLOT
N.B. This list is not exhaustive. Also, not every statement outlined above needs to be used.
Exercise One: Create a simple 1D Diode structure
We will use a simple structure to illustrate various parts of the tools. Specifically structure design, visualization and extraction of results.
Task 1: Design a 1D n+-p-p+ diode. Thickness,200μm, width, 1um, uniform substrate doping with a resistivity of concentration of 1E3 ohm.cm, P+ and N+ regions should have Gaussian doping, peak of 1E20. Save the structure.
Example 1 / Figure 1: Target device
go atlas
TITLE Exercise 1, Task 1: Create a 1D Diode Structure
# Define the Mesh
mesh
# X Mesh
x.mesh location=0.0 spacing=0.05
x.mesh location=1.0 spacing=0.05
# Y Mesh
y.mesh location=0 spacing=0.05
y.mesh location=5.0 spacing=1
y.mesh location=30 spacing=10
y.mesh location=170 spacing=10
y.mesh location=195 spacing=1
y.mesh location=200 spacing=0.05
# Define the region(s)
region number=1 silicon
# Define the electrode(s)
electrode top name=anode
electrode bottom name=cathode
# Define uniform substrate doping
#doping uniform conc=1.30e13 p.type
doping uniform resist=1e3 p.type
# Define Cathode N-Type Gaussian doping
doping gaus n.type peak=0 CONCENTRATION=2e19 junc=1.5
# Define Anode P-Type Gaussian doping
doping gaus p.type peak=200 CONCENTRATION=2e19 junc=198.5
# Save the structure
structure outfile=OneD_Diode.str
quit
Task 2: Vary the substrate resistivity and use the value in the name of the structure. Use the extract statement to extract the Net doping profile down the centre of the device.
go atlas
TITLE Exercise 1, Task 2: Create a 1D structure, vary resistivity of Substrate
set SubRes=1e4
# Define the Mesh
mesh
# X Mesh
x.mesh location=0.0 spacing=0.05
x.mesh location=1.0 spacing=0.05
# Y Mesh
y.mesh location=0 spacing=0.05
y.mesh location=5.0 spacing=1
y.mesh location=30 spacing=10
y.mesh location=170 spacing=10
y.mesh location=195 spacing=1
y.mesh location=200 spacing=0.05
# Define the region(s)
region number=1 silicon
# Define the electrode(s)
electrode top name=anode
electrode bottom name=cathode
# Define uniform substrate doping
#doping uniform conc=1.30e13 p.type
doping uniform resist=$SubRes p.type
# Define Cathode N-Type Gaussian doping
doping gaus n.type peak=0 CONCENTRATION=2e19 junc=1.5
# Define Anode P-Type Gaussian doping
doping gaus p.type peak=200 CONCENTRATION=2e19 junc=198.5
# Save the structure
structure outfile=OneD_Diode_NSub_$"SubRes".str
extract init inf="OneD_Diode_NSub_$'SubRes'.str"
extract name="NetDop_$'SubRes'" curve(depth,impurity="Net Doping" material="Silicon" \
mat.occno=1 x.val=0.5) outfile="NetDop_$'SubRes'.dat"
quit
Task 3:Now also use variables to vary the substrate thickness. Use the values in the name of the structure. Again, use the extract statement to extract the Net doping profile down the centre of the device.
go atlas
TITLE Exercise 1, Task 3: Create a 1D Structure, vary Resistivity and substrate thickness
set SubRes=1e4
set SubThick=200
# Define the Mesh
mesh
# X Mesh
x.mesh location=0.0 spacing=0.05
x.mesh location=1.0 spacing=0.05
# Y Mesh
y.mesh location=0 spacing=0.05
y.mesh location=5 spacing=1
y.mesh location=30 spacing=10
y.mesh location=$SubThick-30 spacing=10
y.mesh location=$SubThick-5 spacing=1
y.mesh location=$SubThick spacing=0.05
# Define the region(s)
region number=1 silicon
# Define the electrode(s)
electrode top name=anode
electrode bottom name=cathode
# Define uniform substrate doping
#doping uniform conc=1.30e13 p.type
doping uniform resist=$SubRes p.type
# Define Cathode N-Type Gaussian doping
doping gaus n.type peak=0 CONCENTRATION=2e19 junc=1.5
# Define Anode P-Type Gaussian doping
doping gaus p.type peak=200 CONCENTRATION=2e19 junc=198.5
# Save the structure
structure outfile=OneD_Diode_NSub_$"SubRes"_Th_$"SubThick".str
extract init inf="OneD_Diode_NSub_$"SubRes"_Th_$"SubThick".str"
extract name="NetDop_$'SubRes'_$'SubThick'" curve(depth,impurity="Net Doping" material="Silicon" \
mat.occno=1 x.val=0.5) outfile="NetDop_$'SubRes'_$'SubThick'.dat"
quit
Task 4:Create the same structure but now using Devedit
DevEdit version=2.8.18.R # file written Wed Aug 6 2014 11:59:29 GMT+1 (BST)
work.area x1=0 y1=0 x2=1 y2=200
# devedit 2.8.18.R (Thu Apr 10 02:21:30 PDT 2014)
# libMeshBuild 1.24.17 (Thu Apr 10 02:20:20 PDT 2014)
# libSSS 2.8.9 (Wed Apr 9 20:14:17 PDT 2014)
# libSVC_Misc 1.28.10 (Wed Apr 9 20:13:47 PDT 2014)
# libsflm 7.8.13 (Wed Apr 9 20:13:37 PDT 2014)
# libSDB 1.12.25 (Mon Mar 31 18:12:43 PDT 2014)
# libGeometry 1.30.10 (Tue Apr 1 17:39:36 PDT 2014)
# libCardDeck 1.32.15 (Wed Apr 9 20:13:01 PDT 2014)
# libDW_Set 1.28.10 (Wed Apr 9 20:12:58 PDT 2014)
# libSvcFile 1.14.12 (Mon Mar 31 18:11:24 PDT 2014)
# libsstl 1.10.5 (Mon Mar 31 18:11:26 PDT 2014)
# libDW_Misc 1.40.12 (Mon Mar 31 18:10:53 PDT 2014)
# libQSilCore 1.2.6 (Wed Apr 9 20:12:36 PDT 2014)
# libDW_Version 3.6.1 (Thu Mar 13 02:48:38 PDT 2014)
region reg=1 mat=Silicon color=0xffcc00 pattern=0x4 \
polygon="0,0 1,0 1,200 0,200"
#
impurity id=1 region.id=1 imp=Acceptors \
peak.value=13000000000000 ref.value=1000000000000 comb.func=Multiply
#
constr.mesh region=1 default
region reg=2 name=anode mat=Aluminum elec.id=2 work.func=0 color=0xffc8c8 pattern=0x7 \
line="0,0 1,0"
#
constr.mesh region=2 default
region reg=3 name=cathode mat=Aluminum elec.id=1 work.func=0 color=0xffc8c8 pattern=0x7 \
line="1,200 0,200"
#
constr.mesh region=3 default
impurity id=1 imp=Donors color=0x8c5d00 \
peak.value=1e+20 ref.value=1000000000000 comb.func=Multiply \
y1=0 y2=0 rolloff.y=both conc.func.y=Gaussian conc.param.y=0.4
impurity id=2 imp=Acceptors color=0x8c5d00 \
peak.value=1e+20 ref.value=1000000000000 comb.func=Multiply \
y1=200 y2=200 rolloff.y=both conc.func.y=Gaussian conc.param.y=0.4
# Set Meshing Parameters
#
base.mesh height=10 width=10
#
bound.cond !apply max.slope=30 max.ratio=100 rnd.unit=0.001 line.straightening=1 align.points when=automatic
#
imp.refine imp="Net Doping" scale=log sensitivity=0.17 transition=0.446684
imp.refine min.spacing=0.02
#
constr.mesh max.angle=90 max.ratio=300 max.height=10 \
max.width=0.05 min.height=0.0001 min.width=0.05
#
constr.mesh type=Semiconductor default
#
constr.mesh type=Insulator default
#
constr.mesh type=Metal default
#
constr.mesh type=Other default
#
constr.mesh region=1 default
#
constr.mesh region=2 default
#
constr.mesh region=3 default
Mesh Mode=MeshBuild
base.mesh height=10 width=10
bound.cond !apply max.slope=30 max.ratio=100 rnd.unit=0.001 line.straightening=1 align.Points when=automatic
Exercise Two: Bias the 1D Diode structure
We will use the simple structure created in the previous example and ramp up the bias on the anode electrode.
Task 1:Sweep the anode voltage from 0V to -400V and use a “SET” preferences file for tonyplot to plot the data in a pre-defined way. The lattice temperature is also defined using a set statement.
go atlas
TITLE Exercise 2, Task 1: Sweep the voltage on an electrode
set temp=236.15
# Load in the structure
mesh infile=OneD_Diode.str
# Define models, "bipolar" macro and print model parameters to runtime output (RTO)
models bipolar print temperature=$temp
# Define impact ionisation model
impact selb
# Set newton solver (default) and trap limit to 10
method newton trap maxtrap=10
# Solve for initial conditions
solve init
# from this point log IV data on all electrodes
log outf=IV_T$"temp".log
# Ramp the cathode voltage to 2V
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
# Save structure at 2V
structure outfile=IV_T$"temp"_2V.str
solve vanode=-4 vstep=-2 vfinal=-10 name=anode
# Save structure at 10V
structure outfile=IV_T$"temp"_10V.str
solve vanode=-20 vstep=-10 vfinal=-400 name=anode
# Save structure at 400V
structure outfile=IV_T$"temp"_400V.str
# Plot the IV file and use he "set" preferences file
tonyplot IV_T$"temp".log -set E2T1.set
quit
Task 2:Monitor capacitance under reverse bias and extract the peak capacitance.
go atlas
TITLE Exercise 2, Task 2: Capacitance sweep and extract peak capacitance
set temp=236.15
# Load in the structure
mesh infile=OneD_Diode.str
# Define models, "bipolar" macro and print model parameters to runtime output (RTO)
models bipolar print temperature=$temp
# Define impact ionisation model
impact selb
# Set newton solver (default) and trap limit to 10
method newton trap maxtrap=10
# Solve for initial conditions
solve init
# from this point log IV data on all electrodes
log outf=IV_T$"temp"_C.log
# Ramp the cathode voltage to 2V
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode ac.analysis freq=10e3
# Save structure at 2V
structure outfile=IV_T$"temp"_2V_C.str
solve vanode=-4 vstep=-2 vfinal=-10 name=anode ac.analysis freq=10e3
# Save structure at 10V
structure outfile=IV_T$"temp"_10V_C.str
solve vanode=-20 vstep=-10 vfinal=-400 name=anode ac.analysis freq=10e3
# Save structure at 400V
structure outfile=IV_T$"temp"_400V_C.str
extract init inf="IV_T$"temp"_C.log"
extract name="MaxCV" max(curve(v."anode",c."anode""anode"))
# Plot the IV file and use he "set" preferences file
tonyplot IV_T$"temp"_C.log -set E2T2.set
quit
Exercise Three: Inject a Beam of charge into the diode
Now we will inject a beam of chargeinto the device using the SINGLEEVENTUPSET (SEU) statements. The beam is ramped up and then removed. Once the beam is removed we can monitor the decay in current on the electrodes.
Task 1:With a partially depleted device (-40V)
go atlas
TITLE Exercise 3, Task 1: Hit the 1D diode with a particle strike
# Define the Mesh
mesh infil=OneD_Diode.str
models bipolar print
impact selb
method newton trap maxtrap=10
solve init
# Ramp to partially deplete
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
solve vanode=-4 vstep=-2 vfinal=-40 name=anode
# set up the track of the radiation for SEU
singleeventupset entry="0,-10,0." exit="0.9,200,0" radius=0.05 density=1.e18 \
t0=4.e-12 tc=2.e-12
log outf=seu_40V.log
solve tfinal=4.e-12 tstep=1.e-12
save outf=seu_40V_4e-12.str
solve tfinal=5.e-6 tstep=1.e-12
quit
Task 2:With a fully depleted device (-300V)
go atlas
TITLE Exercise 3, Task 2: Hit the 1D diode with a particle strike
# Define the Mesh
mesh infil=OneD_Diode.str
models bipolar print
impact selb
method newton trap maxtrap=10
solve init
# Ramp to fully deplete
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
solve vanode=-4 vstep=-2 vfinal=-40 name=anode
solve vanode=-50 vstep=-10 vfinal=-300 name=anode
# set up the track of the radiation for SEU
singleeventupset entry="0,-10,0." exit="0.9,200,0" radius=0.05 density=1.e18 \
t0=4.e-12 tc=2.e-12
log outf=seu_300V.log
solve tfinal=4.e-12 tstep=1.e-12
save outf=seu_300V_4e-12.str
solve tfinal=5.e-6 tstep=1.e-12
quit
Exercise Four: Add defects into the 1D diode
Now we will introduce defects into the bandgap. We do this using a variable, the variable is also used in the naming of the log / structure files so we can compare easily without over writing.
go atlas
TITLE Exercise 4, Task 1: Introduce Defects into the Silicon
set fluence = 1e15
set d1=1.613*$fluence
set d2=0.9*$fluence
set d3=0.9*$fluence
# Load in the structure
mesh infile=OneD_Diode.str
# Define models, "bipolar" macro and print model parameters to runtime output (RTO)
models bipolar print
# Define the traps
trap acceptor e.level=0.42 density=$d1 degen=1 sign=9.5e-15 sigp=9.5e-14
trap acceptor e.level=0.46 density=$d2 degen=1 sign=5e-15 sigp=5e-14
trap donor e.level=0.36 density=$d3 degen=1 sign=3.23e-13 sigp=3.23e-14
# Set newton solver (default) and trap limit to 10
method newton trap maxtrap=10
# Solve for initial conditions
solve init
# from this point log IV data on all electrodes
log outf=IV_TRAP$"fluence".log
# Ramp the cathode voltage to 2V
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
# Save structure at 2V
structure outfile=IV_TRAP$"fluence"_2V.str
solve vanode=-4 vstep=-2 vfinal=-10 name=anode
# Save structure at 10V
structure outfile=IV_TRAP$"fluence"_10V.str
solve vanode=-20 vstep=-10 vfinal=-400 name=anode
# Save structure at 400V
structure outfile=IV_TRAP$"fluence"_400V.str
# Plot the IV file and use he "set" preferences file
tonyplot IV_TRAP$"fluence".log -set E2T1.set
quit
Exercise Five: Create a 2D structure
Task 1:Create a 2D structure with 2 30 µm strips N+ in the centre, 50 µm apart. Three 15 µm wide Guard Rings should be placed on each side 30 µm apart. Add a uniform P type diffusion layer all along the front-side. The junction depth should be 0.5um. the N+ junction depth should be 1um. A backside electrode should be defined along with electrodes for the strips and guard rings.
go atlas
TITLE Exercise 5, Task 1: Create a 2D Structure
# Define the Mesh
mesh
# X Mesh
x.mesh location=0.0 spacing=2
x.mesh location=15.0 spacing=0.25
x.mesh location=22.5 spacing=1
x.mesh location=30.0 spacing=0.25
x.mesh location=45.0 spacing=2
x.mesh location=60.0 spacing=0.25
x.mesh location=67.5 spacing=1
x.mesh location=75.0 spacing=0.25
x.mesh location=90.0 spacing=2
x.mesh location=105.0 spacing=0.25
x.mesh location=112.5 spacing=1
x.mesh location=120.0 spacing=0.25
x.mesh location=135.0 spacing=2
x.mesh location=150.0 spacing=0.25
x.mesh location=165.0 spacing=1
x.mesh location=180.0 spacing=0.25
x.mesh location=205.0 spacing=2
x.mesh location=230.0 spacing=0.25
x.mesh location=245.0 spacing=1
x.mesh location=260.0 spacing=0.25
x.mesh location=275.0 spacing=2
x.mesh location=290.0 spacing=0.25
x.mesh location=297.5 spacing=1
x.mesh location=305.0 spacing=0.25
x.mesh location=320.0 spacing=2
x.mesh location=335.0 spacing=0.25
x.mesh location=342.5 spacing=1
x.mesh location=350.0 spacing=0.25
x.mesh location=365.0 spacing=2
x.mesh location=380.0 spacing=0.25
x.mesh location=387.5 spacing=1
x.mesh location=395.0 spacing=0.25
x.mesh location=410.0 spacing=2
# Y Mesh
y.mesh location=0 spacing=0.05
y.mesh location=5.0 spacing=1
y.mesh location=30 spacing=10
y.mesh location=170 spacing=10
y.mesh location=195 spacing=1
y.mesh location=200 spacing=0.05
# Define the region(s)
region number=1 silicon
# Define the electrode(s)
electrode name=GR1 x.min=16 x.max=29
electrode name=GR2 x.min=61 x.max=74
electrode name=GR3 x.min=106 x.max=119
electrode name=STR1 x.min=151 x.max=179
electrode name=STR2 x.min=231 x.max=259
electrode name=GR4 x.min=291 x.max=304
electrode name=GR5 x.min=336 x.max=349
electrode name=GR6 x.min=381 x.max=394
electrode bottom name=anode
# Define uniform substrate doping
doping uniform conc=1e14 p.type
# Define Cathode N-Type Gaussian doping
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=15 x.max=30
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=60 x.max=75
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=105 x.max=120
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=150 x.max=180
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=230 x.max=260
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=290 x.max=305
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=335 x.max=350
doping gaus n.type peak=0 CONCENTRATION=1e20 junc=1 x.min=380 x.max=395
# Define Anode P-Type Gaussian doping
doping gaus p.type peak=200 CONCENTRATION=1e20 junc=198
# Define P-Type spray
doping gaus p.type peak=0 CONCENTRATION=5e16 junc=0.5
# Save the structure
structure outfile=TwoD_Diode.str
quit
Task 2: Ramp the bias on the structure, float the guard rings. Consider the number of CPU’s used and the numerical precision
go atlas simflags="-P 6 -80"
TITLE Exercise 5, Task 2: Sweep the voltage on an electrode
set temp=300
# Load in the structure
mesh infile=TwoD_Diode.str
# Set the guard ring contacts to current boundary conditions so they float
contact name=GR1 current
contact name=GR2 current
contact name=GR3 current
contact name=GR4 current
contact name=GR5 current
contact name=GR6 current
# Define models, "bipolar" macro and print model parameters to runtime output (RTO)
models bipolar print temperature=$temp
# Define impact ionisation model
impact selb
# Set newton solver (default) and trap limit to 10
method newton trap maxtrap=10
# Solve for initial conditions
solve init
# from this point log IV data on all electrodes
log outf=2D_IV_T$"temp".log
# Ramp the cathode voltage to 2V
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
# Save structure at 2V
structure outfile=2D_IV_T$"temp"_2V.str
solve vanode=-4 vstep=-1 vfinal=-20 name=anode
# Save structure at 20V
structure outfile=2D_IV_T$"temp"_20V.str
# Plot the IV file and use he "set" preferences file
tonyplot 2D_IV_T$"temp".log -set E2T1.set
quit
Exercise Six: Apply a beam of light to the 2D structure
Simulate charge creation by a charged particle in the region between the 2 strips to study the charge sharing. Vary the angle and see how the current sharing changes.
go atlas simflags="-P 4"
TITLE Exercise 6, Task 1: Hit the 2D strucure with a beam of light
# Define the Mesh
mesh infile=TwoD_Diode.str
# Set the gaurd ring contacts to current boundary conditions so they float
contact name=GR1 current
contact name=GR2 current
contact name=GR3 current
contact name=GR4 current
contact name=GR5 current
contact name=GR6 current
models bipolar print
impact selb
method newton trap maxtrap=10
# Define the beam
beam num=1 x.o=205 y.o=-10.0 min.w=-2.0 max.w=2.0 wavelength=0.67 angle=90.0
#beam num=1 x.o=100 y.o=-10.0 min.w=-2.0 max.w=2.0 wavelength=0.67 angle=45.0
solve init
solve vanode=-0.2 vstep=-0.2 vfinal=-2 name=anode
solve vanode=-4 vstep=-2 vfinal=-10 name=anode
log outf=Beam.log
# Ramp the power on the beam up
solve b1=10 ramp.lit ramptime=1e-9 tstop=10e-9 tstep=2e-10
structure outfile=Beam.str
# Ramp the power on the beam down
solve b1=0 ramp.lit ramptime=1e-9 tstop=1.2e-6 tstep=2e-10
structure outfile=BeamFinal.str
tonyplot Beam.log -set E6T1.set
quit
Exercise Seven: 3D Pixel Array
Create a 3 x 3, 3D pixel array. The 2D plane on the screen is repeated into the depth of the page. Sometimes for meshing purposes it is better to treat the x-y plane as the top of the device rather than the side.