Exemplo n.º 1
0
from ipkiss.technology.technology import ProcessTechnologyTree, TechnologyTree, DelayedInitTechnologyTree
from ipkiss.technology import get_technology
from ipkiss.geometry.coord import Coord2
from ipkiss.process.layer import ProcessLayer, PatternPurpose

TECH = get_technology()

###############################################################################################
# Process Layers
###############################################################################################
        
TECH.PROCESS = ProcessTechnologyTree()

# silicon structuring
TECH.PROCESS.FC = ProcessLayer("Fiber Couplers", "FC")
TECH.PROCESS.WG = ProcessLayer("Waveguides", "WG")

# other
TECH.PROCESS.NONE = ProcessLayer("No Specific Process Layer", "NONE")

####################################################################
# MASK
####################################################################
    
TECH.MASK = TechnologyTree()
TECH.MASK.POLARITY_DF = "DF"
TECH.MASK.POLARITY_LF = "LF"

####################################################################
# MASK LAYER RULES
Exemplo n.º 2
0
# Contact: [email protected]

from ..ipkiss.common import *
from ipkiss.technology.technology import ProcessTechnologyTree, TechnologyTree, DelayedInitTechnologyTree
from ipkiss.technology import get_technology
from ipkiss.geometry.coord import Coord2
from ipkiss.process.layer import ProcessLayer, PatternPurpose

TECH = get_technology()

###############################################################################################
# Process Layers
###############################################################################################

# silicon structuring
TECH.PROCESS.RFC = ProcessLayer("Raised Fiber Couplers", "RFC")
TECH.PROCESS.FCW = ProcessLayer("Fiber Coupler Windows", "FCW")
TECH.PROCESS.FC = ProcessLayer("Fiber Couplers", "FC")
TECH.PROCESS.WG = ProcessLayer("Waveguides", "WG")
TECH.PROCESS.SLOT = ProcessLayer("Slot waveguides", "SLOT")
TECH.PROCESS.SK = ProcessLayer("Socket waveguides", "SK")

# implants, silicide, contacts
TECH.PROCESS.NBODY = ProcessLayer("Body N doping", "NBODY")
TECH.PROCESS.PBODY = ProcessLayer("Body P doping", "PBODY")
TECH.PROCESS.N1 = ProcessLayer("N-type doping 1", "N1")
TECH.PROCESS.NPLUS = ProcessLayer("N++ doping", "N2")
TECH.PROCESS.P1 = ProcessLayer("P-type doping 1", "P1")
TECH.PROCESS.PPLUS = ProcessLayer("P++ doping", "PPLUS")
TECH.PROCESS.PP1 = ProcessLayer("Poly P-type doping 1", "PP1")
TECH.PROCESS.PP2 = ProcessLayer("Poly P-type doping 2", "PP2")
Exemplo n.º 3
0
from ipkiss.process import PPLayer
from ipkiss.process.layer import ProcessLayer
from ipkiss.process.layer import PatternPurpose
from ipkiss.plugins.photonics.wg.basic import *    # basic waveguides
from picazzo.io.column import *  # StdIO


DT_LINE = 0
DT_SQUARE = 1
DT_HEX = 2
DT_INV = 3

MY_TECH = TechnologyTree()

MY_TECH.PROCESS = TechnologyTree()
MY_TECH.PROCESS.OL35_1 = ProcessLayer("Overlay With III-V etch 1", "OL35_1")
MY_TECH.PROCESS.OL35_2 = ProcessLayer("Overlay With III-V etch 2", "OL35_2")
MY_TECH.PROCESS.BCB_1 = ProcessLayer("Bcb etch1", "BCB_1")
MY_TECH.PROCESS.BCB_2 = ProcessLayer("Bcb etch2", "BCB_2")
MY_TECH.PROCESS.MET_1 = ProcessLayer("Metalization etch1", "MET_1")
MY_TECH.PROCESS.MET_2 = ProcessLayer("Metalization etch2", "MET_2")
MY_TECH.PROCESS.MET_3 = ProcessLayer("Metalization etch3", "MET_3")
MY_TECH.PROCESS.MET_4 = ProcessLayer("Metalization etch4", "MET_4")

MY_TECH.PURPOSE = TechnologyTree()
MY_TECH.PURPOSE.DEFAULT = PatternPurpose(name = "Default", extension = "00")

MY_OUTPUT_MAP = copy.deepcopy(TECH.GDSII.EXPORT_LAYER_MAP)
MY_OUTPUT_MAP.layer_map[PPLayer(process = MY_TECH.PROCESS.OL35_1, purpose = MY_TECH.PURPOSE.DEFAULT)] = GdsiiLayer(number = 101, datatype = DT_LINE) # disk
MY_OUTPUT_MAP.layer_map[PPLayer(process = MY_TECH.PROCESS.OL35_2, purpose = MY_TECH.PURPOSE.DEFAULT)] = GdsiiLayer(number = 102, datatype = DT_LINE) # island
MY_OUTPUT_MAP.layer_map[PPLayer(process = MY_TECH.PROCESS.BCB_1, purpose = MY_TECH.PURPOSE.DEFAULT)] = GdsiiLayer(number = 104, datatype = DT_LINE)  # botvia
Exemplo n.º 4
0
from ipkiss.technology.technology import ProcessTechnologyTree, TechnologyTree
from ipkiss.process.layer import ProcessLayer
from ipkiss.technology import get_technology

TECH = get_technology()

#################
# Process layers
#################

TECH.PROCESS = ProcessTechnologyTree()

# FEOL
# SOI/poly patterning
TECH.PROCESS.WG = ProcessLayer(name="Strip waveguides (full etched SOI)", extension="WG")
TECH.PROCESS.FC = ProcessLayer(name="Fiber couplers and rib waveguides (shallow partial etched SOI)", extension="FC")
TECH.PROCESS.SKT = ProcessLayer(name="Socket waveguides (deep partial etched SOI)", extension="SKT")
TECH.PROCESS.FCW = ProcessLayer(name="Fiber coupler window (poly)", extension="FCW")

# Implants
TECH.PROCESS.NBODY = ProcessLayer(name="N-type Body implant", extension="NBODY")
TECH.PROCESS.PBODY = ProcessLayer(name="P-type Body implant" , extension="PBODY")
TECH.PROCESS.N1 = ProcessLayer(name="N-type implant - dose 1", extension="N1")
TECH.PROCESS.N2 = ProcessLayer(name="N-type implant - dose 2", extension="N2")
TECH.PROCESS.NPLUS = ProcessLayer(name="N-type contact implant" , extension="NPLUS")
TECH.PROCESS.P1 = ProcessLayer(name="P-type implant - dose 1", extension="P1")
TECH.PROCESS.P2 = ProcessLayer(name="P-type implant - dose 2", extension="P2")
TECH.PROCESS.PPLUS = ProcessLayer(name="P-type contact implant", extension="PPLUS")

# silicide and contact
Exemplo n.º 5
0
from ipkiss.technology.technology import ProcessTechnologyTree, TechnologyTree
from ipkiss.process.layer import ProcessLayer
from ipkiss.technology import get_technology

TECH = get_technology()

#################
# Process layers
#################

TECH.PROCESS = ProcessTechnologyTree()

# FEOL
# SOI/poly patterning
TECH.PROCESS.SHALL = ProcessLayer(
    name="SiN Waveguide (shallow half-depth etched SiN)", extension="SHALL")
TECH.PROCESS.FULL = ProcessLayer(name="SiN waveguide (full etched SiN)",
                                 extension="FULL")
TECH.PROCESS.CLROUT = ProcessLayer(name="", extension="CLROUT")
TECH.PROCESS.OPCLAD = ProcessLayer(name="Clad opening etch",
                                   extension="OPCLAD")
TECH.PROCESS.ELEC = ProcessLayer(name="elec", extension="electrode")
TECH.PROCESS.TRENCH = ProcessLayer(name="trench", extension="trench")

# Auxiliary
TECH.PROCESS.NO_DRC = ProcessLayer(name="", extension="NO_DRC")
TECH.PROCESS.DUMMY = ProcessLayer(name="", extension="DUMMY")
TECH.PROCESS.DOC = ProcessLayer(name="", extension="DOC")
TECH.PROCESS.TXTLAB = ProcessLayer(name="", extension="TXTLAB")
TECH.PROCESS.ERRFLG = ProcessLayer(name="", extension="ERRFLG")
TECH.PROCESS.NO_SIZE = ProcessLayer(name="", extension="NO_SIZE")
Exemplo n.º 6
0
from ipkiss.technology.technology import ProcessTechnologyTree, TechnologyTree, DelayedInitTechnologyTree
from ipkiss.technology import get_technology
from ipkiss.process.layer import ProcessLayer, PatternPurpose, PPLayer

TECH = get_technology()

# ###############################################################
# TECH.PROCESS : Process Layers
#
# Process layers typically correspond to a single lithographic
# process step in the fabrication of your design
#
# ###############################################################

TECH.PROCESS = ProcessTechnologyTree()
TECH.PROCESS.MSN = ProcessLayer("Unetched MSN",
                                "MSN")  # waveguide layer (required)
TECH.PROCESS.MSN_TRENCH = ProcessLayer(
    "Positive Etch MSN Exclusion",
    "MSN_TRENCH")  # Positive tone waveguide layer
TECH.PROCESS.SHALLOW = ProcessLayer(
    "Fiber Couplers and Rib Waveguide (shallow etched MSN)", "SHALLOW")

TECH.PROCESS.CLADDING = ProcessLayer("Unetched Cladding",
                                     "CLAD")  #waveguide cladding

TECH.PROCESS.HT = ProcessLayer("Heater", "HT")
TECH.PROCESS.M1 = ProcessLayer("Metallization 1", "M1")
TECH.PROCESS.M2 = ProcessLayer("Metallization 2", "M2")
TECH.PROCESS.V12 = ProcessLayer("Via between M1 and M2", "V12")
TECH.PROCESS.SIL = ProcessLayer("Silicide", "SIL")
TECH.PROCESS.N = ProcessLayer("N+ implant", "N")