--File: BryansPlacerDoc.tioga
Last Edited by: CSChow, December 11, 1984 7:38:49 pm PST
Preas, August 3, 1986 10:50:31 am PDT
DF for Placer on [Indigo]<AutoLayout>top>Phoenix23.df
Documentation for Placer on [Indigo]<AutoLayout>Phoenix23>*Doc.tioga
This documentation describes how to start up and use a Placer on your machine. The procedure is:
(A) Start up
(i) Bringover [Indigo]<AutoLayout>top>Phoenix??.df
(ii) FlyPhoenix.cm
(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 a 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 = a Z that can be rotated but no reflected, neg = a reflected (and possibly rotated) Z
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 that forms body of L. It will be colapsed; its intersecting channels will be colapsed into a single channel
2: end of channel which to convert, pos = upper/right, neg = lower/left
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 that forms body of T
3: L type, neg = leg of L will point to lower/left; pos = leg of L points to upper/right
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, channel to be bent
2: floor channel, channel to terminate the leg of the L
3: end, pos = upper/ right, neg = lower/left
Operation:
Construct an L intersection on leg channel. The L leg will terminate on the floor channel.
Restrictions:
Mus have component with "unused" corner
ExtKne - Extend knee - see TopEditOps.ExtendKnee
Parameters:
1: shin channel
Operation:
Extend knee, inverse of Flex knee
Restrictions:
Cannot have channel "blocking" shin from extending. This means that there cannot be a channel intersecting shin channel on side of extension.
FlipT - Flip a T intersection - see TopEditOps.????
Parameters:
1: chToBend, currently the top of the T, it will become the body of the T
2: attachTo channel to terminate the new top of T
3: whichEnd of the chToBend, pos = upper/right, neg = lower left
Operation:
Flip the T
Restrictions:
whichEnd must specify a T end of chToBend
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 corner 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: amount to change relative to current orientation. See ChipNDale for op code
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.
(F) To run placement test cases
BinPacking examples:
FlyPhoenix
Bug GetInput
Enter BinPack? ? = 1,2 or 3
Enter commands from the TEST #?, see file BinPackTest.cm
Happy Hacking,
CSChow