DrcRestartImpl.Mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Written by gbb April 23, 1987 4:56:29 pm PDT
gbb April 22, 1987 6:47:30 pm PDT
Interface to ChipNDale.
DIRECTORY
Commander USING [CommandProc, Register],
Core USING [Wire],
CoreIO USING [RestoreCellType],
CoreOps USING [CopyWire, GetShortWireName, SetShortWireName],
CStitching USING [DumpCache],
DesignRules USING [GetRuleSet, Rules],
Drc USING [CheckDesignRules, CoreCell, Tech, Wire],
DrcCMOSB USING [cMosBcompleteKey, NewTechnology],
IO USING [int, PutFR1],
Rope USING [IsEmpty, ROPE],
Sinix USING [Mode],
SinixOps USING [GetExtractMode];
DrcRestartImpl: CEDAR PROGRAM
IMPORTS Commander, CoreIO, CoreOps, CStitching, DesignRules, Drc, DrcCMOSB, IO, Rope, SinixOps
~
BEGIN
OPEN DrcCMOSB;
ROPE: TYPE ~ Rope.ROPE;
lastCore: Drc.CoreCell ← NIL;
RedoDrc: Commander.CommandProc ~
BEGIN
[cmd: Commander.Handle] RETURNS [result: REF ANY ← NIL, msg: ROPE ← NIL]
lastCore ← CoreIO.RestoreCellType [fileName: "[]<>Temp>DRC>Genista.Core"];
IF (lastCore = NIL) THEN msg ← "There is no Core data structure"
ELSE
BEGIN
violations: CARDINAL ← 0;
rules: DesignRules.Rules ← DesignRules.GetRuleSet [$VTI];
fakeActual: Drc.Wire ~ CoreOps.CopyWire [lastCore.public];
techD: Drc.Tech ← DrcCMOSB.NewTechnology [cMosBcompleteKey, rules];
techE: Sinix.Mode ← SinixOps.GetExtractMode [$cmosB];
lastCore ← lastCore.class.recast [lastCore];
FOR i:
NAT
IN [0 .. fakeActual.size)
DO
givenName: ROPE ~ CoreOps.GetShortWireName [fakeActual[i]];
fakeActual[i] ← CoreOps.SetShortWireName [fakeActual[i], IF givenName.IsEmpty THEN IO.PutFR1 ["External", IO.int [i]] ELSE givenName]
ENDLOOP;
[] ← Drc.CheckDesignRules [cell: lastCore, external: fakeActual, tech: techD, layout: techE.decoration, stopFlag: NIL];
CStitching.DumpCache []
END
END; -- RedoDrc
Commander.Register [key: "DrcRedo", proc: RedoDrc, doc: "Runs Genista on []<>Temp>DRC>Genista.Core"]
END.