com.sun.electric.tool.logicaleffort
Class LENetlister1

java.lang.Object
  extended by com.sun.electric.database.hierarchy.HierarchyEnumerator.Visitor
      extended by com.sun.electric.tool.logicaleffort.LENetlister
          extended by com.sun.electric.tool.logicaleffort.LENetlister1

public class LENetlister1
extends LENetlister

Creates a logical effort netlist to be sized by LESizer. This is so the LESizer is independent of Electric's Database, and can match George Chen's C++ version being developed for PNP.

Author:
gainsley

Nested Class Summary
 class LENetlister1.LECellInfo
          Logical Effort Cell Info class.
 
Nested classes/interfaces inherited from class com.sun.electric.tool.logicaleffort.LENetlister
LENetlister.NetlisterConstants
 
Field Summary
protected  LENetlister.NetlisterConstants constants
          Netlister constants
 
Fields inherited from class com.sun.electric.tool.logicaleffort.LENetlister
ATTR_alpha, ATTR_diffn, ATTR_diffp, ATTR_epsilon, ATTR_gate_cap, ATTR_keeper_ratio, ATTR_L, ATTR_le, ATTR_LEGATE, ATTR_LEIGNORE, ATTR_LEKEEPER, ATTR_LEPARALLGRP, ATTR_LESETTINGS, ATTR_LEWIRE, ATTR_LEWIRECAP, ATTR_max_iter, ATTR_su, ATTR_wire_ratio
 
Constructor Summary
LENetlister1(Job job, Technology layoutTech)
          Creates a new instance of LENetlister
 
Method Summary
protected  Instance addInstance(java.lang.String name, Instance.Type type, float leSU, float leX, java.util.ArrayList<Pin> pins, Nodable no)
          Add new instance to design
 void done()
          Call to stop or interrupt netlisting
 void doneVisitNodeInst(Nodable ni, HierarchyEnumerator.CellInfo info)
           
 boolean enterCell(HierarchyEnumerator.CellInfo info)
          Enter cell initializes the LECellInfo.
 void exitCell(HierarchyEnumerator.CellInfo info)
          Nothing to do for exitCell
protected  java.util.Map<java.lang.String,Instance> getAllInstances()
           
protected  java.util.HashMap<java.lang.String,Net> getAllNets()
           
 LENetlister.NetlisterConstants getConstants()
          Get the settings used for sizing
 ErrorLogger getErrorLogger()
          Get the error logger
protected  float getKeeperRatio()
           
protected  int getNumGates()
          return number of gates sized
protected  LESizer getSizer()
           
 void getSizes(java.util.List<java.lang.Float> sizes, java.util.List<java.lang.String> varNames, java.util.List<NodeInst> nodes, java.util.List<VarContext> contexts)
          Get the sizes and associated variable names to store on the top level cell
 float getTotalLESize()
          Get the total size of all gates sized using Logical Effort
 float getTotalSize(Instance.Type type)
          return total size of all instances of the specified type if type is null, uses all types
 boolean netlist(Cell cell, VarContext context, boolean useCaching)
          Call to start netlisting.
 HierarchyEnumerator.CellInfo newCellInfo()
          Override the default Cell info to pass along logical effort specific information
 void nullErrorLogger()
          Destroy the error logger
 boolean printResults(Nodable no, VarContext context)
          print the results for the Nodable
 void printStatistics()
           
 boolean size(LESizer.Alg algorithm)
          Size the netlist.
static void test1()
           
 boolean visitNodeInst(Nodable ni, HierarchyEnumerator.CellInfo info)
          Visit NodeInst creates a new Logical Effort instance from the parameters found on the Nodable, if that Nodable is an LEGATE.
 
Methods inherited from class com.sun.electric.tool.logicaleffort.LENetlister
getSettings, isSettingsConflict, saveSettings
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

constants

protected LENetlister.NetlisterConstants constants
Netlister constants

Constructor Detail

LENetlister1

public LENetlister1(Job job,
                    Technology layoutTech)
Creates a new instance of LENetlister

Method Detail

netlist

public boolean netlist(Cell cell,
                       VarContext context,
                       boolean useCaching)
Description copied from class: LENetlister
Call to start netlisting. Returns false if failed

Specified by:
netlist in class LENetlister

size

public boolean size(LESizer.Alg algorithm)
Size the netlist.

Specified by:
size in class LENetlister
Returns:
true on success, false otherwise.

getSizes

public void getSizes(java.util.List<java.lang.Float> sizes,
                     java.util.List<java.lang.String> varNames,
                     java.util.List<NodeInst> nodes,
                     java.util.List<VarContext> contexts)
Description copied from class: LENetlister
Get the sizes and associated variable names to store on the top level cell

Specified by:
getSizes in class LENetlister

done

public void done()
Description copied from class: LENetlister
Call to stop or interrupt netlisting

Specified by:
done in class LENetlister

getErrorLogger

public ErrorLogger getErrorLogger()
Description copied from class: LENetlister
Get the error logger

Specified by:
getErrorLogger in class LENetlister

nullErrorLogger

public void nullErrorLogger()
Description copied from class: LENetlister
Destroy the error logger

Specified by:
nullErrorLogger in class LENetlister

getConstants

public LENetlister.NetlisterConstants getConstants()
Description copied from class: LENetlister
Get the settings used for sizing

Specified by:
getConstants in class LENetlister

addInstance

protected Instance addInstance(java.lang.String name,
                               Instance.Type type,
                               float leSU,
                               float leX,
                               java.util.ArrayList<Pin> pins,
                               Nodable no)
Add new instance to design

Parameters:
name - name of the instance param leGate true if this is an LEGate
leX - size
pins - list of pins on instance
Returns:
the new instance added, null if error

getAllInstances

protected java.util.Map<java.lang.String,Instance> getAllInstances()

getAllNets

protected java.util.HashMap<java.lang.String,Net> getAllNets()

getNumGates

protected int getNumGates()
return number of gates sized


getSizer

protected LESizer getSizer()

getKeeperRatio

protected float getKeeperRatio()

newCellInfo

public HierarchyEnumerator.CellInfo newCellInfo()
Override the default Cell info to pass along logical effort specific information

Overrides:
newCellInfo in class HierarchyEnumerator.Visitor
Returns:
a LECellInfo

enterCell

public boolean enterCell(HierarchyEnumerator.CellInfo info)
Enter cell initializes the LECellInfo.

Specified by:
enterCell in class HierarchyEnumerator.Visitor
Parameters:
info - the LECellInfo
Returns:
true to process the cell, false to ignore.

visitNodeInst

public boolean visitNodeInst(Nodable ni,
                             HierarchyEnumerator.CellInfo info)
Visit NodeInst creates a new Logical Effort instance from the parameters found on the Nodable, if that Nodable is an LEGATE. It also creates instances for wire models (LEWIREs).

Specified by:
visitNodeInst in class HierarchyEnumerator.Visitor
Parameters:
ni - the Nodable being visited
info - the cell info
Returns:
true to push down into the Nodable, false to continue.

doneVisitNodeInst

public void doneVisitNodeInst(Nodable ni,
                              HierarchyEnumerator.CellInfo info)

exitCell

public void exitCell(HierarchyEnumerator.CellInfo info)
Nothing to do for exitCell

Specified by:
exitCell in class HierarchyEnumerator.Visitor
Parameters:
info - information about the Cell instance being enumerated

printStatistics

public void printStatistics()
Specified by:
printStatistics in class LENetlister

getTotalLESize

public float getTotalLESize()
Description copied from class: LENetlister
Get the total size of all gates sized using Logical Effort

Specified by:
getTotalLESize in class LENetlister

getTotalSize

public float getTotalSize(Instance.Type type)
return total size of all instances of the specified type if type is null, uses all types


printResults

public boolean printResults(Nodable no,
                            VarContext context)
Description copied from class: LENetlister
print the results for the Nodable

Specified by:
printResults in class LENetlister
Returns:
true if successful, false otherwise

test1

public static void test1()