coriolis/crlcore/etc/technology.symbolic.xml

329 lines
13 KiB
XML

<?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>