Example #1
0
import devsim

device="MyDevice"
region="MyRegion"

xmin=0.0
xmax=1.0
ymin=0.0
### not that ymid my not exactly line up with a 0.5 gathered through summation, so use closes bloat with triangle rule to claim ownership
ymid1=0.5
ymid2=0.6
ymax=1.0

devsim.create_2d_mesh(   mesh="dog")
devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=-0.001, ps=0.001)
devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=xmin,   ps=0.1)
devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=xmax,   ps=0.1)
devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=ymin,   ps=0.1)
devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=ymax,   ps=0.1)
#in order to capture interfaces
devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=+1.001, ps=0.001)
# color triangles not nodes or edges
# error if region doesn't have any triangles
# last add_region has highest precedence
# allow use of names or tags
# check my parser to verify that adding is possible (via dynamic_cast) 
# note this region won't have equation numbers
devsim.add_2d_region( mesh="dog", material="gas", region="gas1", yl=-.001, yh=0.0)
devsim.add_2d_region( mesh="dog", material="gas", region="gas2", yl=1.0, yh=1.001)
devsim.add_2d_region( mesh="dog", material="Oxide", region="r0", xl=xmin, xh=xmax, yl=ymid1, yh=ymin)
Example #2
0
# limitations under the License.

# solid state resistor ssac
import devsim
import test_common

devsim.circuit_element(name="V1", n1="topbias", n2=0, acreal=1.0)

device = "MyDevice"
region = "MyRegion"

####
#### Meshing
####
devsim.create_2d_mesh(mesh="dog")
devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=0, ps=1e-6)
devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=1e-5, ps=1e-6)

devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=0, ps=1e-6)
devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=1e-5, ps=1e-6)

devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=-1e-8, ps=1e-8)
devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=1.001e-5, ps=1e-8)

devsim.add_2d_region(mesh="dog", material="Si", region=region)
devsim.add_2d_region(mesh="dog", material="Si", region="air1", xl=-1e-8, xh=0)
devsim.add_2d_region(mesh="dog",
                     material="Si",
                     region="air2",
                     xl=1.0e-5,
                     xh=1.001e-5)
Example #3
0
x_device_left=(x_bulk_left - air_thickness)
x_device_right=(x_bulk_right + air_thickness)

y_bulk_top=     0.0
y_oxide_top=    (y_bulk_top - oxide_thickness)
y_oxide_mid=    (0.5 * (y_oxide_top + y_bulk_top))
y_gate_top=     (y_oxide_top - gate_thickness)
y_gate_mid=     (0.5 * (y_gate_top + y_oxide_top))
y_device_top=   (y_gate_top - air_thickness)
y_bulk_bottom=  (y_bulk_top + device_thickness)
y_bulk_mid=     (0.5 * (y_bulk_top + y_bulk_bottom))
y_device_bottom=(y_bulk_bottom + air_thickness)
y_diffusion=    (y_bulk_top + diffusion_thickness)

devsim.create_2d_mesh(  mesh="mos")
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_device_top, ps=max_y_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_gate_top, ps=y_gate_top_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_gate_mid, ps=y_gate_mid_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_oxide_top, ps=y_gate_bot_spacing, ns=y_oxide_mid_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_oxide_mid, ps=y_oxide_mid_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_bulk_top, ns=y_oxide_mid_spacing, ps=y_channel_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_diffusion, ps=y_diffusion_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_bulk_mid, ps=y_bulk_mid_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_bulk_bottom, ns=y_bulk_bottom_spacing, ps=max_y_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="y", pos=y_device_bottom, ps=max_y_spacing)

devsim.add_2d_mesh_line(mesh="mos", dir="x", pos=x_center, ps=x_channel_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="x", pos=x_gate_left, ps=x_channel_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="x", pos=x_bulk_left, ps=x_diffusion_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="x", pos=x_gate_right, ps=x_channel_spacing)
devsim.add_2d_mesh_line(mesh="mos", dir="x", pos=x_bulk_right, ps=x_diffusion_spacing)
Example #4
0
xmin = -25
x1 = -24.975
x2 = -2
x3 = 2
x4 = 24.975
xmax = 25.0

ymin = 0.0
y1 = 0.1
y2 = 0.2
y3 = 0.8
y4 = 0.9
ymax = 50.0

devsim.create_2d_mesh(mesh=device)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=ymin, ps=0.1)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=y1, ps=0.1)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=y2, ps=0.1)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=y3, ps=0.1)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=y4, ps=0.1)
devsim.add_2d_mesh_line(mesh=device, dir="y", pos=ymax, ps=5.0)

device = device
region = "air"

devsim.add_2d_mesh_line(mesh=device, dir="x", pos=xmin, ps=5)
devsim.add_2d_mesh_line(mesh=device, dir="x", pos=x1, ps=2)
devsim.add_2d_mesh_line(mesh=device, dir="x", pos=x2, ps=0.05)
devsim.add_2d_mesh_line(mesh=device, dir="x", pos=x3, ps=0.05)
devsim.add_2d_mesh_line(mesh=device, dir="x", pos=x4, ps=2)
devsim.add_2d_mesh_line(mesh=device, dir="x", pos=xmax, ps=5)
Example #5
0
def createMesh(device, region):
    devsim.create_2d_mesh(mesh="dog")
    devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=0, ps=1e-6)
    devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=0.5e-5, ps=1e-8)
    devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=1e-5, ps=1e-6)
    devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=0, ps=1e-6)
    devsim.add_2d_mesh_line(mesh="dog", dir="y", pos=1e-5, ps=1e-6)

    devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=-1e-8, ps=1e-8)
    devsim.add_2d_mesh_line(mesh="dog", dir="x", pos=1.001e-5, ps=1e-8)

    devsim.add_2d_region(mesh="dog", material="Si", region=region)
    devsim.add_2d_region(mesh="dog",
                         material="Si",
                         region="air1",
                         xl=-1e-8,
                         xh=0)
    devsim.add_2d_region(mesh="dog",
                         material="Si",
                         region="air2",
                         xl=1.0e-5,
                         xh=1.001e-5)

    devsim.add_2d_contact(mesh="dog",
                          name="top",
                          region=region,
                          yl=0.8e-5,
                          yh=1e-5,
                          xl=0,
                          xh=0,
                          bloat=1e-10,
                          material="metal")
    devsim.add_2d_contact(mesh="dog",
                          name="bot",
                          region=region,
                          xl=1e-5,
                          xh=1e-5,
                          bloat=1e-10,
                          material="metal")

    devsim.finalize_mesh(mesh="dog")
    devsim.create_device(mesh="dog", device=device)