/* -*- 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.TechFactory;
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, TechFactory techFactory)
{
super(generic, techFactory);
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.addPrimitivePortsFixed(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)
});
bp_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, bp_node, new ArcProto [] {bus_arc}, "bus", 0,180, 0, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())
});
bp_node.setFunction(PrimitiveNode.Function.PIN);
bp_node.setArcsWipe();
bp_node.setArcsShrink();
/** adder */
PrimitiveNode a_node = PrimitiveNode.newInstance("adder", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_16),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_15),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_17),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_14)
});
a_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "in1", 270,15, 4, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeTopEdge(), EdgeH.makeCenter(), EdgeV.makeTopEdge()),
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "in2", 225,15, 0, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0)),
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "in3", 180,15, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), EdgeV.makeCenter(), EdgeH.makeLeftEdge(), EdgeV.makeCenter()),
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "in4", 135,15, 2, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0)),
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "in5", 90,15, 3, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeBottomEdge(), EdgeH.makeCenter(), EdgeV.makeBottomEdge()),
PrimitivePort.newInstance(this, a_node, new ArcProto [] {wire_arc}, "out", 0,45, 5, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
a_node.setFunction(PrimitiveNode.Function.UNKNOWN);
a_node.setSquare();
/** multiplier */
PrimitiveNode m_node = PrimitiveNode.newInstance("multiplier", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_13),
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_12),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_17),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_15),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_14)
});
m_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "in1", 270,15, 4, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeTopEdge(), EdgeH.makeCenter(), EdgeV.makeTopEdge()),
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "in2", 225,15, 0, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0)),
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "in3", 180,15, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), EdgeV.makeCenter(), EdgeH.makeLeftEdge(), EdgeV.makeCenter()),
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "in4", 135,15, 2, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0)),
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "in5", 90,15, 3, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeBottomEdge(), EdgeH.makeCenter(), EdgeV.makeBottomEdge()),
PrimitivePort.newInstance(this, m_node, new ArcProto [] {wire_arc}, "out", 0,45, 5, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
m_node.setFunction(PrimitiveNode.Function.UNKNOWN);
m_node.setSquare();
/** timedelay */
PrimitiveNode t_node = PrimitiveNode.newInstance("timedelay", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_11),
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_10),
new Technology.NodeLayer(N_lay, 1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_9),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CLOSED, Technology.NodeLayer.BOX, box_18),
new Technology.NodeLayer(N_lay, 1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_8)
});
t_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, t_node, new ArcProto [] {wire_arc}, "in", 180,15, 0, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), EdgeV.makeCenter(), EdgeH.makeLeftEdge(), EdgeV.makeCenter()),
PrimitivePort.newInstance(this, t_node, new ArcProto [] {wire_arc}, "out", 0,45, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
t_node.setFunction(PrimitiveNode.Function.UNKNOWN);
/** multiplexer */
PrimitiveNode m0_node = PrimitiveNode.newInstance("multiplexer", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_7),
new Technology.NodeLayer(N_lay, 1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_6),
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_5),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CLOSED, Technology.NodeLayer.BOX, box_18)
});
m0_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, m0_node, new ArcProto [] {wire_arc}, "in1", 270,15, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), new EdgeV(0.25, 0), EdgeH.makeLeftEdge(), new EdgeV(0.25, 0)),
PrimitivePort.newInstance(this, m0_node, new ArcProto [] {wire_arc}, "in2", 135,15, 0, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), new EdgeV(-0.25, 0), EdgeH.makeLeftEdge(), new EdgeV(-0.25, 0)),
PrimitivePort.newInstance(this, m0_node, new ArcProto [] {wire_arc}, "out", 0,45, 2, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
m0_node.setFunction(PrimitiveNode.Function.UNKNOWN);
/** subtractor */
PrimitiveNode s_node = PrimitiveNode.newInstance("subtractor", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_4),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_15),
new Technology.NodeLayer(N_lay, 5, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_14),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_17)
});
s_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "in1", 270,15, 4, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeTopEdge(), EdgeH.makeCenter(), EdgeV.makeTopEdge()),
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "in2", 225,15, 0, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0)),
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "in3", 180,15, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), EdgeV.makeCenter(), EdgeH.makeLeftEdge(), EdgeV.makeCenter()),
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "in4", 135,15, 2, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0)),
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "in5", 90,15, 3, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeBottomEdge(), EdgeH.makeCenter(), EdgeV.makeBottomEdge()),
PrimitivePort.newInstance(this, s_node, new ArcProto [] {wire_arc}, "out", 0,45, 5, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
s_node.setFunction(PrimitiveNode.Function.UNKNOWN);
s_node.setSquare();
/** divider */
PrimitiveNode d_node = PrimitiveNode.newInstance("divider", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_3),
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_4),
new Technology.NodeLayer(N_lay, -1, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_2),
new Technology.NodeLayer(N_lay, 4, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_14),
new Technology.NodeLayer(N_lay, 4, Poly.Type.OPENED, Technology.NodeLayer.POINTS, box_15),
new Technology.NodeLayer(N_lay, -1, Poly.Type.CIRCLE, Technology.NodeLayer.POINTS, box_17)
});
d_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "in1", 270,15, 4, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeTopEdge(), EdgeH.makeCenter(), EdgeV.makeTopEdge()),
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "in2", 225,15, 0, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(0.3535534, 0)),
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "in3", 180,15, 1, PortCharacteristic.UNKNOWN,
EdgeH.makeLeftEdge(), EdgeV.makeCenter(), EdgeH.makeLeftEdge(), EdgeV.makeCenter()),
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "in4", 135,15, 2, PortCharacteristic.UNKNOWN,
new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0), new EdgeH(-0.3535534, 0), new EdgeV(-0.3535534, 0)),
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "in5", 90,15, 3, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeBottomEdge(), EdgeH.makeCenter(), EdgeV.makeBottomEdge()),
PrimitivePort.newInstance(this, d_node, new ArcProto [] {wire_arc}, "out", 0,45, 5, PortCharacteristic.UNKNOWN,
EdgeH.makeRightEdge(), EdgeV.makeCenter(), EdgeH.makeRightEdge(), EdgeV.makeCenter())
});
d_node.setFunction(PrimitiveNode.Function.UNKNOWN);
d_node.setSquare();
/** padin */
PrimitiveNode p_node = PrimitiveNode.newInstance("padin", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(N_lay, 0, Poly.Type.CROSSED, Technology.NodeLayer.BOX, box_1),
new Technology.NodeLayer(N_lay, 0, Poly.Type.CLOSED, Technology.NodeLayer.BOX, box_18)
});
p_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, p_node, new ArcProto [] {wire_arc}, "out", 0,180, 0, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())
});
p_node.setFunction(PrimitiveNode.Function.CONNECT);
/** padout */
PrimitiveNode p0_node = PrimitiveNode.newInstance("padout", this, 4, 4, null,
new Technology.NodeLayer []
{
new Technology.NodeLayer(O_lay, 0, Poly.Type.CROSSED, Technology.NodeLayer.BOX, box_1),
new Technology.NodeLayer(N_lay, 0, Poly.Type.CLOSED, Technology.NodeLayer.BOX, box_18)
});
p0_node.addPrimitivePortsFixed(new PrimitivePort[]
{
PrimitivePort.newInstance(this, p0_node, new ArcProto [] {wire_arc}, "in", 0,180, 0, PortCharacteristic.UNKNOWN,
EdgeH.makeCenter(), EdgeV.makeCenter(), EdgeH.makeCenter(), EdgeV.makeCenter())
});
p0_node.setFunction(PrimitiveNode.Function.CONNECT);
// Building information for palette
loadFactoryMenuPalette(EFIDO.class.getResource("efidoMenu.xml"));
//Foundry
newFoundry(Foundry.Type.NONE, null);
};
}