com.sun.electric.tool.drc
Class MTDRCLayoutTool
java.lang.Object
com.sun.electric.tool.Job
com.sun.electric.tool.MultiTaskJob<Layer,MTDRCTool.MTDRCResult,MTDRCTool.MTDRCResult>
com.sun.electric.tool.drc.MTDRCTool
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
Methods inherited from class com.sun.electric.tool.Job |
abort, acquireExamineLock, checkAbort, fieldVariableChanged, getAllJobs, getDatabase, getDebug, getDeleteWhenDone, getDisplay, getExtendedUserInterface, getInfo, getNumThreads, getRunMode, getRunningJob, getScheduledToAbort, getStatus, getUserInterface, initJobManager, invokeExamineLater, isFinished, releaseExamineLock, remove, setDebug, setProgress, setReportExecutionFlag, setThreadMode, startJob, startJob, startJobOnMyResult, terminateFail, terminateIt, terminateOK, threadDatabase, toString, updateIncrementalDRCErrors, updateNetworkErrors, wantUpdateGui |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
MTDRCLayoutTool
public MTDRCLayoutTool(Cell c,
boolean ignoreExtensionR,
Consumer<MTDRCTool.MTDRCResult> consumer)
runTaskInternal
public MTDRCTool.MTDRCResult runTaskInternal(Layer taskKey)