⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcb.java

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/* -*- 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 + -