FILE: Mark.mesa
Last edited by Ousterhout, August 9, 1983 1:55 pm
Christian LeCocq April 11, 1986 1:55:38 pm PST
This file defines several routines used by Crystal to mark
node characteristics such as inputs, outputs, and fixed values.
Mark: CEDAR DEFINITIONS =
BEGIN
InputCmd: Globals.CmdProc;
Processes the "input" command. Each argument is the name of a node to be marked as an input.
OutputCmd: Globals.CmdProc;
Processes the "output" command. Each argument is the name of a node to be marked as an output.
BusCmd: Globals.CmdProc;
Processes the "bus" command. Each argument is the name of a node to be marked as a bus (meaning it is highly capacitive).
PrechargedCmd: Globals.CmdProc;
Processes the "precharged" command. Each argument is the name of a node to be marked as precharged.
WatchCmd: Globals.CmdProc;
Processes the "watch" command. Each argument is the name of a node to be marked as watched (watched nodes have their worst-case delays recorded in a separate list).
ResCmd: Globals.CmdProc;
First argument gives resistance value. Each successive argument is a node name, whose internal resistance is changed to the given value.
CapCmd: Globals.CmdProc;
First argument gives capacitance value. Each successive argument is a node name, whose internal resistance is changed to the given value.
SetNodeValue:
PROC[node: Globals.Node, value:
INT, propAnyway:
BOOLEAN ←
FALSE, globalVars: Globals.GlobalVars];
Forces node to have the given value, and uses a simple logic simulator to propagate that information through the circuit as much as possible. If propAnyway is TRUE, then the simulation is invoked even if the node already had this value.
SetCmd: Globals.CmdProc;
First argument gives 0/1 value. Each successive argument is a node name. Each of the nodes is set to the given value.
MarkDynamic:
PROC[globalVars: Globals.GlobalVars];
This command sets the dynamic flags in all nodes that aren't input nodes, aren't forced to a particular value, and for which all connected transistors are turned off.
Stats:
PROC[];
Prints out various statistics gathered during simulation.
SeeSettings:
BOOLEAN;
TRUE means nodes with character names (as opposed to numeric) are printed out whenever there values become fixed during simulation.
SeeAllSettings:
BOOLEAN;
Like SeeSettings, except ALL nodes get printed, independent of name.
SeeDynamic:
BOOLEAN;
TRUE means node names get printed out automatically for each node discovered to be a dynamic memory node during the "markdynamic" command.
END.