<> <> <> <> <> <> DIRECTORY CD USING [Design, Instance, InstanceList, Object], CDCommandOps USING [CallWithResource], CDMenus USING [CreateEntry], CDOps USING [InstList], CDSequencer USING [Command, ImplementCommand], Core USING [CellType, Wire], CoreGeometry, PrincOpsUtils USING [], Process USING [priorityBackground, SetPriority], Rope USING [Cat, ROPE], Sinix USING [Extract, Mode], SinixOps USING [GetExtractMode], SoS USING [CheckDesignRules], TerminalIO USING [WriteRope]; SoSTest: CEDAR PROGRAM IMPORTS CDCommandOps, CDMenus, CDOps, CDSequencer, Process, Rope, Sinix, SinixOps, SoS, TerminalIO ~ BEGIN Execute: PROC [comm: CDSequencer.Command] ~ BEGIN <> abort: REF BOOL _ NEW [BOOL_FALSE]; ExtractAndCheck: PROC [comm: CDSequencer.Command] ~ BEGIN <> tech: Sinix.Mode _ SinixOps.GetExtractMode[comm.design.technology]; IF tech=NIL THEN 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, decoration: tech.decoration]; 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. <> <> <> <> <> <> <> <> <> <> <> <<>>