DF for Placer on [Indigo]top>Phoenix23.df Documentation for Placer on [Indigo]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]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 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 „--File: BryansPlacerDoc.tioga Last Edited by: CSChow, December 11, 1984 7:38:49 pm PST Preas, August 3, 1986 10:50:31 am PDT ÊV˜J™™8J™%—J™J˜JšÐbz%œ˜5Jš0œ˜DJ˜J˜J˜`J˜šœÏz˜ Jšœ2˜2Jšœ˜JšœD˜DJ˜—šœž˜ J˜`J˜J˜„J˜J˜‡—J˜šœž˜ J˜‘—J˜šœž˜J˜˜fJ˜IJ˜=—J˜˜˜ššœ.˜.˜ J˜CJ˜$—˜ JšœL˜L—˜ J˜.——J˜šœ,˜,˜ J˜ J˜ —˜ J˜K—˜ J˜K——J˜šœ(˜(˜ J˜4—˜ JšœS˜S—˜ J˜#——J˜šœ$˜$˜ J˜J˜J˜—˜ JšœN˜N—˜ J˜f——J˜šœE˜E˜ J˜xJ˜G—˜ JšœN˜N—˜ J˜——J˜šœK˜K˜ J˜4J˜J˜X—˜ JšœN˜N—˜ J˜——J˜šœ,˜,˜ J˜"J˜7J˜,—˜ J˜[—˜ J˜'——J˜šœ0˜0˜ J˜—˜ Jšœ!˜!—˜ J˜Ž——J˜šœ3˜3˜ J˜IJ˜1J˜@—˜ J˜ —˜ J˜)J˜——šœ!˜!˜ J˜J˜J˜*J˜+—˜ J˜4—˜ J˜b——J˜šœ*˜*˜ J˜J˜JšœG˜G—˜ J˜2—˜ J˜^——J˜šœ'˜'˜ J˜J˜(—˜ J˜6—˜ J˜^——J˜šœ3˜3˜ J˜J˜*J˜+—˜ Jšœ"˜"—˜ J˜——J˜šœd˜d˜ J˜"JšœmÏkœŸœ˜~J˜'—˜ J˜]—˜ J˜†—J˜šœJ˜J˜ J˜J˜O—˜ Jšœ%˜%—˜ J˜3———J˜—šœ[Ïe œÊ˜¯J˜šœ?˜?˜ J˜#—˜ J˜)—˜ J˜3—J˜—šœ>˜>˜ J˜P—˜ J˜—˜ J˜——J˜šœD˜D˜ J˜—˜ J˜8—˜ J˜——J˜šœN˜N˜ J˜—˜ J˜8—˜ J˜——J˜šœA˜A˜ J˜—˜ J˜(—˜ J˜——J˜šœ@˜@˜ J˜—˜ J˜(—˜ J˜——šœU˜U˜ J˜—˜ JšœD˜D—˜ J˜——J˜——J˜˜µJ˜—J˜—šœž˜J˜J˜àJ˜J˜šœž˜J˜˜J˜ J˜ J˜J˜8J˜——˜J˜J˜———…—#š(t