📄 rcmos.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: RCMOS.java * Round CMOS technology description (CalTech rules) * Specified by: Dick Lyon, Carver Mead, and Erwin Liu * * Copyright (c) 2004 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */package com.sun.electric.technology.technologies;import com.sun.electric.database.geometry.EGraphics;import com.sun.electric.database.geometry.Poly;import com.sun.electric.database.prototype.PortCharacteristic;import com.sun.electric.technology.ArcProto;import com.sun.electric.technology.EdgeH;import com.sun.electric.technology.EdgeV;import com.sun.electric.technology.Foundry;import com.sun.electric.technology.Layer;import com.sun.electric.technology.PrimitiveNode;import com.sun.electric.technology.PrimitivePort;import com.sun.electric.technology.SizeOffset;import com.sun.electric.technology.Technology;import java.awt.Color;/** * This is the Complementary MOS (old, N-Well, from Griswold) Technology. */public class RCMOS extends Technology{ // -------------------- private and protected methods ------------------------ public RCMOS(Generic generic) { super(generic, "rcmos", Foundry.Type.NONE, 2); setTechShortName("Round CMOS"); setTechDesc("Complementary MOS (round, from MOSIS, P-Well, double metal)"); setFactoryScale(2000, true); // in nanometers: really 2 microns setNoNegatedArcs();// setNonStandard(); setStaticTechnology(); setFactoryTransparentLayers(new Color [] { new Color( 96,209,255), // Metal-1 new Color(255,155,192), // Polysilicon new Color(107,226, 96), // Diffusion new Color(240,221,181), // Well new Color(224, 95,255) // Metal-2 }); //**************************************** LAYERS **************************************** /** Metal-1 layer */ Layer metal1_lay = Layer.newInstance(this, "Metal-1", new EGraphics(false, true, null, EGraphics.TRANSPARENT_1, 96,209,255,0.8,true, new int[] { 0x2222, // X X X X 0x0000, // 0x8888, // X X X X 0x0000, // 0x2222, // X X X X 0x0000, // 0x8888, // X X X X 0x0000, // 0x2222, // X X X X 0x0000, // 0x8888, // X X X X 0x0000, // 0x2222, // X X X X 0x0000, // 0x8888, // X X X X 0x0000}));// Layer metal2_lay = Layer.newInstance(this, "Metal-2", new EGraphics(false, true, null, EGraphics.TRANSPARENT_5, 224,95,255,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 /** P layer */ Layer polysilicon_lay = Layer.newInstance(this, "Polysilicon", new EGraphics(false, true, 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 /** S-Active layer */ Layer sActive_lay = Layer.newInstance(this, "S-Active", new EGraphics(false, true, 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 /** D-Active layer */ Layer dActive_lay = Layer.newInstance(this, "D-Active", new EGraphics(false, true, 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 /** Select layer */ Layer select_lay = Layer.newInstance(this, "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 /** Well layer */ Layer well_lay = Layer.newInstance(this, "Well", new EGraphics(false, true, 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}));// /** Cut layer */ Layer cut_lay = Layer.newInstance(this, "Contact-Cut", new EGraphics(false, false, null, 0, 0,0,0,0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** Via layer */ Layer via_lay = Layer.newInstance(this, "Via", new EGraphics(false, false, null, 0, 0,0,0,0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** Passivation layer */ Layer passivation_lay = Layer.newInstance(this, "Passivation", new EGraphics(true, true, null, 0, 100,100,100,0.8,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 Cut layer */ Layer polyCut_lay = Layer.newInstance(this, "Poly-Cut", new EGraphics(false, false, null, 0, 0,0,0,0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** Active Cut layer */ Layer activeCut_lay = Layer.newInstance(this, "Active-Cut", new EGraphics(false, false, null, 0, 0,0,0,0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}));// /** Pseudo-Metal-1 layer */// Layer pseudoMetal1_lay = Layer.newInstance(this, "Pseudo-Metal-1",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_1, 96,209,255,0.8,true,// new int[] { 0x2222, // X X X X // 0x0000, // // 0x8888, // X X X X // 0x0000, // // 0x2222, // X X X X // 0x0000, // // 0x8888, // X X X X // 0x0000, // // 0x2222, // X X X X // 0x0000, // // 0x8888, // X X X X // 0x0000, // // 0x2222, // X X X X // 0x0000, // // 0x8888, // X X X X // 0x0000}));// //// /** Pseudo-Metal-2 layer */// Layer pseudoMetal2_lay = Layer.newInstance(this, "Pseudo-Metal-2",// new EGraphics(false, false, null, EGraphics.TRANSPARENT_5, 224,95,255,0.8,true,// new int[] { 0x1010, // X X // 0x2020, // X X // 0x4040, // X X // 0x8080, // X X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -