Region for source and drain

Hi. I have a new problem). Let’s say I need to cover the drain and source region with uniform doping. I changed the code, but it doesn’t seem to work that way. Is it possible to create a region for a drain and a source and include them in this way?

devsim.add_2d_region(mesh="mos", material="Air"    , region="air")
devsim.add_2d_region(mesh="mos", material="Silicon", region="bulk", xl=x_bulk_left, xh=x_bulk_right, yl=y_bulk_bottom, yh=y_bulk_top)
devsim.add_2d_region(mesh="mos", material="Silicon", region="gate", xl=x_gate_left, xh=x_gate_right, yl=y_oxide_top, yh=y_gate_top)
devsim.add_2d_region(mesh="mos", material="Silicon", region="source", yl=0, yh=1.0e-5, xl=9.0e-5, xh=1.0e-4)
devsim.add_2d_region(mesh="mos", material="Silicon", region="drain", xl=0, xh=1.0e-5, yl=0, yh=1.0e-5)
devsim.add_2d_region(mesh="mos", material="Oxide"  , region="oxide", xl=x_gate_left, xh=x_gate_right, yl=y_bulk_top, yh=y_oxide_top)

devsim.add_2d_contact(mesh="mos", name="gate", region="gate", yl=y_gate_top, yh=y_gate_top, material="metal")
devsim.add_2d_contact(mesh="mos", name="body", region="bulk", yl=y_bulk_bottom, yh=y_bulk_bottom, material="metal")
devsim.add_2d_contact(mesh="mos", name="source", region="source", yl=0, yh=1.0e-5, xl=1.0e-4, xh=1.0e-4, material="metal")
devsim.add_2d_contact(mesh="mos", name="drain" , region="drain", yl=0, yh=1.0e-5, xl=0, xh=0, material="metal")

devsim.add_2d_interface(mesh="mos", name="gate_oxide", region0="gate", region1="oxide")
devsim.add_2d_interface(mesh="mos", name="bulk_oxide", region0="bulk", region1="oxide")
devsim.finalize_mesh(mesh="mos")
devsim.create_device(mesh="mos", device=device)


format_dict= {
    'gate_doping' : gate_doping,
  'source_doping' : source_doping,
  'drain_doping' : drain_doping,
#  'body_doping' : body_doping,
  'bulk_doping' : bulk_doping,
  'x_gate_left' : x_gate_left,
  'x_gate_right' : x_gate_right,
  'x_diffusion_decay' : x_diffusion_decay,
  'y_diffusion' : y_diffusion,
  'y_diffusion_decay' : y_diffusion_decay,
  'y_bulk_bottom' : y_bulk_bottom,
}

devsim.node_model(name="NetDoping"   , device=device, region="gate", equation="%(gate_doping)s" % format_dict)
devsim.node_model(name="DrainDoping" , device=device, region="drain", equation="%(drain_doping)s" % format_dict)
devsim.node_model(name="SourceDoping", device=device, region="source", equation="%(source_doping)s" % format_dict)
devsim.node_model(name="BodyDoping", device=device, region="bulk", equation="%(bulk_doping)s "% format_dict)
devsim.node_model(name="Donors",       device=device, region="drain", equation="DrainDoping")
devsim.node_model(name="Donors",       device=device, region="source", equation="SourceDoping")
devsim.node_model(name="Donors",       device=device, region="bulk", equation="1")
devsim.node_model(name="Acceptors",    device=device, region="bulk", equation="%(bulk_doping)1.15e + BodyDoping" % format_dict)
devsim.node_model(name="NetDoping",    device=device, region="bulk", equation="Donors - Acceptors")
devsim.node_model(name="NetDoping",    device=device, region="drain", equation="Donors")
devsim.node_model(name="NetDoping",    device=device, region="source", equation="Donors")

Hi @denmais ,

If you want to have a separate region for source and drain, you would need to add an interface between each of them and the bulk. You would then need to make sure that your you create an interface equation for Potential, Electrons, and Holes.

It may easier just to change the doping profiles to be abrupt, using the step, if, or ifelse functions:
https://devsim.net/symdiff.html#id4

1 Like

Thank you so much! It helped a lot

1 Like