byucc.edif
Class EdifCell

java.lang.Object
  extended by byucc.edif.NamedPropertyObject
      extended by byucc.edif.EdifCell
All Implemented Interfaces:
EdifOut, Nameable, Properties, Trimable, java.io.Serializable

public class EdifCell
extends NamedPropertyObject
implements EdifOut, Trimable, java.io.Serializable

Represents an EDIF cell definition. This class is not tied to any target langauge or implementation (i.e. VHDL, JHDL, etc).

This implementation of EdifCell contains Lists of all EdifCellInstance, EdifNet, and EdifPort objects associated with this EdifCell object. Additionally, this class contains a reference to the EdifLibrary object which owns the EdifCell object.

This class may allocate a large amount of memory to represent a given cell. To help control the memory allocation, this class implements the Trimable interface for trimming unneeded memory.

Sample EDIF code for an EdifCell:

 (cell graycount (cellType GENERIC)
    (view netlist (viewType NETLIST)
      (interface
        (port G_5322 (direction INPUT))
        ...
      )
      (contents
       (instance (rename count_0 "count[0]") (viewRef PRIM (cellRef FDCE (libraryRef UNILIB)))
       ...
       (net (rename write_addrgray_pre_0 "WRITE_ADDRGRAY_PRE(0)") (joined
        (portRef (member write_addrgray_pre 3))
        (portRef Q (instanceRef count_gray_0))
       ))
       ...
       )
      )
    )
 )
 

Definitions

There are a number of terms that are used to describe the various components of an EdifCell. This list serves as the definition of these terms to insure consistent and understandable usage.

To Do:

Name Space:

Author:
Welson Sun, Mike Wirthlin, Tyler Anderson
See Also:
EdifPort, EdifCellInstance, EdifNet, EdifLibrary, Serialized Form

Field Summary
private  HashMapNameSpaceResolver _cellInstanceList
          This List is used to hold all of the instanced children within the cell (EdifCellInstance).
private  EdifCellInterface _interface
          The port interface of this EdifCell.
private  boolean _isPrimitive
          This flag indicates that the given EdifCell is a library "primitive" and does not contain any internal heirarchy (i.e. cell instances or nets).
private  EdifLibrary _library
          The EdifCell is defined within an Edif_Libraryrary.
private  HashMapNameSpaceResolver _netList
          This List is used to hold all the internal nets in this cell (EdifNet).
 
Constructor Summary
EdifCell(EdifCell cell)
           
EdifCell(EdifCell cell, java.lang.String name)
          Constructs an identical copy of cell.
EdifCell(EdifNameable name)
          Constructs an empty, named EdifCell object.
EdifCell(EdifNameable name, boolean isPrimitive)
          Constructs an empty, named EdifCell object.
EdifCell(java.lang.String name)
          Constructs an empty, named EdifCell object.
EdifCell(java.lang.String name, boolean isPrimitive)
          Constructs an empty, named EdifCell object.
EdifCell(java.lang.String name, EdifCellInterface iface)
          Constructs an empty, named EdifCell object.
 
Method Summary
 boolean addNet(EdifNet net)
          Add an EdifNet object to the EdifCell.
 EdifPort addPort(EdifNameable name, int width, int direction)
          Adds a new port to the EdifCellInterface.
 EdifPort addPort(java.lang.String name, int width, int direction)
          Adds a new port to the EdifCellInterface.
 boolean addSubCell(EdifCellInstance cellInstance)
          Add an EdifCellInstance object to the EdifCell.
 void addSubCellSafe(EdifCellInstance cellInstance)
           
 java.lang.String addSubCellUniqueName(EdifCellInstance cellInstance)
           
 java.util.Iterator cellInstanceIterator()
          Returns an Iterator of this cell's cellInstances.
 boolean contains(EdifCellInstance contain)
          Checks to see if the passed-in EdifCellInstance is already contained within this EdifCell.
 boolean contains(EdifNet contain)
          Checks to see if the passed-in EdifNet is already contained within this EdifCell.
 boolean contains(EdifPort contain)
          Checks to see if the passed-in EdifPort is already contained within this EdifCell.
 EdifCell copy()
          Returns a deep copy of this EdifCell Object, copying all sub-objects using the 'new' statement except String Objects, having all new objects using the new EdifCell as parent.
 boolean deleteNet(EdifNet delete)
          Deletes the given net from this EdifCell.
 void deletePort(EdifPort delete)
          Deletes the given port from this EdifCell.
 boolean deleteSubCell(EdifCellInstance cellInstance)
           
 boolean deleteSubCell(EdifCellInstance cellInstance, boolean removeRefsInNets)
          Removes an EdifCellInstance object from the current EdifCell object.
 boolean equalsInterface(EdifCell cell)
          Overloaded method that defaults to not comparing by possible bus.
 boolean equalsName(EdifCell cell)
          This method will determine if the name of this EdifCell is the same as the name of the passed in EdifCell.
 java.util.Collection findCellInstancesOf(EdifCell type)
          This function returns all EdifCellInstances within this EdifCell object that reference a given cell in this library (i.e. the same type as the given cell).
 EdifCellInstance getCellInstance(java.lang.String name)
          Returns the EdifCellInstance contained within this EdifCell Object that matches the passed-in name.
 java.util.Collection getDanglingNets()
          Dangling net is not connected to any outputs.
 java.util.Collection getDanglingNets(boolean inputNoOutput, boolean outputsOnly)
          Dangling net is not connected to any outputs.
 java.util.Collection getHierarchicalPrimitiveList()
          Returns a Collection of List objects for each primitive instance within the hierarchy of this cell.
 java.util.Collection getInnerCells()
          Returns a Collection of all EdifCells instanced by the EdifCellInstances contained within this EdifCell Object.
 java.util.Collection getInputPorts()
          Returns a Collection Object of the input ports
 EdifCellInstance getInstance(java.lang.String name)
          Returns the EdifCellInstance Object that matches the passed-in name, or null if not found.
 java.util.Collection getInstancedCellTypes()
          Returns all unique EdifCell objects that are instanced within this EdifCell object.
 EdifNet getInstancePortNet(EdifCellInstance instance, EdifPort port)
          This method will return the EdifNet that is connected to the given port on the given instance.
 EdifCellInterface getInterface()
          Returns the EdifCellInterface of this EdifCell.
 EdifLibrary getLibrary()
          Returns the EdifLibrary object to which the current EdifCell object belongs.
 EdifPort getMatchingPort(EdifPort port)
          Returns the EdifPort object which defines a port on the current EdifCell object and corresponds to the given name.
 EdifNet getNet(java.lang.String name)
          Returns the net that maps to the given name.
 java.util.Collection getNetList()
          Returns a List containing all of the EdifNet objects which this EdifCell object currently owns.
 java.util.Collection getOutputPorts()
          Returns a Collection Object of the output ports
 EdifPort getPort(java.lang.String name)
          Returns the EdifPort object which defines a port on the current EdifCell object and corresponds to the given name.
 java.util.Collection getPortList()
          Returns a Collection containing all of the EdifPort objects currently associated with this EdifCell object.
 java.util.Collection getPortRefs()
          Returns a collection of all EdifPortRef objects owned by this cell.
 java.util.Collection getSortedNetList()
          Returns a sorted Collection containing all of the EdifNet objects currently by this EdifCell object.
 java.util.Collection getSortedPortList()
          Returns a sorted Collection containing all of the EdifPort objects currently associated with this EdifCell object.
 java.util.TreeMap getSortedPropertyList()
          Returns a TreeMap of all Property objects corresponding to properties of the current EdifCell object.
 java.util.Collection getSortedSubCellList()
          Returns a Collection of EdifCellInstance objects owned and instantiated by the current EdifCell object.
 java.util.Collection getSubCellList()
          Returns a Collection of EdifCellInstance objects owned and instantiated by the current EdifCell object.
 java.util.Collection getUnconnectedInstances()
          Returns a Collection of EdifCellInstance objects that are not connected to any EdifNet in the Cell.
 java.util.Map getUnconnectedPorts()
          Returns a map whose key is an EdifCellInstance (EdifCell key refers to this cell), and whose value is a Collection of unconnected ports.
 boolean isLeafCell()
          Returns true if the current EdifCell object has no children in its EdifCellInstance list; otherwise, returns false.
 boolean isPrimitive()
          Returns whether or not this is a known primitive cell.
 void modifyCellType(EdifCell oldType, EdifCell newType)
           
 java.util.Iterator netListIterator()
          Returns an iterator of this cell's nets.
 void setLibrary(EdifLibrary library)
          Sets the library for this EdifCell object if this EdifCell object is contained within the passed-in library. lib.addCell calls this method after adding the cell to the library.
 void setPrimitive()
          Sets this cell to primitive.
 void tagAsPrimitive(EdifLibrary primitives)
          Tags this cell as primitive if it matches a cell in the passed-in library.
 void toEdif(EdifPrintWriter epw)
          Writes the EDIF representation of this EdifCell object to the EdifPrintWriter passed as a parameter.
 java.lang.String toString()
          Returns a String representation of this object.
 void trimToSize()
          This method will trim the size of all collections contained by this class.
 
Methods inherited from class byucc.edif.NamedPropertyObject
addProperty, addProperty, copyProperties, equals, equalsProperties, getEdifNameable, getName, getOldName, getProperty, getPropertyList, rename, rename
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

_cellInstanceList

private HashMapNameSpaceResolver _cellInstanceList
This List is used to hold all of the instanced children within the cell (EdifCellInstance). No space is initially allocated for this list since primitive cells will not contain cell instances.


_isPrimitive

private boolean _isPrimitive
This flag indicates that the given EdifCell is a library "primitive" and does not contain any internal heirarchy (i.e. cell instances or nets). Note that a "primitive" EdifCell is different than an EdifCell that has no internal cell instances or nets. An "empty" EdifCell that is not a primitive corresponds to a "black box" or an EdifCell object whose contents have not been defined. It is called a "black box" because we do not know what is inside of it. A primitive, however, is known to be a leaf-cell.
This field is a atomic meaning that it can only be set in the constructor.

See Also:
isLeafCell(), isPrimitive()

_library

private EdifLibrary _library
The EdifCell is defined within an Edif_Libraryrary. This field member defines the Edif_Libraryrary that owns this cell.


_netList

private HashMapNameSpaceResolver _netList
This List is used to hold all the internal nets in this cell (EdifNet). No space is initially allocated for this list since primitive cells will not contain nets.


_interface

private EdifCellInterface _interface
The port interface of this EdifCell.

Constructor Detail

EdifCell

public EdifCell(java.lang.String name)
Constructs an empty, named EdifCell object.

Parameters:
name - The name of the EdifCell object

EdifCell

public EdifCell(EdifNameable name)
Constructs an empty, named EdifCell object.

Parameters:
name - The name of the EdifCell object

EdifCell

public EdifCell(java.lang.String name,
                EdifCellInterface iface)
Constructs an empty, named EdifCell object.

Parameters:
name - The name of the EdifCell object

EdifCell

public EdifCell(java.lang.String name,
                boolean isPrimitive)
Constructs an empty, named EdifCell object. This constructor allows the primitive flag to be set.

Parameters:
name - The name of the EdifCell object
isPrimitive - Specifies the value of the _isPrimitive field for this EdifCell Object

EdifCell

public EdifCell(EdifNameable name,
                boolean isPrimitive)
Constructs an empty, named EdifCell object. This constructor allows the primitive flag to be set.

Parameters:
name - The name of the EdifCell object
isPrimitive - Specifies the value of the _isPrimitive field for this EdifCell Object

EdifCell

public EdifCell(EdifCell cell)

EdifCell

public EdifCell(EdifCell cell,
                java.lang.String name)
Constructs an identical copy of cell. TODO: we need to unify the copy methods.

Method Detail

addNet

public boolean addNet(EdifNet net)
Add an EdifNet object to the EdifCell. This sets the parent of the EdifNet object to the current EdifCell object.

Parameters:
net - EdifNet object to add to the EdifCell

addPort

public EdifPort addPort(EdifNameable name,
                        int width,
                        int direction)
Adds a new port to the EdifCellInterface.

Parameters:
name - The name of the new port to add
width - The width of the new port to add
direction - The direction of the new port to add

addPort

public EdifPort addPort(java.lang.String name,
                        int width,
                        int direction)
Adds a new port to the EdifCellInterface.

Parameters:
name - The name of the new port to add
width - The width of the new port to add
direction - The direction of the new port to add

addSubCell

public boolean addSubCell(EdifCellInstance cellInstance)
Add an EdifCellInstance object to the EdifCell. The parent of the EdifCellInstance is set to the current EdifCell object. TODO: we need to give the user the option of not allowing renaming. TODO: create a method addSubCell (EdifCell, name) that creates the edifcellinstance automatically for the user.

Parameters:
cellInstance - EdifCellInstance object to add to the EdifCell

addSubCellSafe

public void addSubCellSafe(EdifCellInstance cellInstance)
                    throws EdifNameConflictException
Throws:
EdifNameConflictException

addSubCellUniqueName

public java.lang.String addSubCellUniqueName(EdifCellInstance cellInstance)

cellInstanceIterator

public java.util.Iterator cellInstanceIterator()
Returns an Iterator of this cell's cellInstances.

Returns:
An Iterator Object of all the EdifCellInstances contained within this EdifCell Object

contains

public boolean contains(EdifCellInstance contain)
Checks to see if the passed-in EdifCellInstance is already contained within this EdifCell. Equality is done using ==.

Parameters:
contain - The EdifCellInstance to compare against the EdifCellInstance Objects contained within this EdifCell Object to check to see if it already exists in this EdifCell
Returns:
True if the passed-in EdifCellInstance is already contained within this EdifCell Object

contains

public boolean contains(EdifPort contain)
Checks to see if the passed-in EdifPort is already contained within this EdifCell. Equality is done using ==.

Parameters:
contain - The EdifPort to compare against the EdifPort Objects contained within this EdifCell Object to check to see if it already exists in this EdifCell
Returns:
True if the passed-in EdifPort is already contained within this EdifCell Object

contains

public boolean contains(EdifNet contain)
Checks to see if the passed-in EdifNet is already contained within this EdifCell. Equality is done using ==.

Parameters:
contain - The EdifNet to compare against the EdifNet Objects contained within this EdifCell Object to check to see if it already exists in this EdifCell
Returns:
True if the passed-in EdifNet is already contained within this EdifCell Object

copy

public EdifCell copy()
Returns a deep copy of this EdifCell Object, copying all sub-objects using the 'new' statement except String Objects, having all new objects using the new EdifCell as parent.

Returns:
An EdifCell that is a copy of this one, having all new objects pointing to this one as parent

getDanglingNets

public java.util.Collection getDanglingNets(boolean inputNoOutput,
                                            boolean outputsOnly)
Dangling net is not connected to any outputs. Outter ports labeled IN and inner ports labeled OUT are inputs. Outter ports labeled OUT and inner ports labeled IN are outputs. Each net must have at least one output and one input.

Note: By default (false and false gets passed to this method) this method will only return nets with only inputs or nets with only outputs. Also, if inputNoOutput is true then the value of outputsOnly gets over-ridden.

Parameters:
inputNoOutput - Only returns nets with input(s) and no outputs, if true
outputsOnly - If true, this method will only return nets with outputs and no inputs
Returns:
A Collection of EdifNet Objects that have no outputs (they are dangling)

getDanglingNets

public java.util.Collection getDanglingNets()
Dangling net is not connected to any outputs. Outter ports labeled IN and inner ports labeled OUT are inputs. Outter ports labeled OUT and inner ports labeled IN are outputs. Each net must have at least one output and one input.

Note: By default this method will only return nets with only inputs or nets with only outputs.

Returns:
A Collection of EdifNet Objects that have no outputs (they are dangling)
See Also:
getDanglingNets(boolean,boolean)

deleteNet

public boolean deleteNet(EdifNet delete)
Deletes the given net from this EdifCell.

Parameters:
delete - The EdifNet to delete
Returns:
True if it was deleted, false otherwise

deletePort

public void deletePort(EdifPort delete)
Deletes the given port from this EdifCell.

Parameters:
delete - The EdifPort to delete

deleteSubCell

public boolean deleteSubCell(EdifCellInstance cellInstance,
                             boolean removeRefsInNets)
Removes an EdifCellInstance object from the current EdifCell object. Returns true if the instance was found and successfully removed, otherwise false.

Parameters:
cellInstance - EdifCellInstance object to remove from the current EdifCell object.
removeRefsInNets - Deletes all references to this instance in all the nets within this EdifCell, if true
Returns:
boolean indicating whether the EdifCellInstance object was successfully found and removed

deleteSubCell

public boolean deleteSubCell(EdifCellInstance cellInstance)

equalsInterface

public boolean equalsInterface(EdifCell cell)
Overloaded method that defaults to not comparing by possible bus.

Parameters:
cell - The cell used for the inteface comparison
Returns:
True if the interfaces are equal

equalsName

public boolean equalsName(EdifCell cell)
This method will determine if the name of this EdifCell is the same as the name of the passed in EdifCell.

Parameters:
cell - Cell to compare
Returns:
Returns true if the names are the same.

findCellInstancesOf

public java.util.Collection findCellInstancesOf(EdifCell type)
This function returns all EdifCellInstances within this EdifCell object that reference a given cell in this library (i.e. the same type as the given cell). If no EdifCellInstances of this type are found, this method will return null.

Parameters:
type - The EdifCell Object to find references to within this EdifCell
Returns:
A Collection of EdifCellInstances contained within this EdifCell that reference the passed-in EdifCell

getCellInstance

public EdifCellInstance getCellInstance(java.lang.String name)
Returns the EdifCellInstance contained within this EdifCell Object that matches the passed-in name.

Parameters:
name - The String used to match the returned EdifCellInstance
Returns:
The EdifCellInstance Object whose name matches the passed-in name

getInstancePortNet

public EdifNet getInstancePortNet(EdifCellInstance instance,
                                  EdifPort port)
This method will return the EdifNet that is connected to the given port on the given instance.

Parameters:
instance - The EdifCellInstance Object that one of the returned EdifNet Object's EdifPortRef Objects connects to
port - The EdifPort Object that one of the returned EdifNet Object's EdifPortRef Objects refers to
Returns:
An EdifNet Object that has an EdifPortRef Object that referse to the passed-in EdifPort Object, and connects to the passed-in EdifCellInstance Object

getInterface

public EdifCellInterface getInterface()
Returns the EdifCellInterface of this EdifCell.

Returns:
An EdifCellInterface Object that defines the port interface of this EdifCell

getNet

public EdifNet getNet(java.lang.String name)
Returns the net that maps to the given name.

Parameters:
name - The key name of the EdifNet to retrieve
Returns:
An EdifNet Object mapped to the given name

getInstance

public EdifCellInstance getInstance(java.lang.String name)
Returns the EdifCellInstance Object that matches the passed-in name, or null if not found.

Parameters:
name - The name of the EdifCellInstance to return
Returns:
The EdifCellInstance Object that matches the passed-in name or null

getHierarchicalPrimitiveList

public java.util.Collection getHierarchicalPrimitiveList()
Returns a Collection of List objects for each primitive instance within the hierarchy of this cell. Leaf cells will return a null Collection.

Returns:
A Collection of List Objects of EdifCellInstance Objects that are in order of hierarchy down to primitives

getLibrary

public EdifLibrary getLibrary()
Returns the EdifLibrary object to which the current EdifCell object belongs.

Returns:
EdifLibrary object to which the current EdifCell object belongs

getNetList

public java.util.Collection getNetList()
Returns a List containing all of the EdifNet objects which this EdifCell object currently owns.

Returns:
A Collection containing the EdifNet objects owned by the current EdifCell object

getMatchingPort

public EdifPort getMatchingPort(EdifPort port)
Returns the EdifPort object which defines a port on the current EdifCell object and corresponds to the given name. If no such EdifPort is found, a null object is returned.

Parameters:
port - The EdifPort to find a match for within this EdifCellInterface
Returns:
The EdifPort corresponding to the passed-in port

getPort

public EdifPort getPort(java.lang.String name)
Returns the EdifPort object which defines a port on the current EdifCell object and corresponds to the given name. If no such EdifPort is found, a null object is returned.

Parameters:
name - A string indicating the name of the EdifPort object desired to be found
Returns:
The EdifPort corresponding to the given name

getInputPorts

public java.util.Collection getInputPorts()
Returns a Collection Object of the input ports


getOutputPorts

public java.util.Collection getOutputPorts()
Returns a Collection Object of the output ports


getPortList

public java.util.Collection getPortList()
Returns a Collection containing all of the EdifPort objects currently associated with this EdifCell object.

Returns:
Collection containing the EdifPort objects associated with the current EdifCell object

getSortedNetList

public java.util.Collection getSortedNetList()
Returns a sorted Collection containing all of the EdifNet objects currently by this EdifCell object. The objects in the Collection are sorted by their names.

Returns:
Sorted Collection containing the EdifNet objects owned by the current EdifCell object

getSortedPortList

public java.util.Collection getSortedPortList()
Returns a sorted Collection containing all of the EdifPort objects currently associated with this EdifCell object. The objects in the Collection are sorted by their names.

Returns:
Sorted Collection containing the EdifPort objects associated with the current EdifCell object

getSortedPropertyList

public java.util.TreeMap getSortedPropertyList()
Returns a TreeMap of all Property objects corresponding to properties of the current EdifCell object.

Returns:
TreeMap containing all properties of the EdifCell object in the form of Property objects

getSortedSubCellList

public java.util.Collection getSortedSubCellList()
Returns a Collection of EdifCellInstance objects owned and instantiated by the current EdifCell object. The EdifCellInstance objects are sorted based on their names.

Returns:
sorted Collection containing all EdifCellInstance objects owned by this EdifCell

getSubCellList

public java.util.Collection getSubCellList()
Returns a Collection of EdifCellInstance objects owned and instantiated by the current EdifCell object.

Returns:
A Collection containing all EdifCellInstance objects owned by this EdifCell

getInstancedCellTypes

public java.util.Collection getInstancedCellTypes()
Returns all unique EdifCell objects that are instanced within this EdifCell object. This method will iterate through all of the EdifCellInstances and collect each unique EdifCell object that is instanced.

Returns:
A Collection of EdifCell Objects

getInnerCells

public java.util.Collection getInnerCells()
Returns a Collection of all EdifCells instanced by the EdifCellInstances contained within this EdifCell Object.

Returns:
A Collection of all the different EdifCell "types" instanced as sub-cells within the current EdifCell

getUnconnectedInstances

public java.util.Collection getUnconnectedInstances()
Returns a Collection of EdifCellInstance objects that are not connected to any EdifNet in the Cell.


getPortRefs

public java.util.Collection getPortRefs()
Returns a collection of all EdifPortRef objects owned by this cell. This method will iterate over each Net in the Cell and include all EdifPortRef objects owned by each Net.


isLeafCell

public boolean isLeafCell()
Returns true if the current EdifCell object has no children in its EdifCellInstance list; otherwise, returns false.

Returns:
boolean indicating if this EdifCell is a leaf cell

isPrimitive

public boolean isPrimitive()
Returns whether or not this is a known primitive cell. Note that this is different than a "black box". A black box is a an empty EdifCell whose contents have not been defined.

Returns:
True if this cell is a primitive

modifyCellType

public void modifyCellType(EdifCell oldType,
                           EdifCell newType)

netListIterator

public java.util.Iterator netListIterator()
Returns an iterator of this cell's nets.

Returns:
An Iterator Object of all the EdifNets contained in this EdifCell

setLibrary

public void setLibrary(EdifLibrary library)
Sets the library for this EdifCell object if this EdifCell object is contained within the passed-in library. lib.addCell calls this method after adding the cell to the library.

Parameters:
library - EdifLibrary object to set as the library of the current EdifCell

setPrimitive

public void setPrimitive()
Sets this cell to primitive.


toEdif

public void toEdif(EdifPrintWriter epw)
Writes the EDIF representation of this EdifCell object to the EdifPrintWriter passed as a parameter.

Specified by:
toEdif in interface EdifOut
Parameters:
epw - EdifPrintWriter to which EDIF will be written

tagAsPrimitive

public void tagAsPrimitive(EdifLibrary primitives)
Tags this cell as primitive if it matches a cell in the passed-in library.

Parameters:
primitives - library of primitives that will be compared to this cell.

toString

public java.lang.String toString()
Returns a String representation of this object.

Overrides:
toString in class java.lang.Object
Returns:
A String representing this Object's name and port interface

trimToSize

public void trimToSize()
This method will trim the size of all collections contained by this class. Trimming each collection will reduce the memory consumed by this object by getting rid of all unused collection refernces. This method will also call trimToSize on each of the EdifNet objects in the _netList collection.

Specified by:
trimToSize in interface Trimable

getUnconnectedPorts

public java.util.Map getUnconnectedPorts()
Returns a map whose key is an EdifCellInstance (EdifCell key refers to this cell), and whose value is a Collection of unconnected ports. Every key will have a list of ports with size > 0. Otherwise it wouldn't appear in the map.

Returns:
A Map Object of EdifCellInstances to a Collection of EdifPorts, where each EdifPort is unconnected