📄 gem.java
字号:
/* -*- tab-width: 4 -*- * * Electric(tm) VLSI Design System * * File: GEM.java * gem technology description * 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.database.topology.NodeInst;import com.sun.electric.database.variable.Variable;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;/** * This is the Temporal Specification Facility (from Lansky) Technology. */public class GEM extends Technology{ /** Variable key for GEM element name. */ public static final Variable.Key ELEMENT_NAME = Variable.newKey("GEM_element"); /** Variable key for GEM event 1. */ public static final Variable.Key EVENT_1 = Variable.newKey("GEM_event1"); /** Variable key for GEM event 2. */ public static final Variable.Key EVENT_2 = Variable.newKey("GEM_event2"); /** Variable key for GEM event 3. */ public static final Variable.Key EVENT_3 = Variable.newKey("GEM_event3"); /** Variable key for GEM event 4. */ public static final Variable.Key EVENT_4 = Variable.newKey("GEM_event4"); private Layer E_lay; private Technology.TechPoint [] box_7; private PrimitiveNode e_node; // -------------------- private and protected methods ------------------------ public GEM(Generic generic) { super(generic, "gem"); setTechDesc("Temporal Specification Facility (from Lansky)"); setFactoryScale(1000, false); // in nanometers: really 1 microns setNoNegatedArcs(); setStaticTechnology(); setNonStandard(); //**************************************** LAYERS **************************************** /** E layer */ E_lay = Layer.newInstance(this, "Element", new EGraphics(false, false, null, 0, 255,0,0, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); /** GA layer */ Layer GA_lay = Layer.newInstance(this, "General-arc", new EGraphics(false, false, null, 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})); /** TA layer */ Layer TA_lay = Layer.newInstance(this, "Temporal-arc", new EGraphics(false, false, null, 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})); /** CA layer */ Layer CA_lay = Layer.newInstance(this, "Causal-arc", 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})); /** PA layer */ Layer PA_lay = Layer.newInstance(this, "Prereq-arc", 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})); /** NA layer */ Layer NA_lay = Layer.newInstance(this, "Nondet-arc", 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})); /** FA layer */ Layer FA_lay = Layer.newInstance(this, "Fork-arc", new EGraphics(false, false, null, 0, 186,0,255, 0.8,true, new int[] {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0})); // The layer functions E_lay.setFunction(Layer.Function.ART, Layer.Function.NONELEC); // Element GA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // General-arc TA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // Temporal-arc CA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // Causal-arc PA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // Prereq-arc NA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // Nondet-arc FA_lay.setFunction(Layer.Function.CONTROL, Layer.Function.NONELEC); // Fork-arc //******************** ARCS ******************** /** General arc */ ArcProto General_arc = newArcProto("General", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(GA_lay, 0, Poly.Type.FILLED) ); General_arc.setWipable(); General_arc.setFactoryAngleIncrement(0); /** Temporal arc */ ArcProto Temporal_arc = newArcProto("Temporal", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(TA_lay, 0, Poly.Type.FILLED) ); Temporal_arc.setWipable(); Temporal_arc.setFactoryAngleIncrement(0); /** Causal arc */ ArcProto Causal_arc = newArcProto("Causal", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(CA_lay, 0, Poly.Type.FILLED) ); Causal_arc.setWipable(); Causal_arc.setFactoryAngleIncrement(0); /** Prerequisite arc */ ArcProto Prerequisite_arc = newArcProto("Prerequisite", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(PA_lay, 0, Poly.Type.FILLED) ); Prerequisite_arc.setWipable(); Prerequisite_arc.setFactoryAngleIncrement(0); /** Nondeterministic arc */ ArcProto Nondeterministic_arc = newArcProto("Nondeterministic", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(NA_lay, 0, Poly.Type.FILLED) ); Nondeterministic_arc.setWipable(); Nondeterministic_arc.setFactoryAngleIncrement(0); /** Nondeterministic-fork arc */ ArcProto Nondeterministic_fork_arc = newArcProto("Nondeterministic-fork", 0, 0, ArcProto.Function.NONELEC, new Technology.ArcLayer(FA_lay, 0, Poly.Type.FILLED) ); Nondeterministic_fork_arc.setWipable(); Nondeterministic_fork_arc.setFactoryAngleIncrement(0); //******************** RECTANGLE DESCRIPTIONS ******************** Technology.TechPoint [] box_6 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeLeftEdge(), EdgeV.makeBottomEdge()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeTopEdge()), }; box_7 = new Technology.TechPoint[] { new Technology.TechPoint(EdgeH.makeCenter(), EdgeV.makeCenter()), new Technology.TechPoint(EdgeH.makeRightEdge(), EdgeV.makeCenter()), }; //******************** NODES ******************** /** General-Pin */ PrimitiveNode gp_node = PrimitiveNode.newInstance("General-Pin", this, 1, 1, null, new Technology.NodeLayer [] { new Technology.NodeLayer(GA_lay, 0, Poly.Type.DISC, Technology.NodeLayer.POINTS, box_7) }); PrimitivePort pinPort = PrimitivePort.newInstance(this, gp_node, new ArcProto [] {General_arc}, "general", 0,180, 0, PortCharacteristic.UNKNOWN, EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter()); gp_node.addPrimitivePorts(new PrimitivePort[] {pinPort}); gp_node.setFunction(PrimitiveNode.Function.PIN); gp_node.setArcsWipe(); gp_node.setArcsShrink(); /** Temporal-Pin */ PrimitiveNode tp_node = PrimitiveNode.newInstance("Temporal-Pin", this, 1, 1, null, new Technology.NodeLayer []
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -