/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: Net.java
* Written by: Jonathan Gainsley, Sun Microsystems.
*
* Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved.
*
* 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.
*
* Created on November 11, 2003, 4:10 PM
*/
package com.sun.electric.tool.logicaleffort;
import java.util.ArrayList;
import java.util.Iterator;
/**
*
* Stores information about a Net for the Logical Effort Tool.
*
* <p>This should only be used in the context of the Logical Effort Tool.
*
* @author gainsley
*/
public class Net {
// --------------------- private variables -------------------------------
/** name of net */ private String name;
/** list of pins on network */ private ArrayList<Pin> pins;
///** list of nodes in wire network */ private ArrayList wireNodes;
///** list of wires in wire network */ private ArrayList wireConnections;
// --------------------- public variables --------------------------------
// --------------------- protected and private methods -------------------
/*
* Create new Net.
* @param name name of Net
*/
protected Net(String name)
{
this.name = name;
pins = new ArrayList<Pin>();
}
/**
* Returns true if this net is driven by a sizeable gate.
*/
protected boolean isDrivenBySizeableGate() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.OUTPUT) {
if (inst.getType() == Instance.Type.LEGATE) return true;
}
}
return false;
}
/**
* Returns true if this net is driven by a static gate (non-sizeable).
*/
protected boolean isDrivenByStaticGate() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.OUTPUT) {
if (inst.getType() == Instance.Type.STATICGATE) return true;
}
}
return false;
}
/**
* Returns true if this net is driven by a sizeable or
* fixed size gate.
*/
protected boolean isDrivenByGate() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.OUTPUT) {
if ((inst.getType() == Instance.Type.LEGATE) ||
(inst.getType() == Instance.Type.STATICGATE)) return true;
}
}
return false;
}
/**
* Returns true if this net drives a sizeable gate.
*/
protected boolean drivesSizableGate() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.INPUT) {
if (inst.getType() == Instance.Type.LEGATE) return true;
}
}
return false;
}
/**
* Returns true if this net drives a static gate.
*/
protected boolean drivesStaticGate() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.INPUT) {
if (inst.getType() == Instance.Type.STATICGATE) return true;
}
}
return false;
}
/**
* Returns true if this net drives a load or a wire
*/
protected boolean drivesLoad() {
for (Pin pin : pins) {
Instance inst = pin.getInstance();
if (pin.getDir() == Pin.Dir.INPUT) {
if ((inst.getType() == Instance.Type.LOAD) ||
(inst.getType() == Instance.Type.WIRE)) return true;
}
}
return false;
}
/** Add a pin to the net */
protected void addPin(Pin pin) { pins.add(pin); pin.setNet(this); }
/** Get a list of pins attached to the net */
protected ArrayList<Pin> getAllPins() { return pins; }
/** Get output pins */
protected ArrayList getOutputPins() { return Pin.getOutputPins(pins); }
/** Get input pins */
protected ArrayList getInputPins() { return Pin.getInputPins(pins); }
/** Get inout pins */
protected ArrayList getInoutPins() { return Pin.getInoutPins(pins); }
/** Get net name */
protected String getName() { return name; }
/** Set the list of WireConnections */
//protected void setWireConnections(ArrayList wireConnections) { this.wireConnections = wireConnections; }
/** Set the list of WireNodes */
//protected void setWireNodes(ArrayList wireNodes) { this.wireNodes = wireNodes; }
}