<?xml version="1.0"?>
<technology>
  <name>Alliance</name>

  <!-- Non-Routing Layers -->
  <basiclayer name="nWell"     material="nWell"/>
  <basiclayer name="pWell"     material="pWell"/>
  <basiclayer name="nImplant"  material="nImplant"/>
  <basiclayer name="pImplant"  material="pImplant"/>
  <basiclayer name="active"    material="active"/>
  <basiclayer name="poly"      material="poly"/>

  <!-- Routing Layers & VIA Cuts -->
  <!-- NB: order *is* meaningful -->
  <basiclayer name="cut0"      material="cut"/>
  <basiclayer name="metal1"    material="metal"/>
  <basiclayer name="cut1"      material="cut"/>
  <basiclayer name="metal2"    material="metal"/>
  <basiclayer name="cut2"      material="cut"/>
  <basiclayer name="metal3"    material="metal"/>
  <basiclayer name="cut3"      material="cut"/>
  <basiclayer name="metal4"    material="metal"/>
  <basiclayer name="cut4"      material="cut"/>
  <basiclayer name="metal5"    material="metal"/>
  <basiclayer name="cut5"      material="cut"/>
  <basiclayer name="metal6"    material="metal"/>
  <basiclayer name="topmim6"/>
  <basiclayer name="botmim6"/>
  <basiclayer name="padopen"/>
  <basiclayer name="alucap"/>

  <!-- Obstacles -->
  <basiclayer name="blockage1" material="blockage" basiclayer="metal1"/>
  <basiclayer name="blockage2" material="blockage" basiclayer="metal2"/>
  <basiclayer name="blockage3" material="blockage" basiclayer="metal3"/>
  <basiclayer name="blockage4" material="blockage" basiclayer="metal4"/>
  <basiclayer name="blockage5" material="blockage" basiclayer="metal5"/>
  <basiclayer name="blockage6" material="blockage" basiclayer="metal6"/>

  <!-- Miscellaneous: -->
  <basiclayer name="text.cell"     material="other"/>
  <basiclayer name="text.instance" material="other"/>
  <basiclayer name="undef"         material="other"/>
  <basiclayer name="SPL1"          material="other"/>
  <basiclayer name="AutoLayer"     material="other"/>

  <!-- Symbolic Layers: Non-Routing Layers -->
  <regularlayer name="NWELL" type="UNDEFINED">
    <layer name="nWell"/>
  </regularlayer>
  <regularlayer name="PWELL" type="UNDEFINED">
    <layer name="pWell"/>
  </regularlayer>
  <diffusionlayer name="NTIE"  type="UNDEFINED">
    <layer name="nWell"/>
    <layer name="nImplant"/>
    <layer name="active"/>
  </diffusionlayer>
  <diffusionlayer name="PTIE"  type="UNDEFINED">
    <layer name="pWell"/>
    <layer name="pImplant"/>
    <layer name="active"/>
  </diffusionlayer>
  <diffusionlayer name="NDIF"  type="UNDEFINED">
    <layer name="nImplant"/>
    <layer name="active"/>
  </diffusionlayer>
  <diffusionlayer name="PDIF"  type="UNDEFINED">
    <layer name="pImplant"/>
    <layer name="active"/>
  </diffusionlayer>
  <diffusionlayer name="GATE"  type="UNDEFINED">
    <layer name="poly"/>
    <layer name="active"/>
  </diffusionlayer>
  <transistorlayer name="NTRANS" type="UNDEFINED">
    <layer name="nImplant"/>
    <layer name="active"/>
    <layer name="poly"/>
  </transistorlayer>
  <transistorlayer name="PTRANS" type="UNDEFINED">
    <layer name="nWell"/>
    <layer name="pImplant"/>
    <layer name="active"/>
    <layer name="poly"/>
  </transistorlayer>
  <regularlayer name="POLY"   type="UNDEFINED">
    <layer name="poly"/>
  </regularlayer>

  <!-- Symbolic Layers: Routing Layers -->
  <regularlayer name="METAL1" type="METAL">
    <layer name="metal1"/>
  </regularlayer>
  <regularlayer name="METAL2" type="METAL">
    <layer name="metal2"/>
  </regularlayer>
  <regularlayer name="METAL3" type="METAL">
    <layer name="metal3"/>
  </regularlayer>
  <regularlayer name="METAL4" type="METAL">
    <layer name="metal4"/>
  </regularlayer>
  <regularlayer name="METAL5" type="METAL">
    <layer name="metal5"/>
  </regularlayer>
  <regularlayer name="METAL6" type="METAL">
    <layer name="metal6"/>
  </regularlayer>

  <!-- Symbolic Layers: Contacts Layers -->
  <contactlayer name="CONT_BODY_N"  type="VIA">
    <layer name="nWell"/>
    <layer name="nImplant"/>
    <layer name="active"/>
    <layer name="cut0"/>
    <layer name="metal1"/>
  </contactlayer>
  <contactlayer name="CONT_BODY_P"  type="VIA">
    <layer name="pWell"/>
    <layer name="pImplant"/>
    <layer name="active"/>
    <layer name="cut0"/>
    <layer name="metal1"/>
  </contactlayer>
  <contactlayer name="CONT_DIF_N"  type="VIA">
    <layer name="nImplant"/>
    <layer name="active"/>
    <layer name="cut0"/>
    <layer name="metal1"/>
  </contactlayer>
  <contactlayer name="CONT_DIF_P"  type="VIA">
    <layer name="pImplant"/>
    <layer name="active"/>
    <layer name="cut0"/>
    <layer name="metal1"/>
  </contactlayer>
  <vialayer name="CONT_POLY"  type="VIA">
    <layer name="poly"/>
    <layer name="cut0"/>
    <layer name="metal1"/>
  </vialayer>
  <vialayer name="VIA12"  type="VIA">
    <layer name="metal1"/>
    <layer name="cut1"/>
    <layer name="metal2"/>
  </vialayer>
  <vialayer name="VIA23"  type="VIA">
    <layer name="metal2"/>
    <layer name="cut2"/>
    <layer name="metal3"/>
  </vialayer>
  <vialayer name="VIA34"  type="VIA">
    <layer name="metal3"/>
    <layer name="cut3"/>
    <layer name="metal4"/>
  </vialayer>
  <vialayer name="VIA45"  type="VIA">
    <layer name="metal4"/>
    <layer name="cut4"/>
    <layer name="metal5"/>
  </vialayer>
  <vialayer name="VIA56"  type="VIA">
    <layer name="metal5"/>
    <layer name="cut5"/>
    <layer name="metal6"/>
  </vialayer>

  <!-- Symbolic Layers: Obstacle Layers -->
  <regularlayer name="BLOCKAGE1" type="UNDEFINED">
    <layer name="blockage1"/>
  </regularlayer>
  <regularlayer name="BLOCKAGE2" type="UNDEFINED">
    <layer name="blockage2"/>
  </regularlayer>
  <regularlayer name="BLOCKAGE3" type="UNDEFINED">
    <layer name="blockage3"/>
  </regularlayer>
  <regularlayer name="BLOCKAGE4" type="UNDEFINED">
    <layer name="blockage4"/>
  </regularlayer>
  <regularlayer name="BLOCKAGE5" type="UNDEFINED">
    <layer name="blockage5"/>
  </regularlayer>
  <regularlayer name="BLOCKAGE6" type="UNDEFINED">
    <layer name="blockage6"/>
  </regularlayer>

  <!-- Special BasicLayers for Knik/Kite routers -->
  <!-- *Must be after all others* -->
  <basiclayer name="gmetalh" material="metal"/>
  <basiclayer name="gcut"    material="cut"/>
  <basiclayer name="gmetalv" material="metal"/>
  <vialayer name="gcontact"  type="VIA">
    <layer name="gmetalh"/>
    <layer name="gcut"/>
    <layer name="gmetalv"/>
  </vialayer>

  <symbolic>
    <precision>2</precision>
    <gridstep>1.0</gridstep>
    <rules>
      <!-- Active Layers -->
      <rule name="NWELL.nWell.extention.cap"       value="0.0"/>
      <rule name="PWELL.pWell.extention.cap"       value="0.0"/>

      <rule name="NTIE.minimum.width"              value="3.0"/>
      <rule name="NTIE.nWell.extention.cap"        value="1.5"/>
      <rule name="NTIE.nWell.extention.width"      value="0.5"/>
      <rule name="NTIE.nImplant.extention.cap"     value="1.0"/>
      <rule name="NTIE.nImplant.extention.width"   value="0.5"/>
      <rule name="NTIE.active.extention.cap"       value="0.5"/>
      <rule name="NTIE.active.extention.width"     value="0.0"/>

      <rule name="PTIE.minimum.width"              value="3.0"/>
      <rule name="PTIE.pWell.extention.cap"        value="1.5"/>
      <rule name="PTIE.pWell.extention.width"      value="0.5"/>
      <rule name="PTIE.pImplant.extention.cap"     value="1.0"/>
      <rule name="PTIE.pImplant.extention.width"   value="0.5"/>
      <rule name="PTIE.active.extention.cap"       value="0.5"/>
      <rule name="PTIE.active.extention.width"     value="0.0"/>

      <rule name="NDIF.minimum.width"              value="3.0"/>
      <rule name="NDIF.nImplant.extention.cap"     value="1.0"/>
      <rule name="NDIF.nImplant.extention.width"   value="0.5"/>
      <rule name="NDIF.active.extention.cap"       value="0.5"/>
      <rule name="NDIF.active.extention.width"     value="0.0"/>

      <rule name="PDIF.minimum.width"              value="3.0"/>
      <rule name="PDIF.pImplant.extention.cap"     value="1.0"/>
      <rule name="PDIF.pImplant.extention.width"   value="0.5"/>
      <rule name="PDIF.active.extention.cap"       value="0.5"/>
      <rule name="PDIF.active.extention.width"     value="0.0"/>

      <rule name="GATE.minimum.width"              value="1.0"/>
      <rule name="GATE.poly.extention.cap"         value="1.5"/>

      <rule name="NTRANS.minimum.width"            value="1.0"/>
      <rule name="NTRANS.nImplant.extention.cap"   value="-1.0"/>
      <rule name="NTRANS.nImplant.extention.width" value="2.5"/>
      <rule name="NTRANS.active.extention.cap"     value="-1.5"/>
      <rule name="NTRANS.active.extention.width"   value="2.0"/>

      <rule name="PTRANS.minimum.width"            value="1.0"/>
      <rule name="PTRANS.nWell.extention.cap"      value="-1.0"/>
      <rule name="PTRANS.nWell.extention.width"    value="4.5"/>
      <rule name="PTRANS.pImplant.extention.cap"   value="-1.0"/>
      <rule name="PTRANS.pImplant.extention.width" value="4.0"/>
      <rule name="PTRANS.active.extention.cap"     value="-1.5"/>
      <rule name="PTRANS.active.extention.width"   value="3.0"/>

      <rule name="POLY.minimum.width"              value="1.0"/>
      <rule name="POLY.poly.extention.cap"         value="0.5"/>

      <!-- Routing Layers -->
      <rule name="METAL1.minimum.width"            value="1.0"/>
      <rule name="METAL1.metal1.extention.cap"     value="0.5"/>
      <rule name="METAL2.minimum.width"            value="1.0"/>
      <rule name="METAL2.metal2.extention.cap"     value="1.0"/>
      <rule name="METAL3.minimum.width"            value="1.0"/>
      <rule name="METAL3.metal3.extention.cap"     value="1.0"/>
      <rule name="METAL4.minimum.width"            value="1.0"/>
      <rule name="METAL4.metal4.extention.cap"     value="1.0"/>
      <rule name="METAL5.minimum.width"            value="2.0"/>
      <rule name="METAL5.metal5.extention.cap"     value="1.0"/>
      <rule name="METAL6.minimum.width"            value="2.0"/>
      <rule name="METAL6.metal6.extention.cap"     value="1.0"/>

      <!-- VIAs -->
      <rule name="CONT_BODY_N.minimum.side"        value="1.0"/>
      <rule name="CONT_BODY_N.nWell.enclosure"     value="1.5"/>
      <rule name="CONT_BODY_N.nImplant.enclosure"  value="1.5"/>
      <rule name="CONT_BODY_N.active.enclosure"    value="1.0"/>
      <rule name="CONT_BODY_N.metal1.enclosure"    value="0.5"/>

      <rule name="CONT_BODY_P.minimum.side"        value="1.0"/>
      <rule name="CONT_BODY_P.pWell.enclosure"     value="1.5"/>
      <rule name="CONT_BODY_P.pImplant.enclosure"  value="1.5"/>
      <rule name="CONT_BODY_P.active.enclosure"    value="1.0"/>
      <rule name="CONT_BODY_P.metal1.enclosure"    value="0.5"/>

      <rule name="CONT_DIF_N.minimum.side"         value="1.0"/>
      <rule name="CONT_DIF_N.nImplant.enclosure"   value="1.0"/>
      <rule name="CONT_DIF_N.active.enclosure"     value="0.5"/>
      <rule name="CONT_DIF_N.metal1.enclosure"     value="0.5"/>

      <rule name="CONT_DIF_P.minimum.side"         value="1.0"/>
      <rule name="CONT_DIF_P.pImplant.enclosure"   value="1.0"/>
      <rule name="CONT_DIF_P.active.enclosure"     value="0.5"/>
      <rule name="CONT_DIF_P.metal1.enclosure"     value="0.5"/>

      <rule name="CONT_POLY.minimum.width"         value="1.0"/>
      <rule name="CONT_POLY.poly.enclosure"        value="0.5"/>
      <rule name="CONT_POLY.metal1.enclosure"      value="0.5"/>

      <rule name="VIA12.minimum.side"              value="1.0"/>
      <rule name="VIA12.metal1.enclosure"          value="0.5"/>
      <rule name="VIA12.metal2.enclosure"          value="0.5"/>
      <rule name="VIA23.minimum.side"              value="1.0"/>
      <rule name="VIA23.metal2.enclosure"          value="0.5"/>
      <rule name="VIA23.metal3.enclosure"          value="0.5"/>
      <rule name="VIA34.minimum.side"              value="1.0"/>
      <rule name="VIA34.metal3.enclosure"          value="0.5"/>
      <rule name="VIA34.metal4.enclosure"          value="0.5"/>
      <rule name="VIA45.minimum.side"              value="1.0"/>
      <rule name="VIA45.metal4.enclosure"          value="0.5"/>
      <rule name="VIA45.metal5.enclosure"          value="0.5"/>
      <rule name="VIA56.minimum.side"              value="1.0"/>
      <rule name="VIA56.metal5.enclosure"          value="0.5"/>
      <rule name="VIA56.metal6.enclosure"          value="0.5"/>

      <!-- Blockage Layers -->
      <rule name="BLOCKAGE1.minimum.width"            value="1.0"/>
      <rule name="BLOCKAGE1.blockage1.extention.cap"  value="0.5"/>
      <rule name="BLOCKAGE2.minimum.width"            value="2.0"/>
      <rule name="BLOCKAGE2.blockage2.extention.cap"  value="0.5"/>
      <rule name="BLOCKAGE3.minimum.width"            value="2.0"/>
      <rule name="BLOCKAGE3.blockage3.extention.cap"  value="0.5"/>
      <rule name="BLOCKAGE4.minimum.width"            value="2.0"/>
      <rule name="BLOCKAGE4.blockage4.extention.cap"  value="0.5"/>
      <rule name="BLOCKAGE5.minimum.width"            value="2.0"/>
      <rule name="BLOCKAGE5.blockage5.extention.cap"  value="1.0"/>
      <rule name="BLOCKAGE6.minimum.width"            value="2.0"/>
      <rule name="BLOCKAGE6.blockage6.extention.cap"  value="1.0"/>
    </rules>
  </symbolic>
</technology>
