com.sun.electric.tool.drc
Class MTDRCLayoutTool

java.lang.Object
  extended by com.sun.electric.tool.Job
      extended by com.sun.electric.tool.MultiTaskJob<Layer,MTDRCTool.MTDRCResult,MTDRCTool.MTDRCResult>
          extended by com.sun.electric.tool.drc.MTDRCTool
              extended by com.sun.electric.tool.drc.MTDRCLayoutTool
All Implemented Interfaces:
java.io.Serializable

public class MTDRCLayoutTool
extends MTDRCTool

This is the "quick" DRC which does full hierarchical examination of the circuit.

The "quick" DRC works as follows: It first examines every primitive node and arc in the cell For each layer on these objects, it examines everything surrounding it, even in subcells R-trees are used to limit search. Where cell instances are found, the contents are examined recursively It next examines every cell instance in the cell All other instances within the surrounding area are considered When another instance is found, the two instances are examined for interaction A cache is kept of instance pairs in specified configurations to speed-up arrays All objects in the other instance that are inside the bounds of the first are considered The other instance is hierarchically examined to locate primitives in the area of consideration For each layer on each primitive object found in the other instance, Examine the contents of the first instance for interactions about that layer

Since Electric understands connectivity, it uses this information to determine whether two layers are connected or not. However, if such global connectivity is propagated in the standard Electric way (placing numbers on exports, descending into the cell, and pulling the numbers onto local networks) then it is not possible to decompose the DRC for multiple processors, since two different processors may want to write global network information on the same local networks at once.

To solve this problem, the "quick" DRC determines how many instances of each cell exist. For every network in every cell, an array is built that is as large as the number of instances of that cell. This array contains the global network number for that each instance of the cell. The algorithm for building these arrays is quick (1 second for a million-transistor chip) and the memory requirement is not excessive (8 megabytes for a million-transistor chip). It uses the CheckInst and CheckProto objects.

Author:
Steve Rubin, Gilda Garreton
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class com.sun.electric.tool.drc.MTDRCTool
MTDRCTool.MTDRCResult
 
Nested classes/interfaces inherited from class com.sun.electric.tool.Job
Job.Inform, Job.Key, Job.Priority, Job.Type
 
Field Summary
 
Fields inherited from class com.sun.electric.tool.drc.MTDRCTool
cellLayersCon, dp, globalStartTime, printLog, rules, topCell
 
Fields inherited from class com.sun.electric.tool.Job
endTime, finished, LOCALDEBUGFLAG, MIN_NUM_SECONDS, reportExecution, startTime
 
Constructor Summary
MTDRCLayoutTool(DRC.DRCPreferences dp, Cell c, boolean ignoreExtensionR, Consumer<MTDRCTool.MTDRCResult> consumer)
           
 
Method Summary
 MTDRCTool.MTDRCResult runTaskInternal(Layer taskKey)
           
 
Methods inherited from class com.sun.electric.tool.drc.MTDRCTool
mergeTaskResults, prepareTasks, runTask
 
Methods inherited from class com.sun.electric.tool.MultiTaskJob
doIt, startTask
 
Methods inherited from class com.sun.electric.tool.Job
abort, checkAbort, fieldVariableChanged, getAllJobs, getDatabase, getDebug, getDeleteWhenDone, getEditingPreferences, getEnvironment, getExtendedUserInterface, getInfo, getInform, getKey, getRunningJob, getScheduledToAbort, getStatus, getTechPool, getTool, getUserInterface, initJobManager, inServerThread, isClientThread, isFinished, pipeClient, pipeServer, remove, setCurrentLibraryInJob, setDebug, setProgress, setReportExecutionFlag, socketClient, startJob, startJob, startJobOnMyResult, terminateFail, terminateIt, terminateOK, toString, updateIncrementalDRCErrors, updateNetworkErrors
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MTDRCLayoutTool

public MTDRCLayoutTool(DRC.DRCPreferences dp,
                       Cell c,
                       boolean ignoreExtensionR,
                       Consumer<MTDRCTool.MTDRCResult> consumer)
Method Detail

runTaskInternal

public MTDRCTool.MTDRCResult runTaskInternal(Layer taskKey)