📄 rcmos.java
字号:
new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); metal1Pin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal1Pin_node, new ArcProto [] {metal1_arc}, "metal-1", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal1Pin_node.setFunction(PrimitiveNode.Function.PIN); metal1Pin_node.setSquare(); /** Metal-2-Pin */ PrimitiveNode metal2Pin_node = PrimitiveNode.newInstance("Metal-2-Pin", this, 3, 3, null, new Technology.NodeLayer [] { new Technology.NodeLayer(metal2_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); metal2Pin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal2Pin_node, new ArcProto [] {metal2_arc}, "metal-2", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal2Pin_node.setFunction(PrimitiveNode.Function.PIN); metal2Pin_node.setSquare(); /** Polysilicon-Pin */ PrimitiveNode polysiliconPin_node = PrimitiveNode.newInstance("Polysilicon-Pin", this, 2, 2, null, new Technology.NodeLayer [] { new Technology.NodeLayer(polysilicon_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); polysiliconPin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, polysiliconPin_node, new ArcProto [] {polysilicon_arc}, "polysilicon", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); polysiliconPin_node.setFunction(PrimitiveNode.Function.PIN); polysiliconPin_node.setSquare(); /** S-Active-Pin */ PrimitiveNode sActivePin_node = PrimitiveNode.newInstance("S-Active-Pin", this, 6, 6, new SizeOffset(2,2,2,2), new Technology.NodeLayer [] { new Technology.NodeLayer(sActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(select_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); sActivePin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, sActivePin_node, new ArcProto [] {sActive_arc}, "s-active", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); sActivePin_node.setFunction(PrimitiveNode.Function.PIN); sActivePin_node.setSquare(); /** D-Active-Pin */ PrimitiveNode dActivePin_node = PrimitiveNode.newInstance("D-Active-Pin", this, 10, 10, new SizeOffset(4,4,4,4), new Technology.NodeLayer [] { new Technology.NodeLayer(dActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(4), EdgeV.makeCenter())}), new Technology.NodeLayer(well_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); dActivePin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, dActivePin_node, new ArcProto [] {dActive_arc}, "d-active", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); dActivePin_node.setFunction(PrimitiveNode.Function.PIN); dActivePin_node.setSquare(); /** Substrate-Active-Pin */ PrimitiveNode substrateActivePin_node = PrimitiveNode.newInstance("Substrate-Active-Pin", this, 2, 2, null, new Technology.NodeLayer [] { new Technology.NodeLayer(dActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(sActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); substrateActivePin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, substrateActivePin_node, new ArcProto [] {substrateActive_arc}, "active", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); substrateActivePin_node.setFunction(PrimitiveNode.Function.PIN); substrateActivePin_node.setSquare(); /** Well-Active-Pin */ PrimitiveNode wellActivePin_node = PrimitiveNode.newInstance("Well-Active-Pin", this, 6, 6, new SizeOffset(2,2,2,2), new Technology.NodeLayer [] { new Technology.NodeLayer(dActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(sActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(well_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(select_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(1), EdgeV.makeCenter())}) }); wellActivePin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, wellActivePin_node, new ArcProto [] {wellActive_arc}, "active", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); wellActivePin_node.setFunction(PrimitiveNode.Function.PIN); wellActivePin_node.setSquare(); /** S-Transistor-Pin */ PrimitiveNode sTransistorPin_node = PrimitiveNode.newInstance("S-Transistor", this, 6, 6, new SizeOffset(2,2,2,2), new Technology.NodeLayer [] { new Technology.NodeLayer(sActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(polysilicon_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(select_lay, -1, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); sTransistorPin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, sTransistorPin_node, new ArcProto [] {sTransistor_arc, sActive_arc, polysilicon_arc}, "s-trans", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); sTransistorPin_node.setFunction(PrimitiveNode.Function.PIN); /** D-Transistor-Pin */ PrimitiveNode dTransistorPin_node = PrimitiveNode.newInstance("D-Transistor", this, 10, 10, new SizeOffset(4,4,4,4), new Technology.NodeLayer [] { new Technology.NodeLayer(dActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(4), EdgeV.makeCenter())}), new Technology.NodeLayer(polysilicon_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(4), EdgeV.makeCenter())}), new Technology.NodeLayer(well_lay, -1, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}) }); dTransistorPin_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, dTransistorPin_node, new ArcProto [] {dTransistor_arc, dActive_arc, polysilicon_arc}, "d-trans", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); dTransistorPin_node.setFunction(PrimitiveNode.Function.PIN); /** Metal-1-S-active-contact */ PrimitiveNode metal1SActiveCon_node = PrimitiveNode.newInstance("Metal-1-S-Active-Con", this, 10, 10, new SizeOffset(2,2,2,2), new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(3), EdgeV.makeCenter())}), new Technology.NodeLayer(sActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(2), EdgeV.makeCenter())}), new Technology.NodeLayer(select_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(activeCut_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromCenter(1), EdgeV.makeCenter())}) }); metal1SActiveCon_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal1SActiveCon_node, new ArcProto [] {sActive_arc, metal1_arc}, "metal-1-s-act", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal1SActiveCon_node.setFunction(PrimitiveNode.Function.CONTACT); metal1SActiveCon_node.setSquare(); /** Metal-1-D-active-contact */ PrimitiveNode metal1DActiveCon_node = PrimitiveNode.newInstance("Metal-1-D-Active-Con", this, 14, 14, new SizeOffset(4,4,4,4), new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(5), EdgeV.makeCenter())}), new Technology.NodeLayer(dActive_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(4), EdgeV.makeCenter())}), new Technology.NodeLayer(well_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(activeCut_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromCenter(1), EdgeV.makeCenter())}) }); metal1DActiveCon_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal1DActiveCon_node, new ArcProto [] {dActive_arc, metal1_arc}, "metal-1-d-act", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal1DActiveCon_node.setFunction(PrimitiveNode.Function.CONTACT); metal1DActiveCon_node.setSquare(); /** Metal-1-polysilicon-contact */ PrimitiveNode metal1PolyCon_node = PrimitiveNode.newInstance("Metal-1-Polysilicon-Con", this, 6, 6, null, new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromRight(1), EdgeV.makeCenter())}), new Technology.NodeLayer(polysilicon_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(polyCut_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromCenter(1), EdgeV.makeCenter())}) }); metal1PolyCon_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal1PolyCon_node, new ArcProto [] {polysilicon_arc, metal1_arc}, "metal-1-polysilicon", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal1PolyCon_node.setFunction(PrimitiveNode.Function.CONTACT); metal1PolyCon_node.setSquare(); /** Metal-1-Metal-2-contact */ PrimitiveNode metal1Metal2Con_node = PrimitiveNode.newInstance("Metal-1-Metal-2-Con", this, 4, 4, null, new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(metal2_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter())}), new Technology.NodeLayer(via_lay, 0, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, new Technology.TechPoint [] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.fromCenter(1), EdgeV.makeCenter())}) }); metal1Metal2Con_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, metal1Metal2Con_node, new ArcProto [] {metal1_arc, metal2_arc}, "metal-1-metal-2", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); metal1Metal2Con_node.setFunction(PrimitiveNode.Function.CONTACT); metal1Metal2Con_node.setSquare(); /** Metal-1-Well Contact */ PrimitiveNode metal1WellCon_node = PrimitiveNode.newInstance("Metal-1-Well-Con", this, 10, 10, new SizeOffset(2,2,2,2), new Technology.NodeLayer [] { new Technology.NodeLayer(metal1_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, new Technology.TechPoint [] {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -