📄 pcb.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: PCB.java * Printed-Circuit Board technology description * Generated automatically from C Electric * * 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.Technology;import java.awt.Color;/** * This is the Printed Circuit Board (eight-layer) Technology. */public class PCB extends Technology{ // -------------------- private and protected methods ------------------------ public PCB(Generic generic) { super(generic, "pcb", Foundry.Type.NONE, 8); setTechDesc("Printed Circuit Board (eight-layer)"); setFactoryScale(1270000, true); // in nanometers: really 1270 microns setNoNegatedArcs(); setStaticTechnology(); setFactoryTransparentLayers(new Color [] { new Color( 0, 0, 0), // layer 1 new Color(255, 0, 0), // layer 2 new Color( 0,255, 0), // layer 3 new Color( 0, 0,255), // layer 4 new Color(255,255, 0), // layer 5 }); //**************************************** LAYERS **************************************** /** S layer */ Layer S_lay = Layer.newInstance(this, "Signal1", new EGraphics(false, false, null, EGraphics.TRANSPARENT_1, 0, 0, 0,/*0,255,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S0 layer */ Layer S0_lay = Layer.newInstance(this, "Signal2", new EGraphics(false, false, null, EGraphics.TRANSPARENT_2, 255, 0, 0,/*0,0,255,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S1 layer */ Layer S1_lay = Layer.newInstance(this, "Signal3", new EGraphics(false, false, null, EGraphics.TRANSPARENT_3, 0,255, 0,/*255,255,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S2 layer */ Layer S2_lay = Layer.newInstance(this, "Signal4", new EGraphics(false, false, null, EGraphics.TRANSPARENT_4, 0, 0,255,/*116,0,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S3 layer */ Layer S3_lay = Layer.newInstance(this, "Signal5", new EGraphics(false, false, null, EGraphics.TRANSPARENT_5, 255,255, 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})); /** S4 layer */ Layer S4_lay = Layer.newInstance(this, "Signal6", new EGraphics(false, false, null, 0, 255,255,0, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S5 layer */ Layer S5_lay = Layer.newInstance(this, "Signal7", new EGraphics(false, false, null, 0, 255,190,6, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** S6 layer */ Layer S6_lay = Layer.newInstance(this, "Signal8", new EGraphics(false, false, null, 0, 0,255,255, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P layer */ Layer P_lay = Layer.newInstance(this, "Power1", new EGraphics(false, false, null, EGraphics.TRANSPARENT_1, 0, 0, 0,/*0,255,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P0 layer */ Layer P0_lay = Layer.newInstance(this, "Power2", new EGraphics(false, false, null, EGraphics.TRANSPARENT_2, 255, 0, 0,/*0,0,255,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P1 layer */ Layer P1_lay = Layer.newInstance(this, "Power3", new EGraphics(false, false, null, EGraphics.TRANSPARENT_3, 0,255, 0,/*255,255,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P2 layer */ Layer P2_lay = Layer.newInstance(this, "Power4", new EGraphics(false, false, null, EGraphics.TRANSPARENT_4, 0, 0,255,/*116,0,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P3 layer */ Layer P3_lay = Layer.newInstance(this, "Power5", new EGraphics(false, false, null, EGraphics.TRANSPARENT_5, 255,255, 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})); /** P4 layer */ Layer P4_lay = Layer.newInstance(this, "Power6", new EGraphics(false, false, null, 0, 255,255,0, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P5 layer */ Layer P5_lay = Layer.newInstance(this, "Power7", new EGraphics(false, false, null, 0, 255,190,6, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** P6 layer */ Layer P6_lay = Layer.newInstance(this, "Power8", new EGraphics(false, false, null, 0, 0,255,255, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** T layer */ Layer T_lay = Layer.newInstance(this, "TopSilk", new EGraphics(false, false, null, 0, 230,230,230, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** B layer */ Layer B_lay = Layer.newInstance(this, "BottomSilk", new EGraphics(false, false, null, 0, 100,100,100, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** T0 layer */ Layer T0_lay = Layer.newInstance(this, "TopSolder", new EGraphics(false, false, null, 0, 175,255,175, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** B0 layer */ Layer B0_lay = Layer.newInstance(this, "BottomSolder", new EGraphics(false, false, null, 0, 89,159,85, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** D layer */ Layer D_lay = Layer.newInstance(this, "Drill", new EGraphics(false, false, null, 0, 2,15,159, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** D0 layer */ Layer D0_lay = Layer.newInstance(this, "DrillNonPlated", new EGraphics(false, false, null, 0, 150,150,255, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** D1 layer */ Layer D1_lay = Layer.newInstance(this, "Drawing", new EGraphics(false, false, null, 0, 255,150,150, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); // The layer functions S_lay.setFunction(Layer.Function.METAL1); // Signal1 S0_lay.setFunction(Layer.Function.METAL2); // Signal2 S1_lay.setFunction(Layer.Function.METAL3); // Signal3 S2_lay.setFunction(Layer.Function.METAL4); // Signal4 S3_lay.setFunction(Layer.Function.METAL5); // Signal5 S4_lay.setFunction(Layer.Function.METAL6); // Signal6 S5_lay.setFunction(Layer.Function.METAL7); // Signal7 S6_lay.setFunction(Layer.Function.METAL8); // Signal8 P_lay.setFunction(Layer.Function.METAL1); // Power1 P0_lay.setFunction(Layer.Function.METAL2); // Power2 P1_lay.setFunction(Layer.Function.METAL3); // Power3 P2_lay.setFunction(Layer.Function.METAL4); // Power4 P3_lay.setFunction(Layer.Function.METAL5); // Power5 P4_lay.setFunction(Layer.Function.METAL6); // Power6 P5_lay.setFunction(Layer.Function.METAL7); // Power7 P6_lay.setFunction(Layer.Function.METAL8); // Power8 T_lay.setFunction(Layer.Function.ART); // TopSilk B_lay.setFunction(Layer.Function.ART); // BottomSilk T0_lay.setFunction(Layer.Function.METAL1); // TopSolder B0_lay.setFunction(Layer.Function.METAL8); // BottomSolder D_lay.setFunction(Layer.Function.CONTACT1, Layer.Function.CONMETAL); // Drill D0_lay.setFunction(Layer.Function.ART); // DrillNonPlated D1_lay.setFunction(Layer.Function.ART); // Drawing // The CIF names S_lay.setFactoryCIFLayer("PC1"); // Signal1 S0_lay.setFactoryCIFLayer("PC2"); // Signal2 S1_lay.setFactoryCIFLayer("PC3"); // Signal3 S2_lay.setFactoryCIFLayer("PC4"); // Signal4 S3_lay.setFactoryCIFLayer("PC5"); // Signal5 S4_lay.setFactoryCIFLayer("PC6"); // Signal6 S5_lay.setFactoryCIFLayer("PC7"); // Signal7 S6_lay.setFactoryCIFLayer("PC8"); // Signal8 P_lay.setFactoryCIFLayer("PN1"); // Power1 P0_lay.setFactoryCIFLayer("PN2"); // Power2 P1_lay.setFactoryCIFLayer("PN3"); // Power3 P2_lay.setFactoryCIFLayer("PN4"); // Power4 P3_lay.setFactoryCIFLayer("PN5"); // Power5 P4_lay.setFactoryCIFLayer("PN6"); // Power6 P5_lay.setFactoryCIFLayer("PN7"); // Power7 P6_lay.setFactoryCIFLayer("PN8"); // Power8 T_lay.setFactoryCIFLayer("PSSC"); // TopSilk B_lay.setFactoryCIFLayer("PSSS"); // BottomSilk T0_lay.setFactoryCIFLayer("PSMC"); // TopSolder B0_lay.setFactoryCIFLayer("PSMS"); // BottomSolder D_lay.setFactoryCIFLayer("PD"); // Drill D0_lay.setFactoryCIFLayer("PDNP"); // DrillNonPlated D1_lay.setFactoryCIFLayer("PF"); // Drawing // The DXF names S_lay.setFactoryDXFLayer(""); // Signal1 S0_lay.setFactoryDXFLayer(""); // Signal2 S1_lay.setFactoryDXFLayer(""); // Signal3 S2_lay.setFactoryDXFLayer(""); // Signal4 S3_lay.setFactoryDXFLayer(""); // Signal5 S4_lay.setFactoryDXFLayer(""); // Signal6 S5_lay.setFactoryDXFLayer(""); // Signal7 S6_lay.setFactoryDXFLayer(""); // Signal8 P_lay.setFactoryDXFLayer(""); // Power1 P0_lay.setFactoryDXFLayer(""); // Power2 P1_lay.setFactoryDXFLayer(""); // Power3 P2_lay.setFactoryDXFLayer(""); // Power4 P3_lay.setFactoryDXFLayer(""); // Power5 P4_lay.setFactoryDXFLayer(""); // Power6 P5_lay.setFactoryDXFLayer(""); // Power7 P6_lay.setFactoryDXFLayer(""); // Power8 T_lay.setFactoryDXFLayer(""); // TopSilk B_lay.setFactoryDXFLayer(""); // BottomSilk T0_lay.setFactoryDXFLayer(""); // TopSolder B0_lay.setFactoryDXFLayer(""); // BottomSolder D_lay.setFactoryDXFLayer(""); // Drill D0_lay.setFactoryDXFLayer(""); // DrillNonPlated D1_lay.setFactoryDXFLayer(""); // Drawing //******************** ARCS ******************** ArcProto[] SignalArcs = new ArcProto[8]; /** Signal-1 arc */ SignalArcs[0] = newArcProto("Signal-1", 0, 0, ArcProto.Function.METAL1, new Technology.ArcLayer(S_lay, 0, Poly.Type.FILLED) ); SignalArcs[0].setWipable(); SignalArcs[0].setFactoryAngleIncrement(45); /** Signal-2 arc */ SignalArcs[1] = newArcProto("Signal-2", 0, 0, ArcProto.Function.METAL2, new Technology.ArcLayer(S0_lay, 0, Poly.Type.FILLED) ); SignalArcs[1].setWipable(); SignalArcs[1].setFactoryAngleIncrement(45); /** Signal-3 arc */ SignalArcs[2] = newArcProto("Signal-3", 0, 0, ArcProto.Function.METAL3, new Technology.ArcLayer(S1_lay, 0, Poly.Type.FILLED) ); SignalArcs[2].setWipable(); SignalArcs[2].setFactoryAngleIncrement(45); /** Signal-4 arc */ SignalArcs[3] = newArcProto("Signal-4", 0, 0, ArcProto.Function.METAL4, new Technology.ArcLayer(S2_lay, 0, Poly.Type.FILLED) ); SignalArcs[3].setWipable(); SignalArcs[3].setFactoryAngleIncrement(45); /** Signal-5 arc */ SignalArcs[4] = newArcProto("Signal-5", 0, 0, ArcProto.Function.METAL5, new Technology.ArcLayer(S3_lay, 0, Poly.Type.FILLED) ); SignalArcs[4].setWipable(); SignalArcs[4].setFactoryAngleIncrement(45); /** Signal-6 arc */ SignalArcs[5] = newArcProto("Signal-6", 0, 0, ArcProto.Function.METAL6, new Technology.ArcLayer(S4_lay, 0, Poly.Type.FILLED)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -