Hi there!
I’m stuck and could really use some help. I’m simulating a 1D diode and I keep hitting convergence failures that I can’t figure out. I’ve scrolled through old forum threads ([2D device Convergence failure - models - DEVSIM TCAD] (2D device Convergence failure)) and tried to take into account all the advice and tips there, but no luck.
Even when I set the voltage ramp super low or even to zero, I still get the same error. It feels like there’s something fundamental I might be missing or misinterpreting.
This is my mesh:
def CreateMesh(device, region):
‘’’
Meshing
‘’’
create_1d_mesh(mesh=“dio”)
add_1d_mesh_line(mesh=“dio”, pos=0, ps=1e-7, tag=“top”)
add_1d_mesh_line(mesh=“dio”, pos=0.5e-4, ps=1e-9, tag=“mid”) # RLZ in der Mitte bei 0,5 um
add_1d_mesh_line(mesh=“dio”, pos=1e-4, ps=1e-7, tag=“bot”)
add_1d_contact(mesh=“dio”, name=“top”, tag=“top”, material=“metal”)
add_1d_contact(mesh=“dio”, name=“bot”, tag=“bot”, material=“metal”)
add_1d_region(mesh=“dio”, material=“Si”,
region=region, tag1=“top”, tag2=“bot”)
finalize_mesh(mesh=“dio”)
create_device(mesh=“dio”, device=device)
This is my doping:
def SetNetDoping(device, region, acceptor="1.0e18step(0.5e-5-x)", donor="1.0e18
step(x-0.5e-5)"):
‘’’
NetDoping
‘’’
CreateNodeModel(device, region, “Acceptors”, acceptor)
CreateNodeModel(device, region, “Donors”, donor)
CreateNodeModel(device, region, “NetDoping”, “Donors-Acceptors”)
This is my Code:
#This requires a circuit element to integrated current
voltage = 0.5 # Startspannung
circuit_element(name=“V1”, n1=GetContactBiasName(“top”), n2=0, value=voltage, acreal=1.0, acimag=0.0)
CreateMesh(device=device, region=region)
SetParameters(device=device, region=region)
set_parameter(device=device, region=region, name=“taun”, value=1e-12)
set_parameter(device=device, region=region, name=“taup”, value=1e-12)
SetNetDoping(device=device, region=region)
InitialSolution(device, region)
solve(type=“transient_dc”, absolute_error=1.0, relative_error=1e-10,
maximum_iterations=30)
DriftDiffusionInitialSolution(device, region)
solve(type=“transient_dc”, absolute_error=1e12, relative_error=1e-12, maximum_iterations=3)
test_common.print_circuit_solution()
devsim.circuit_alter(name=“V1”, value=0.0)
print(“transient_tr”)
devsim.solve(type=“transient_tr”, absolute_error=1.0, relative_error=1e-14, maximum_iterations=3, tdelta=1e-3, charge_error=1e-2)
test_common.print_circuit_solution()
Are there specific parameters or settings that are particularly critical for convergence in these simulations? Or maybe some common pitfalls I might be overlooking?
Thanks a ton for any help or insights you can provide!
Viviana