📄 mocmos.java
字号:
0x0000, // 0x1010, // X X 0x0000, // 0x0101, // X X 0x0000, // 0x1010, // X X 0x0000}));// /** P Well layer */ wellLayers[P_TYPE] = Layer.newInstance(this, "P-Well", new EGraphics(true, true, null, 0, 139,99,46, 1,false, new int[] { 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 0x0808, // X X 0x0404}));// X X /** N Well implant */ wellLayers[N_TYPE] = Layer.newInstance(this, "N-Well", new EGraphics(true, true, null, 0, 139,99,46, 1,false, new int[] { 0x0202, // X X 0x0000, // 0x2020, // X X 0x0000, // 0x0202, // X X 0x0000, // 0x2020, // X X 0x0000, // 0x0202, // X X 0x0000, // 0x2020, // X X 0x0000, // 0x0202, // X X 0x0000, // 0x2020, // X X 0x0000}));// /** poly cut layer */ polyCutLayer = Layer.newInstance(this, "Poly-Cut", new EGraphics(false, false, null, 0, 100,100,100, 1,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** active cut layer */ activeCutLayer = Layer.newInstance(this, "Active-Cut", new EGraphics(false, false, null, 0, 100,100,100, 1,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** via1->via5 layer */ for (int i = 0; i < viaLayers.length; i++) viaLayers[i] = Layer.newInstance(this, "Via"+(i+1), new EGraphics(false, false, null, 0, 180,180,180, 1,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** passivation layer */ passivationLayer = Layer.newInstance(this, "Passivation", new EGraphics(true, true, null, 0, 100,100,100, 1,true, new int[] { 0x1C1C, // XXX XXX 0x3E3E, // XXXXX XXXXX 0x3636, // XX XX XX XX 0x3E3E, // XXXXX XXXXX 0x1C1C, // XXX XXX 0x0000, // 0x0000, // 0x0000, // 0x1C1C, // XXX XXX 0x3E3E, // XXXXX XXXXX 0x3636, // XX XX XX XX 0x3E3E, // XXXXX XXXXX 0x1C1C, // XXX XXX 0x0000, // 0x0000, // 0x0000}));// /** poly/trans layer */ transistorPolyLayer = Layer.newInstance(this, "Transistor-Poly", new EGraphics(false, true, null, EGraphics.TRANSPARENT_2, 255,155,192, 1,true, new int[] { 0x1111, // X X X X 0xFFFF, // XXXXXXXXXXXXXXXX 0x1111, // X X X X 0x5555, // X X X X X X X X 0x1111, // X X X X 0xFFFF, // XXXXXXXXXXXXXXXX 0x1111, // X X X X 0x5555, // X X X X X X X X 0x1111, // X X X X 0xFFFF, // XXXXXXXXXXXXXXXX 0x1111, // X X X X 0x5555, // X X X X X X X X 0x1111, // X X X X 0xFFFF, // XXXXXXXXXXXXXXXX 0x1111, // X X X X 0x5555}));// X X X X X X X X /** poly cap layer */ polyCapLayer = Layer.newInstance(this, "Poly-Cap", new EGraphics(false, false, null, 0, 0,0,0, 1,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P act well layer */ pActiveWellLayer = Layer.newInstance(this, "P-Active-Well", new EGraphics(false, true, null, EGraphics.TRANSPARENT_3, 107,226, 96,/*107,204,0,*/ 1,false, 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 /** Silicide block */ /** Resist Protection Oxide (RPO) Same graphics as in 90nm tech */ silicideBlockLayer = Layer.newInstance(this, "Silicide-Block", new EGraphics(true, true, null, EGraphics.TRANSPARENT_2, 255,155,192,/*192,255,255,*/ 1,true, new int[] { 0x1010, /* X X */ 0x2828, /* X X X X */ 0x4444, /* X X X X */ 0x8282, /* X X X X */ 0x0101, /* X X */ 0x0000, /* */ 0x0000, /* */ 0x0000, /* */ 0x1010, /* X X */ 0x2828, /* X X X X */ 0x4444, /* X X X X */ 0x8282, /* X X X X */ 0x0101, /* X X */ 0x0000, /* */ 0x0000, /* */ 0x0000}));/* */ /** Thick active */ thickActiveLayer = Layer.newInstance(this, "Thick-Active", new EGraphics(true, true, null, 0, 0,0,0, 1,false, new int[] { 0x4040, // X X 0x8080, // X X 0x0101, // X X 0x0202, // X X 0x0101, // X X 0x8080, // X X 0x4040, // X X 0x2020, // X X 0x4040, // X X 0x8080, // X X 0x0101, // X X 0x0202, // X X 0x0101, // X X 0x8080, // X X 0x4040, // X X 0x2020}));// X X /** pad frame */ padFrameLayer = Layer.newInstance(this, "Pad-Frame", new EGraphics(false, false, null, 0, 255,0,0, 1,false, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); createExtraLayers(); // The layer functions metalLayers[0].setFunction(Layer.Function.METAL1); // Metal-1 metalLayers[1].setFunction(Layer.Function.METAL2); // Metal-2 metalLayers[2].setFunction(Layer.Function.METAL3); // Metal-3 metalLayers[3].setFunction(Layer.Function.METAL4); // Metal-4 metalLayers[4].setFunction(Layer.Function.METAL5); // Metal-5 metalLayers[5].setFunction(Layer.Function.METAL6); // Metal-6 poly1Layer.setFunction(Layer.Function.POLY1); // Polysilicon-1 poly2_lay.setFunction(Layer.Function.POLY2); // Polysilicon-2 activeLayers[P_TYPE].setFunction(Layer.Function.DIFFP); // P-Active activeLayers[N_TYPE].setFunction(Layer.Function.DIFFN); // N-Active selectLayers[P_TYPE].setFunction(Layer.Function.IMPLANTP); // P-Select selectLayers[N_TYPE].setFunction(Layer.Function.IMPLANTN); // N-Select wellLayers[P_TYPE].setFunction(Layer.Function.WELLP); // P-Well wellLayers[N_TYPE].setFunction(Layer.Function.WELLN); // N-Well polyCutLayer.setFunction(Layer.Function.CONTACT1, Layer.Function.CONPOLY); // Poly-Cut activeCutLayer.setFunction(Layer.Function.CONTACT1, Layer.Function.CONDIFF); // Active-Cut viaLayers[0].setFunction(Layer.Function.CONTACT2, Layer.Function.CONMETAL); // Via-1 viaLayers[1].setFunction(Layer.Function.CONTACT3, Layer.Function.CONMETAL); // Via-2 viaLayers[2].setFunction(Layer.Function.CONTACT4, Layer.Function.CONMETAL); // Via-3 viaLayers[3].setFunction(Layer.Function.CONTACT5, Layer.Function.CONMETAL); // Via-4 viaLayers[4].setFunction(Layer.Function.CONTACT6, Layer.Function.CONMETAL); // Via-5 passivationLayer.setFunction(Layer.Function.OVERGLASS); // Passivation transistorPolyLayer.setFunction(Layer.Function.GATE); // Transistor-Poly polyCapLayer.setFunction(Layer.Function.CAP); // Poly-Cap pActiveWellLayer.setFunction(Layer.Function.DIFFP); // P-Active-Well silicideBlockLayer.setFunction(Layer.Function.ART); // Silicide-Block thickActiveLayer.setFunction(Layer.Function.DIFF, Layer.Function.THICK); // Thick-Active padFrameLayer.setFunction(Layer.Function.ART); // Pad-Frame if (pBaseLayer != null) pBaseLayer.setFunction(Layer.Function.BASE); Layer pseudoMetal1_lay = metalLayers[0].makePseudo(); // Pseudo-Metal-1 Layer pseudoMetal2_lay = metalLayers[1].makePseudo(); // Pseudo-Metal-2 Layer pseudoMetal3_lay = metalLayers[2].makePseudo(); // Pseudo-Metal-3 Layer pseudoMetal4_lay = metalLayers[3].makePseudo(); // Pseudo-Metal-4 Layer pseudoMetal5_lay = metalLayers[4].makePseudo(); // Pseudo-Metal-5 Layer pseudoMetal6_lay = metalLayers[5].makePseudo(); // Pseudo-Metal-6 Layer pseudoPoly1_lay = poly1Layer.makePseudo(); // Pseudo-Polysilicon-1 Layer pseudoPoly2_lay = poly2_lay.makePseudo(); // Pseudo-Polysilicon-2 pseudoActiveLayers[P_TYPE] = activeLayers[P_TYPE].makePseudo(); // Pseudo-P-Active pseudoActiveLayers[N_TYPE] = activeLayers[N_TYPE].makePseudo(); // Pseudo-N-Active pseudoSelectLayers[P_TYPE] = selectLayers[P_TYPE].makePseudo(); // Pseudo-P-Select pseudoSelectLayers[N_TYPE] = selectLayers[N_TYPE].makePseudo(); // Pseudo-N-Select pseudoWellLayers[P_TYPE] = wellLayers[P_TYPE].makePseudo(); // Pseudo-P-Well pseudoWellLayers[N_TYPE] = wellLayers[N_TYPE].makePseudo(); // Pseudo-N-Well // The CIF names metalLayers[0].setFactoryCIFLayer("CMF"); // Metal-1 metalLayers[1].setFactoryCIFLayer("CMS"); // Metal-2 metalLayers[2].setFactoryCIFLayer("CMT"); // Metal-3 metalLayers[3].setFactoryCIFLayer("CMQ"); // Metal-4 metalLayers[4].setFactoryCIFLayer("CMP"); // Metal-5 metalLayers[5].setFactoryCIFLayer("CM6"); // Metal-6 poly1Layer.setFactoryCIFLayer("CPG"); // Polysilicon-1 poly2_lay.setFactoryCIFLayer("CEL"); // Polysilicon-2 activeLayers[P_TYPE].setFactoryCIFLayer("CAA"); // P-Active activeLayers[N_TYPE].setFactoryCIFLayer("CAA"); // N-Active selectLayers[P_TYPE].setFactoryCIFLayer("CSP"); // P-Select selectLayers[N_TYPE].setFactoryCIFLayer("CSN"); // N-Select wellLayers[P_TYPE].setFactoryCIFLayer("CWP"); // P-Well wellLayers[N_TYPE].setFactoryCIFLayer("CWN"); // N-Well polyCutLayer.setFactoryCIFLayer("CCC"); // Poly-Cut activeCutLayer.setFactoryCIFLayer("CCC"); // Active-Cut viaLayers[0].setFactoryCIFLayer("CVA"); // Via-1 viaLayers[1].setFactoryCIFLayer("CVS"); // Via-2 viaLayers[2].setFactoryCIFLayer("CVT"); // Via-3 viaLayers[3].setFactoryCIFLayer("CVQ"); // Via-4 viaLayers[4].setFactoryCIFLayer("CV5"); // Via-5 passivationLayer.setFactoryCIFLayer("COG"); // Passivation transistorPolyLayer.setFactoryCIFLayer("CPG"); // Transistor-Poly polyCapLayer.setFactoryCIFLayer("CPC"); // Poly-Cap pActiveWellLayer.setFactoryCIFLayer("CAA"); // P-Active-Well silicideBlockLayer.setFactoryCIFLayer("CSB"); // Silicide-Block thickActiveLayer.setFactoryCIFLayer("CTA"); // Thick-Active padFrameLayer.setFactoryCIFLayer("XP"); // Pad-Frame
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -