--File: BryansPlacerDoc.tioga
Last Edited by: CSChow, December 11, 1984 7:38:49 pm PST
Documentation for Placer on [Indigo]<AutoLayout>5.2>top>
This documentation describes how to start up and use a Placer on your machine. The procedure is:
(A) Start up
(i) Bringover [Indigo]<AutoLayout>%.2>top>Phoenix1.df
(ii) @PlacerRun
(iii) Now you should have a "Phoenix" tool. Open it to get a viewer.
(B) Input
At present there are two ways of getting input (of some toy examples) into the system. They are:
(i) Click `GetInput' in MainViewer. Enter the file name of o description file (.desc). To construct channels, click `DefineChannel'.
(ii) (If you have created a checkpoint) Click `RollBack' and the system will prompt you for the name of file containing the checkpoint.
(C) Output
At present the only means of ouput is to create a checkpoint which can be rollback to later. Click 'CheckPoint' and type in the name of the file.
(D) What the system does
Currently the system only support hacking and does not allow the designer to do any real work because:
(a) I/O routines to actual layout design tools have not been implemented.
(b) The auto-placement algorithms have not been implemented.
But the following are provided:
(i) Access to the topological operations. Click `EditOps' to list operations accessible from MainViewer. The following editing operations are available:
BrkX - Break cross - see TopEditOps.BreakCross
Parameters:
1: reference channel, the channel that specifies the break position
2: channel to break at the reference
Operation:
A cross intersection is decomposed into two T intersections; inverse of FomX
Restrictions:
channel to break must cross reference channel
FomX - Form cross - see TopEditOps.FormCross
Parameters:
1: channel 1
2: channel 2
Operation:
two T intersections are combined into a cross intersection; inverse of BrkX
Restrictions:
channel1 and channel 2 must intersect a common channel with T intersections
RemZ - Remove Z - see TopEditOps.RemoveZ
Parameters:
1: z spine, the channel that forms the body of the Z
Operation:
Remove a Z shaped channel configuration to form a straight channel, inverse of FomZ
Restrictions:
The z spine must be the body of a Z
FomZ - Form Z - see TopEditOps.FormZ
Parameters:
1: component 1
2: component 2
3: pos or neg, the direction in which to form the Z, pos = ?, neg = ?, *** chow: why is this used?
Operation:
Form a Z shaped channel configuration from a straight channel, inverse of RemZ
Restrictions:
component 1 and component 2 must have appropriate negative corners and the Z direction must be correct
** LtoT - convert L intersection to T intersection - see TopEditOps.LtoT
Parameters:
1: channel
2: end of channel which to convert, pos = ?, neg = ?
Operation:
convert L intersection to T intersection at the specified end, inverse of TtoL
Restrictions:
interrupts if not possible
** TtoL - convert T intersection to L intersection - see TopEditOps.BreakCross
Parameters:
1: component, a component that has a negative corner
2: channel
3: L type, pos = ?, neg = ?
Operation:
convert L intersection to T intersection at the specified end, inverse of LtoT
Restrictions:
??
** FlxKne - Flex knee - see TopEditOps.FlexKnee
Parameters:
1: leg channel,
2: floor channel,
3: end, pos = ?, neg = ?
Operation:
Flex knee, inverse of Extend knee
Restrictions:
??
** ExtKne - Extend knee - see TopEditOps.ExtendKnee
Parameters:
1: shin channel
Operation:
Extend knee, inverse of Flex knee
Restrictions:
??
Grow - Grow - see TopEditOps.Grow
Parameters:
1: component to insert
2: channel to split
3: negative boundry channel, lower or left
4: positive boundry channel, upper or right
Operation:
add component by splitting channel between boundries
Restrictions:
component must be unplaced, negative and positive boundry channels must intersect channel to split
Grow1 - Break Grow1 - see TopEditOps.Grow1
Parameters:
1: component to insert
2: host component
3: corner of host at which to grow, 1 => sw, 2 => se, 3=> ne, 4 => nw
Operation:
add component in negative corenr of host component
Restrictions:
component must be unplaced, host component must have a negative corner at the specified corner
Shrink - Shrink - see TopEditOps.Shrink
Parameters:
1: component to remove
2: direction to colapse channels, a hint
Operation:
remove the component and colapse the bounding channels
Restrictions:
component must be unplaced, host component must have a negative corner at the specified corner
BrkXs - Break crosses - see TopEditOps.BreakCrosses
Parameters:
1: reference channel
2: negative boundry channel, lower or left
3: positive boundry channel, upper or right
Operation:
Break crosses on fererence channel
Restrictions:
??
ClrNegCnr - Clear negative Corners - see TopEditOps.ClearAllNegCorners and TopEditOps.ClearNegCorner
Parameters:
1: component upon which to operate
2: corner(s) from which to remove negative corners, 0 => "all", 1 => "sw", 2 => "se", 3 => "ne", 4 => "nw", ENDCASE => ERROR)
3: channel direction to use, hor or ver
Operation:
remove the the negative corner(s) and colapse the bounding channel in the direction specified
Restrictions:
component must be placed, host component must have a negative corner (ie, an L shaped channel intersection) at the specified corner(s)
*** ChgOrien - Change the orientation of a component - see TopEditOps.XXXXXXXX
Parameters:
1: component to modify
2: new orientation of component
Operation:
Change the orientation of a component
Restrictions:
component must be placed, orientation must be valid

(ii) The back+forward tracking primitives. (Click 'StkOps' to list operations.) The system internally keeps a stack and a queue, viz, an `undo-stack' and a `redo-queue'. The former allows the user to undo any number of steps (Un1 = Undo 1) and the latter enables the system to remember certain tracks may be retracked (redo) later (it's like creating a checking but with much less overhead.) The following operations are provided:
Undo - Un do previous editing operations - see TopEditOps.Undo1
Parameters:
1: the number of operations to undo
Operation:
do the inverse of the previous operations
Restrictions:
the number of operations to be undone must be valid
Redo - re do previous editing operations - see TopEditOps.Redo
Parameters:
1: where to get operations track from: internal queue or a previously kept track
Operation:
do the previous operations
Restrictions:
??
KepTrk - re do previous editing operations - see TopEditOps.GetTrack
Parameters:
none
Operation:
keep the existing track of operations, see Undo and Redo
Restrictions:
??
ClrStks - clear the Undo stack and the Redo queue - see TopEditOps.ResetStacks
Parameters:
none
Operation:
keep the existing track of operations, see Undo and Redo
Restrictions:
??
Un1 - Un do one previous editing operation - see TopEditOps.Undo1
Parameters:
none
Operation:
do the inverse of the previous operation
Restrictions:
??
Re1 - Redo one previous editing operation - see TopEditOps.Redo1
Parameters:
none
Operation:
do the inverse of the previous operation
Restrictions:
??
StkSz - write the Undo stack size and the Redo queue size - see TopEditOps.StackSize
Parameters:
none
Operation:
write the Undo stack size and the Redo queue size, see Undo and Redo
Restrictions:
??
Look at MainViewerImpl.mesa to see precise how mouse buttons are mapped into procedure calls. MainViewerImpl.mesa is the main interface between the user and the core of this Placer
(E) The system is forgiving
To understand the system just 'play' with it. The system is very forgiving, eg. (i) you can abort any operation which request user-input by just hitting <RETURN> or giving it some non-valid input, (ii) Just click `Destroy' if you find the system offensive and start a new one by typing "run -a MainViewerImpl" to the Commander (iii) If an uncaught signal throws you into the debugger window, doing abort (in the debugger) should also abort your from the operations that caused it.
Happy Hacking,
CSChow