def vfab(): from ipkiss.plugins.vfabrication.process_flow import VFabricationProcessFlow from pysics.basics.material.material import Material, MaterialFactory from pysics.basics.material.material_stack import MaterialStackFactory, MaterialStack from ipkiss.visualisation.display_style import DisplayStyle from ipkiss.visualisation.color import COLOR_BLUE, COLOR_RED wg_layer = clad_layer - core_layer silicon = Material(name="silicon", epsilon=3.5 ** 2, display_style=DisplayStyle(color=COLOR_BLUE)) oxide = Material(name="silicon oxide", epsilon=1.5 ** 2, display_style=DisplayStyle(color=COLOR_RED)) silicon = MaterialStack(name="silicon", materials_heights=[ (oxide, 0.5), (silicon, 0.2), (oxide, 0.5) ]) oxide = MaterialStack(name="oxide", materials_heights=[ (oxide, 0.5), (oxide, 0.2), (oxide, 0.5) ]) vfab_process = VFabricationProcessFlow(active_processes=[wg_process], process_layer_map={wg_process: wg_layer}, process_to_material_stack_map= # (wg_process, ) [((0,), silicon), ((1,), oxide), ], is_lf_fabrication={wg_process: False} ) return vfab_process
TECH.MATERIALS.SILICON = Material(name="silicon", display_style=DisplayStyle(color=COLOR_CYAN)) TECH.MATERIALS.SILICON_OXIDE = Material( name="silicon oxide", display_style=DisplayStyle(color=COLOR_BLUE)) TECH.MATERIALS.GERMANIUM = Material( name="germanium", display_style=DisplayStyle(color=COLOR_DARK_GREEN)) from pysics.basics.material.material_stack import MaterialStack, MaterialStackFactory TECH.MATERIAL_STACKS = MaterialStackFactory() MSTACK_SOI_SILICON_OXIDE_HEIGHT = 0.500 TECH.MATERIAL_STACKS.MSTACK_SOI_AIR = MaterialStack( name="Air", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.AIR, 0.380)], display_style=DisplayStyle(color=COLOR_BLUE)) TECH.MATERIAL_STACKS.MSTACK_SOI_SI_80nm = MaterialStack( name="80nm Si", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.SILICON, 0.080), (TECH.MATERIALS.AIR, 0.300)], display_style=DisplayStyle(color=COLOR_GREEN)) TECH.MATERIAL_STACKS.MSTACK_SOI_SI_150nm = MaterialStack( name="150nm Si", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT),
# Thicknesses of the differents layers MSTACK_ONO_SILICON_OXIDE_HEIGHT = 3.2 MSTACK_ONO_MSN_HEIGHT = 0.44 MSTACK_ONO_RIB_HEIGHT = 0.22 MSTACK_SILICIDE_HEIGHT = 0.05 MSTACK_CON_HEIGHT = 0.5 - (MSTACK_ONO_MSN_HEIGHT - MSTACK_ONO_RIB_HEIGHT ) # always have 0.5 contact thickness in total MSTACK_M1_HEIGHT = 0.5 MSTACK_IMD12_HEIGHT = 1.0 MSTACK_M2_HEIGHT = 0.5 # Material stacks in the MSN layer TECH.MATERIAL_STACKS.MSTACK_ONO_INVALID = MaterialStack( name="INVALID", materials_heights=[(TECH.MATERIALS.AIR, MSTACK_ONO_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.AIR, MSTACK_ONO_MSN_HEIGHT)], display_style=DisplayStyle(color=color.COLOR_WHITE)) TECH.MATERIAL_STACKS.MSTACK_ONO_OX = MaterialStack( name="Oxide", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_ONO_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.SILICON_OXIDE, MSTACK_ONO_MSN_HEIGHT)], display_style=DisplayStyle(color=COLOR_BABY_BLUE)) TECH.MATERIAL_STACKS.MSTACK_ONO_MSN = MaterialStack( name="{}nm MSN".format(int(MSTACK_ONO_MSN_HEIGHT * 1000)), materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_ONO_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.MSN, MSTACK_ONO_MSN_HEIGHT)],
MSTACK_SOI_SKT_THICKNESS = 0.061 MSTACK_GATEOX_THICKNESS = 0.005 MSTACK_POLY_THICKNESS = 0.160 MSTACK_SOI_POLY_THICKNESS = MSTACK_SOI_THICKNESS + MSTACK_GATEOX_THICKNESS + MSTACK_POLY_THICKNESS MSTACK_PMD_THICKNESS = 1.0 MSTACK_SAL_THICKNESS = 0.05 MSTACK_D_LINER = 0.390 MSTACK_LINER_THICKNESS = 0.050 MSTACK_M1_THICKNESS = 0.500 MSTACK_IMD_THICKNESS = 0.500 MSTACK_M2_THICKNESS = 0.700 # material stacks FEOL (SOI+poly) TECH.MATERIAL_STACKS.MSTACK_STI_OX = MaterialStack( name="374nm STI Oxide", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_BOX_THICKNESS), (TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_THICKNESS)], display_style=DisplayStyle(color=COLOR_BABY_BLUE)) TECH.MATERIAL_STACKS.MSTACK_SOI_SKT = MaterialStack( name="61nm SOI", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_BOX_THICKNESS), (TECH.MATERIALS.SILICON, MSTACK_SOI_SKT_THICKNESS), (TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_THICKNESS - MSTACK_SOI_SKT_THICKNESS)], display_style=DisplayStyle(color=COLOR_LIGHT_UGLY_PINK)) TECH.MATERIAL_STACKS.MSTACK_SOI_FC = MaterialStack( name="144nm SOI", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_BOX_THICKNESS), (TECH.MATERIALS.SILICON, MSTACK_SOI_FC_THICKNESS),
TECH.MATERIALS.SILICON = Material(name="silicon", display_style=DisplayStyle(color=COLOR_CYAN)) TECH.MATERIALS.SILICON_OXIDE = Material( name="silicon oxide", display_style=DisplayStyle(color=COLOR_BLUE)) TECH.MATERIALS.GERMANIUM = Material( name="germanium", display_style=DisplayStyle(color=COLOR_DARK_GREEN)) from pysics.basics.material.material_stack import MaterialStack, MaterialStackFactory TECH.MATERIAL_STACKS = MaterialStackFactory() MSTACK_SOI_SILICON_OXIDE_HEIGHT = 0.700 TECH.MATERIAL_STACKS.MSTACK_SOI_AIR = MaterialStack( name="Air", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.AIR, 0.220)], display_style=DisplayStyle(color=COLOR_BLUE)) TECH.MATERIAL_STACKS.MSTACK_SOI_SI_80nm = MaterialStack( name="80nm Si", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT), (TECH.MATERIALS.SILICON, 0.080), (TECH.MATERIALS.AIR, 0.300 - 0.160)], display_style=DisplayStyle(color=COLOR_GREEN)) TECH.MATERIAL_STACKS.MSTACK_SOI_SI_150nm = MaterialStack( name="150nm Si", materials_heights=[(TECH.MATERIALS.SILICON_OXIDE, MSTACK_SOI_SILICON_OXIDE_HEIGHT),