📄 efido.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: EFIDO.java * Digital Filter technology * Generated automatically from a library * * 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 Digital Filter Technology. */public class EFIDO extends Technology{ // -------------------- private and protected methods ------------------------ public EFIDO(Generic generic) { super(generic, "efido"); setTechDesc("Digital Filters"); setFactoryScale(10000, false); // in nanometers: really 10 microns setNoNegatedArcs(); setStaticTechnology(); setFactoryTransparentLayers(new Color [] { new Color(255, 0, 0), // layer 1 new Color( 0, 0,255), // layer 2 new Color( 0,155, 80), // layer 3 new Color( 0, 0, 0), // layer 4 new Color( 0, 0, 0), // layer 5 }); //**************************************** LAYERS **************************************** /** N layer */ Layer N_lay = Layer.newInstance(this, "Node", new EGraphics(false, false, null, EGraphics.TRANSPARENT_1, 255, 0, 0,/*0,155,80,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** A layer */ Layer A_lay = Layer.newInstance(this, "Arc", new EGraphics(false, false, null, EGraphics.TRANSPARENT_2, 0, 0,255,/*0,0,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** O layer */ Layer O_lay = Layer.newInstance(this, "Outpad", new EGraphics(false, false, null, EGraphics.TRANSPARENT_3, 0,155, 80,/*0,0,0,*/ 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); // The layer functions N_lay.setFunction(Layer.Function.ART, Layer.Function.NONELEC); // Node A_lay.setFunction(Layer.Function.UNKNOWN); // Arc O_lay.setFunction(Layer.Function.OVERGLASS); // Outpad //******************** ARCS ******************** /** wire arc */ ArcProto wire_arc = newArcProto("wire", 0, 0, ArcProto.Function.METAL1, new Technology.ArcLayer(A_lay, 0, Poly.Type.CLOSED) ); wire_arc.setFactoryFixedAngle(true); wire_arc.setFactoryAngleIncrement(45); /** bus arc */ ArcProto bus_arc = newArcProto("bus", 0, 2, ArcProto.Function.BUS, new Technology.ArcLayer(A_lay, 2, Poly.Type.CLOSED) ); bus_arc.setFactoryFixedAngle(true); bus_arc.setFactoryAngleIncrement(45); //******************** RECTANGLE DESCRIPTIONS ******************** Technology.TechPoint [] box_1 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(0.25, 0)), }; Technology.TechPoint [] box_2 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.05, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(0.05, 0), new EdgeV(0.25, 0)), }; Technology.TechPoint [] box_3 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.05, 0), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(0.05, 0), new EdgeV(-0.25, 0)), }; Technology.TechPoint [] box_4 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.25, 0), EdgeV.makeCenter()), new Technology.TechPoint(new EdgeH(0.25, 0), EdgeV.makeCenter()), }; Technology.TechPoint [] box_5 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeLeftEdge(), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(0.25, 0), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), }; Technology.TechPoint [] box_6 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeLeftEdge(), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(0.25, 0)), }; Technology.TechPoint [] box_7 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.2, 0), new EdgeV(-0.05, 0)), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(-0.1, 0), new EdgeV(-0.3, 0)), }; Technology.TechPoint [] box_8 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.4, 0), new EdgeV(0.1, 0)), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), new Technology.TechPoint(new EdgeH(0.4, 0), new EdgeV(-0.1, 0)), }; Technology.TechPoint [] box_9 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.3, 0), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), }; Technology.TechPoint [] box_10 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeCenter(), new EdgeV(0.25, 0)), new Technology.TechPoint(EdgeH.makeCenter(), new EdgeV(-0.25, 0)), }; Technology.TechPoint [] box_11 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(0.25, 0)), }; Technology.TechPoint [] box_12 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(-0.25, 0)), }; Technology.TechPoint [] box_13 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(-0.25, 0)), }; Technology.TechPoint [] box_14 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.4, 0), new EdgeV(0.1, 0)), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), new Technology.TechPoint(new EdgeH(0.4, 0), new EdgeV(-0.1, 0)), }; Technology.TechPoint [] box_15 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.3, 0), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), }; Technology.TechPoint [] box_16 = new Technology.TechPoint[] { new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(0.25, 0)), new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(new EdgeH(-0.25, 0), new EdgeV(-0.25, 0)), new Technology.TechPoint(new EdgeH(0.25, 0), new EdgeV(-0.25, 0)) }; Technology.TechPoint [] box_17 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), }; Technology.TechPoint [] box_18 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeLeftEdge(), EdgeV.makeBottomEdge()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeTopEdge()), }; //******************** NODES ******************** /** wire_pin */ PrimitiveNode wp_node = PrimitiveNode.newInstance("wire_pin", this, 1, 1, null, new Technology.NodeLayer [] { new Technology.NodeLayer(A_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_17) }); wp_node.addPrimitivePorts(new PrimitivePort[] { PrimitivePort.newInstance(this, wp_node, new ArcProto [] {wire_arc}, "wire", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()) }); wp_node.setFunction(PrimitiveNode.Function.PIN); wp_node.setWipeOn1or2(); wp_node.setSquare(); /** bus_pin */ PrimitiveNode bp_node = PrimitiveNode.newInstance("bus_pin", this, 2, 2, null, new Technology.NodeLayer [] { new Technology.NodeLayer(N_lay, 0, Poly.Type.CROSSED, Technology.NodeLayer.BOX, box_18)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -