SoSTest.mesa
Copyright (C) 1985, 1986 by Xerox Corporation. All rights reserved.
Written by gbb September 20, 1985 11:52:24 am PDT
gbb June 16, 1986 1:30:49 pm PDT
Interface to ChipNDale.
DIRECTORY
CD USING [Design, Instance, InstanceList, Object],
CDCommandOps USING [CallWithResource],
CDMenus USING [CreateEntry],
CDOps USING [InstList],
CDSequencer USING [Command, ImplementCommand],
Core USING [CellType, Wire],
PrincOpsUtils USING [],
Process USING [priorityBackground, SetPriority],
Rope USING [Cat, ROPE],
Sinix USING [Extract, Mode],
SinixCMos USING [extractAMode, extractBMode],
SinixNMos USING [extractMode],
SoS USING [CheckDesignRules],
TerminalIO USING [WriteRope];
SoSTest: CEDAR PROGRAM
IMPORTS CDCommandOps, CDMenus, CDOps, CDSequencer, Process, Rope, Sinix, SinixCMos, SinixNMos, SoS, TerminalIO
~
BEGIN
Execute:
PROC [comm: CDSequencer.Command] ~
BEGIN
Called by ChipNDale upon activation of the command.
abort: REF BOOL ← NEW [BOOL←FALSE];
ExtractAndCheck:
PROC [comm: CDSequencer.Command] ~
BEGIN
Protected procedure.
tech: Sinix.Mode;
SELECT comm.design.technology.key
FROM
$cmos => tech ← SinixCMos.extractAMode;
$cmosB => tech ← SinixCMos.extractBMode;
$nmos => tech ← SinixNMos.extractMode;
ENDCASE =>
BEGIN
TerminalIO.WriteRope [Rope.Cat ["The technology ", comm.design.technology.name, " is not implemented in Sinix or SoS.\n"]];
RETURN
END;
FOR all:
CD.InstanceList ← CDOps.InstList [comm.design], all.rest
WHILE all #
NIL
DO
IF all.first.selected
THEN
BEGIN
TRUSTED {Process.SetPriority [Process.priorityBackground]};
WITH
Sinix.Extract [obj: all.first.ob, mode: tech].result
SELECT FROM
coreCell: Core.CellType =>
BEGIN
[] ← SoS.CheckDesignRules [cell: coreCell,
design: NIL,
abortFlag: abort,
verbose: FALSE,
shy: TRUE,
cdObjKey: NIL,
cdInstKey: tech.instanceProp,
cdInstListKey: tech.wireGeometryProp];
END;
w: Core.Wire => NULL;
ENDCASE => NULL
END -- if selected
ENDLOOP
END; -- ExtractAndCheck
TerminalIO.WriteRope ["SoS.\n"];
[] ← CDCommandOps.CallWithResource [ExtractAndCheck, comm, $SoS, abort];
TerminalIO.WriteRope ["SoS test done.\n"]
END; -- Execute
CDSequencer.ImplementCommand [key: $SoSSel1, proc: Execute, queue: doQueue];
CDMenus.CreateEntry [menu: $ProgramMenu, entry: "SoS paranoia", key: $SoSSel1];
TerminalIO.WriteRope ["SoS paranoia test package loaded.\n"]
END.
gbb March 25, 1986 10:39:05 am PST
Changed labels of menu entries.
gbb March 27, 1986 3:13:47 pm PST
Added cosmetics to make it look more like Spinifex.
changes to: DIRECTORY, IMPORTS, Execute, ExtractAndCheck (local of Execute), UpdateDRVDirectory, PrintDRVSummary, VerifyRect
gbb March 30, 1986 3:17:31 pm PST
Added cosmetics to make it look better than Spinifex.
changes to: ListDRV (local of List), InvalidateDRV
gbb June 9, 1986 6:09:27 pm PDT
Tracked addition of a parameter in the call of SoS
changes to: ExtractAndCheck (local of Execute): new parameter technology (is not used).