public class MTDRCLayoutTool extends MTDRCTool
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.
MTDRCTool.MTDRCResult
Job.Inform, Job.Key, Job.Priority, Job.Type
cellLayersCon, dp, globalStartTime, printLog, rules, topCell
endTime, finished, LOCALDEBUGFLAG, MIN_NUM_SECONDS, reportExecution, startTime
Constructor and Description |
---|
MTDRCLayoutTool(DRC.DRCPreferences dp,
Cell c,
boolean ignoreExtensionR,
Consumer<MTDRCTool.MTDRCResult> consumer) |
Modifier and Type | Method and Description |
---|---|
MTDRCTool.MTDRCResult |
runTaskInternal(Layer taskKey) |
mergeTaskResults, prepareTasks, runTask
doIt, startTask
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
public MTDRCLayoutTool(DRC.DRCPreferences dp, Cell c, boolean ignoreExtensionR, Consumer<MTDRCTool.MTDRCResult> consumer)
public MTDRCTool.MTDRCResult runTaskInternal(Layer taskKey)