📄 rcmos.java
字号:
// 0x0101, // X X// 0x0202, // X X// 0x0404, // X X // 0x0808, // X X // 0x1010, // X X // 0x2020, // X X // 0x4040, // X X // 0x8080, // X X // 0x0101, // X X// 0x0202, // X X// 0x0404, // X X // 0x0808}));// X X //// /** Pseudo-Polysilicon layer */// Layer pseudoPolysilicon_lay = Layer.newInstance(this, "Pseudo-Polysilicon",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_2, 255,155,192,0.8,true,// new int[] { 0x0808, // X X // 0x0404, // X X // 0x0202, // X X // 0x0101, // X X// 0x8080, // X X // 0x4040, // X X // 0x2020, // X X // 0x1010, // X X // 0x0808, // X X // 0x0404, // X X // 0x0202, // X X // 0x0101, // X X// 0x8080, // X X // 0x4040, // X X // 0x2020, // X X // 0x1010}));// X X //// /** Pseudo-S-Active layer */// Layer pseudoSActive_lay = Layer.newInstance(this, "Pseudo-S-Active",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_3, 107,226,96,0.8,true,// new int[] { 0x0000, // // 0x0303, // XX XX// 0x4848, // X X X X // 0x0303, // XX XX// 0x0000, // // 0x3030, // XX XX // 0x8484, // X X X X // 0x3030, // XX XX // 0x0000, // // 0x0303, // XX XX// 0x4848, // X X X X // 0x0303, // XX XX// 0x0000, // // 0x3030, // XX XX // 0x8484, // X X X X // 0x3030}));// XX XX //// /** Pseudo-D-Active layer */// Layer pseudoDActive_lay = Layer.newInstance(this, "Pseudo-D-Active",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_3, 107,226,96,0.8,true,// new int[] { 0x0000, // // 0x0303, // XX XX// 0x4848, // X X X X // 0x0303, // XX XX// 0x0000, // // 0x3030, // XX XX // 0x8484, // X X X X // 0x3030, // XX XX // 0x0000, // // 0x0303, // XX XX// 0x4848, // X X X X // 0x0303, // XX XX// 0x0000, // // 0x3030, // XX XX // 0x8484, // X X X X // 0x3030}));// XX XX //// /** Pseudo-Select layer */// Layer pseudoSelect_lay = Layer.newInstance(this, "Pseudo-Select",// new EGraphics(true, true, null, 0, 255,255,0,0.8,true,// new int[] { 0x1010, // X X // 0x2020, // X X // 0x4040, // X X // 0x8080, // X X // 0x0101, // X X// 0x0202, // X X // 0x0404, // X X // 0x0808, // X X // 0x1010, // X X // 0x2020, // X X // 0x4040, // X X // 0x8080, // X X // 0x0101, // X X// 0x0202, // X X // 0x0404, // X X // 0x0808}));// X X //// /** Pseudo-Well layer */// Layer pseudoWell_lay = Layer.newInstance(this, "Pseudo-Well",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_4, 240,221,181,0.8,true,// new int[] { 0x0000, // // 0x00c0, // XX // 0x0000, // // 0x0000, // // 0x0000, // // 0x00c0, // XX // 0x0000, // // 0x0000, // // 0x0000, // // 0x00c0, // XX // 0x0000, // // 0x0000, // // 0x0000, // // 0x00c0, // XX // 0x0000, // // 0x0000}));// // The layer functions metal1_lay.setFunction(Layer.Function.METAL1); // Metal-1 metal2_lay.setFunction(Layer.Function.METAL2); // Metal-2 polysilicon_lay.setFunction(Layer.Function.POLY1); // Polysilicon sActive_lay.setFunction(Layer.Function.DIFF); // S-Active dActive_lay.setFunction(Layer.Function.DIFF); // D-Active select_lay.setFunction(Layer.Function.IMPLANTP); // Select well_lay.setFunction(Layer.Function.WELLP); // Well cut_lay.setFunction(Layer.Function.CONTACT1); // Contact-Cut via_lay.setFunction(Layer.Function.CONTACT2); // Via passivation_lay.setFunction(Layer.Function.OVERGLASS); // Passivation polyCut_lay.setFunction(Layer.Function.CONTACT1); // Poly-Cut activeCut_lay.setFunction(Layer.Function.CONTACT1); // Active-Cut Layer pseudoMetal1_lay = metal1_lay.makePseudo(); // Pseudo-Metal-1 Layer pseudoMetal2_lay = metal2_lay.makePseudo(); // Pseudo-Metal-2 Layer pseudoPolysilicon_lay = polysilicon_lay.makePseudo(); // Pseudo-Polysilicon Layer pseudoSActive_lay = sActive_lay.makePseudo(); // Pseudo-S-Active Layer pseudoDActive_lay = dActive_lay.makePseudo(); // Pseudo-D-Active Layer pseudoSelect_lay = select_lay.makePseudo(); // Pseudo-Select Layer pseudoWell_lay = well_lay.makePseudo(); // Pseudo-Well// pseudoMetal1_lay.setFunction(Layer.Function.METAL1, Layer.Function.PSEUDO); // Pseudo-Metal-1// pseudoMetal2_lay.setFunction(Layer.Function.METAL2, Layer.Function.PSEUDO); // Pseudo-Metal-2// pseudoPolysilicon_lay.setFunction(Layer.Function.POLY1, Layer.Function.PSEUDO); // Pseudo-Polysilicon// pseudoSActive_lay.setFunction(Layer.Function.DIFF, Layer.Function.PSEUDO); // Pseudo-S-Active// pseudoDActive_lay.setFunction(Layer.Function.DIFF, Layer.Function.PSEUDO); // Pseudo-D-Active// pseudoSelect_lay.setFunction(Layer.Function.IMPLANTP, Layer.Function.PSEUDO); // Pseudo-Select// pseudoWell_lay.setFunction(Layer.Function.WELLP, Layer.Function.PSEUDO); // Pseudo-Well // 3D values. Same values as in mocmos metal1_lay.setFactory3DInfo(2.65, 16.5, "NONE", 0.2); metal2_lay.setFactory3DInfo(2.65, 22.15, "NONE", 0.2); polysilicon_lay.setFactory3DInfo(1, 14.75, "NONE", 0.2); sActive_lay.setFactory3DInfo(4, 9, "NONE", 0.2); dActive_lay.setFactory3DInfo(4, 9, "NONE", 0.2); select_lay.setFactory3DInfo(5, 8, "NONE", 0.2); well_lay.setFactory3DInfo(13, 0, "NONE", 0.2); cut_lay.setFactory3DInfo(3.5, 13, "NONE", 0.2); via_lay.setFactory3DInfo(3, 19.15, "NONE", 0.2); passivation_lay.setFactory3DInfo(5, 19.15, "NONE", 0.2); polyCut_lay.setFactory3DInfo(0.75, 15.75, "NONE", 0.2); activeCut_lay.setFactory3DInfo(3.5, 13, "NONE", 0.2); // The CIF names metal1_lay.setFactoryCIFLayer("CMF"); // Metal-1 metal2_lay.setFactoryCIFLayer("CMS"); // Metal-2 polysilicon_lay.setFactoryCIFLayer("CPG"); // Polysilicon sActive_lay.setFactoryCIFLayer("CAA"); // S-Active dActive_lay.setFactoryCIFLayer("CAA"); // D-Active select_lay.setFactoryCIFLayer("CSG"); // Select well_lay.setFactoryCIFLayer("CWG"); // Well cut_lay.setFactoryCIFLayer("CC"); // Contact-Cut via_lay.setFactoryCIFLayer("CVA"); // Via passivation_lay.setFactoryCIFLayer("COG"); // Passivation polyCut_lay.setFactoryCIFLayer("CCP"); // Poly-Cut activeCut_lay.setFactoryCIFLayer("CCA"); // Active-Cut// pseudoMetal1_lay.setFactoryCIFLayer(""); // Pseudo-Metal-1// pseudoMetal2_lay.setFactoryCIFLayer(""); // Pseudo-Metal-2// pseudoPolysilicon_lay.setFactoryCIFLayer(""); // Pseudo-Polysilicon// pseudoSActive_lay.setFactoryCIFLayer(""); // Pseudo-S-Active// pseudoDActive_lay.setFactoryCIFLayer(""); // Pseudo-D-Active// pseudoSelect_lay.setFactoryCIFLayer(""); // Pseudo-Select// pseudoWell_lay.setFactoryCIFLayer(""); // Pseudo-Well //******************** ARCS ******************** /** Metal-1 arc */ ArcProto metal1_arc = newArcProto("Metal-1", 0, 3, ArcProto.Function.METAL1, new Technology.ArcLayer(metal1_lay, 3, Poly.Type.FILLED) ); metal1_arc.setFactoryFixedAngle(false); metal1_arc.setCurvable(); metal1_arc.setExtended(false); metal1_arc.setFactoryAngleIncrement(0); /** Metal-2 arc */ ArcProto metal2_arc = newArcProto("Metal-2", 0, 3, ArcProto.Function.METAL2, new Technology.ArcLayer(metal2_lay, 3, Poly.Type.FILLED) );// metal2_arc.setFunction(ArcProto.Function.METAL1); metal2_arc.setFactoryFixedAngle(false); metal2_arc.setCurvable(); metal2_arc.setExtended(false); metal2_arc.setFactoryAngleIncrement(0); /** Polysilicon arc */ ArcProto polysilicon_arc = newArcProto("Polysilicon", 0, 2, ArcProto.Function.POLY1, new Technology.ArcLayer(polysilicon_lay, 2, Poly.Type.FILLED) );// polysilicon_arc.setFunction(ArcProto.Function.METAL1); polysilicon_arc.setFactoryFixedAngle(false); polysilicon_arc.setCurvable(); polysilicon_arc.setExtended(false); polysilicon_arc.setFactoryAngleIncrement(0); /** S-Active arc */ ArcProto sActive_arc = newArcProto("S-Active", 4, 6, ArcProto.Function.DIFFN, new Technology.ArcLayer(sActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(select_lay, 6, Poly.Type.FILLED) ); sActive_arc.setFactoryFixedAngle(false); sActive_arc.setCurvable(); sActive_arc.setExtended(false); sActive_arc.setFactoryAngleIncrement(0); /** D-Active arc */ ArcProto dActive_arc = newArcProto("D-Active", 8, 10, ArcProto.Function.DIFFP, new Technology.ArcLayer(dActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(well_lay, 10, Poly.Type.FILLED) ); dActive_arc.setFactoryFixedAngle(false); dActive_arc.setCurvable(); dActive_arc.setExtended(false); dActive_arc.setFactoryAngleIncrement(0); /** Substrate-Active arc */ ArcProto substrateActive_arc = newArcProto("Substrate-Active", 0, 2, ArcProto.Function.DIFFS, new Technology.ArcLayer(dActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(sActive_lay, 2, Poly.Type.FILLED) ); substrateActive_arc.setFactoryFixedAngle(false); substrateActive_arc.setCurvable(); substrateActive_arc.setExtended(false); substrateActive_arc.setFactoryAngleIncrement(0); /** Well arc */ ArcProto wellActive_arc = newArcProto("Well-Active", 4, 6, ArcProto.Function.DIFFW, new Technology.ArcLayer(dActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(sActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(well_lay, 6, Poly.Type.FILLED), new Technology.ArcLayer(select_lay, 6, Poly.Type.FILLED) ); wellActive_arc.setFactoryFixedAngle(false); wellActive_arc.setCurvable(); wellActive_arc.setExtended(false); wellActive_arc.setFactoryAngleIncrement(0); /** S-Transistor arc */ ArcProto sTransistor_arc = newArcProto("S-Transistor", 4, 6, ArcProto.Function.DIFFN, new Technology.ArcLayer(dActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(polysilicon_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(select_lay, 6, Poly.Type.FILLED) ); sTransistor_arc.setFactoryFixedAngle(false); sTransistor_arc.setCurvable(); sTransistor_arc.setExtended(false); sTransistor_arc.setFactoryAngleIncrement(0); /** D-Transistor arc */ ArcProto dTransistor_arc = newArcProto("D-Transistor", 8, 10, ArcProto.Function.DIFFP, new Technology.ArcLayer(dActive_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(polysilicon_lay, 2, Poly.Type.FILLED), new Technology.ArcLayer(well_lay, 10, Poly.Type.FILLED) ); dTransistor_arc.setFactoryFixedAngle(false); dTransistor_arc.setCurvable(); dTransistor_arc.setExtended(false); dTransistor_arc.setFactoryAngleIncrement(0); //******************** NODES ******************** /** Metal-1-Pin */ PrimitiveNode metal1Pin_node = PrimitiveNode.newInstance("Metal-1-Pin", this, 3, 3, null,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -