General Notes:For the cursor the two screens are logically next to each other, and the cursor is on one of themat a time. Moving the cursor off the right edge of the color screen moves it onto theblack&white screen, and moving it off the left edge of the B&W screen moves it onto the colorscreen. What the two screens display is two seperate windows into the same geometricalstructure, and in general you can point to the part of the structure to which you want to referon either screen.Note that the bottom of the black & white screen (called the feed-back area) displaysinformation about what the program is doing, and various parameters. Many of theseparameters can be changed. As a general rule, pointing the cursor at a parameter and clickingthe red button will increment the value of the parameter. The blue button will decrement it,and the yellow button allows you to type a new value (terminated by or ). A pairof exceptions are the two "scale" parameters, where the yellow button sets the scale based onthe cursor position up and down the scale bar. For more details, see the parameters section,below.Chipmonk thinks of the three main layers in the order: diffusion, poly, metal. Some commandsrefer to a layer by number, and in all such cases, Chipmonk consistently makes the association:1=dif, 2=poly, 3=metal.The mouse buttons have names, by which they will be referred to. The left-most button iscalled Mark, and is used for placing the "MARK" (a geometrical point reference) and forcommands which, in general, change objects already on the screen (there are exceptions -- aren'tthere always). The middle button is called Draw, and is used for commands which draw newthings on the screen (again there are exceptions). The right-most button is called Select, and isused for selecting and de-selecting objects. Selected objects are outlined (in white on the colorscreen).Commands take several forms. Some consist of holding down while striking a key,some consist of holding down a key while pushing a mouse button, some consist of holdingdown and and striking a key. A few consist of holding down just andstriking a key, a few requite with and , and a few are single key-strokes (like ).Commands fall into four basic groups. One group is those commands which can be done intwo ways. These commands have a character key associated with them, and typing"key" causes the command to be applied to all selected objects; whereas holding "key"down and pushing Mark (or Draw -- depending on the command) causes the command to beapplied to the object pointed to. For example: D causes all selected objects to bedeleted, while D-Draw causes the object pointed to to be deleted. Further, R causesthe selected objects to be rotated, while R-Mark causes the pointed-to object to be rotated.The second group is the selection commands, most of which consist of clicking the Select buttonwhile holding down some key. Exceptions are Select by itself (no key) and the area selects(q.v.) which can be started with A-Mark.The third group are those commands of global significance, which usually require holding down and while striking some key. The fourth group is "other". There aren't verymany of these, and many are fairly unimportant.There are a number of commands which wait for a string to be typed. When the program iswaiting for a string, it inverts the color table, so that the color screen looks funny, and promptson the black & white screen. When the string has been typed (terminated by or )it puts the color screen back. If you wish to abort one of these commands any time before the or , you can do so by hitting the "UNDO" key, which is the blank one below (andto the right of) . api ^q9( ]n K [6' Zf%2 X6) W^ TyF R"1 Qq^ O:# Ni#8 LE Ka)4 I FO EtR C A 9 ?D >Y <1( :[ 9w6, 7 5; 30( 2,+ 0F . ,E *$H% ),/ '!3 & O $> #\ +4 A ( /,1 ; '/ B)/ K :Z 8& 2C  ;XUg2Commands:The following discussion of commands is organized in what attempts to be the order in whichone whould need to learn them. The notation "" means any non-null combination of, , or . Commands in quotes and underlined refer to parameters in thefeedback area at the bottom of the black & white screen. It is strongly suggested that yourun Chipmonk (currently done by loading [Ivy]Chipmonk.dm and then saying @pp), and try eachof the following commands, in the order described. Some things are much clearer if yousee them happen than if you just read about them.Drawing a few things:1-Drawwill Draw (place on the screen) a diffusion-to-metal contact of minimumgeometry, with its upper left corner at the location of the cursor whenthe command was given.2-Drawwill Draw a poly-to-metal contact of minimum geometry, with its upperleft corner at the location of the cursor when the command was given.3-Drawwill Draw a butting contact of minimum geometry, with its upper leftcorner at the location of the cursor when the command was given.X-Draw orT-Drawwill Draw a Transistor with its upper left corner at the location of thecursor when the command was given. The geometry ratio of thetransistor will be that specified by the "X-Ratio" parameters in thefeedback area. The length will be the length parameter times 2 lambda,and the width will be the width parameter times 2 lambda. Note: theseparameters control the size at which the transistor is created. Once it iscreated, changing the parameters has no effect on it.P-Drawwill Draw a Pullup with its upper left corner at the location of the cursorwhen the command was given. The geometry ratio of the transistor willbe that specified by the "P-Ratio" parameters in the feedback area. Thelength will be the length parameter times 2 lambda, and the width willbe the width parameter times 2 lambda.Selection:Selectwill Select the object pointed to by the cursor (under the point of thearrow), and de-select all other objects. If there is more than one objectunder the cursor, Chipmonk attempts to select a "new" one. If youplace the cursor on top of n objects and, without moving the cursor, don selects, Chipmonk will cycle through the n objects, each being selectedonce.-Selectwill extend-Select the object pointed to by the cursor, without de-selecting other objects. If there is more than one object under thecursor, Chipmonk selects a "new" one (one which is not selected). Ifyou place the cursor on top of n objects and, without moving the cursor,do n -selects, Chipmonk will select all n objects. Note: means any non-null combination of , , and .D-Selectwill De-Select (un-select) the object pointed to by the cursor, withoutaffecting other objects. If there is more than one selected object underthe cursor, Chipmonk de-selects one of them.Deletion:Ner"sa's ^q[ \.tq Zpq= Yp" W; uGp Up2q S1 PjpPp Mtq tq /LX+/J Gtq tq!/Fk3 Ctq tq/B) ?tq =tq t q"/<'/:$/9 G/7;tq/6$tq /4%tq 1tqtq9/0F/.-/-7/+& ( (`p %|tqtq8/#J/"sB/ )/k5/ t qt q1/~: /+/v ;/5tqt/nq4 tqtq -/-/ ,  Vp H ;]3D-Drawwill Delete the object pointed to by the cursor at the time the commandwas given. If there is more than one object under the cursor, Chipmonkwill delete one of them. Deleted objects go to list of such things, andcan be un-deleted, until they are flushed from the list.Dwill Delete all selected objects. Deleted objects go to list of such things,and can be un-deleted, unless they have been flushed from the list --which happens explicitly (there is a command) or when the list getsunreasonably long.Uwill Un-delete the object or objects on the top of the list of deletedobjects -- this is the object or group of selected objects deleted by themost recent un-cancelled delete. (Deleted objects are pushed onto theun-delete stack, and un-delete pops them). Un-deleted objects comeback selected, so that if nothing was selected when the un-delete wasdone, D will un-do it. The un-delete list (stack) gets objectsflushed from it when there are more than a few hundred.Drawing Wires:In Chipmonk, wiring is done by marking a starting point, then saying Draw ("draw wires"),at which point Chipmonk shows you a pair of "virtual" wires from the starting point to thecursor. The virtual wires follow the cursor around. When the virtual wires form a corner atthe desired place, you say Draw, and the "older" virtual wire (the one from the startingpoint to the corner) gets made a real wire, and two new virtual wires extend from its end(the "corner") to the cursor. Each successive "Draw" will make one more virtual wire real.Wiring can be terminated in one of two ways. If the current two virtual wires will completethe circuit to the desired point (under the cursor), you can say Mark, and both wires will bemade real (except if the second virtual wire is of zero length, in which case it is not madereal), and wiring will be terminated. The second way out of wiring is to type whichsimply terminates wiring, (stops the virtual wires from being drawn), does not make anyvirtual wires real, but leaves alone the real wires. There are two ways the virtual wires couldbe drawn -- with the first one vertical, or with the second one vertical. The initial pair isdrawn such that the first (older) virtual wire is longer (at the time the command is given), sothat if the cursor is at the same level as the mark, and to its right when the Draw is given,the first virtual wire will be horizontal. Each successive Draw reverses the direction of thevirtual wires, so wires will alternate between vertical and horizontal (this is harder todescribe than to understand). Note: each wire is an object, which can be selected, deleted,etc. Note: wires are drawn with the width specified under the appropriate layer name in the"current layer" area of the feedback area. These width parameters can be changed like otherparameters (see "Feedback Commands") and can be initiallized from the"Chipmonk.Profile" file, q.v.-1 or1-SelectSelect diffusion as the "currently selected layer".-2 or2-SelectSelect poly as the "currently selected layer".-3 or3-SelectSelect metal as the "currently selected layer".MarkIf you are not drawing wires, places the "mark" at the cursor location.The "mark" is indicated by a cursor-shape, drawn in a different color,and a little smaller, and outlined in a third color. What the colors aredepends on what is under the mark. On the neutral background themark is a purple cursor outlined in black. If you are already drawingwires, makes both (usually) virtual wires real, and terminates drawingwires.Nfr btqtq+/`>/_0/]8 Ztqtq"ZVZ%/Y)B/W5 /V! SQ <P :,0 9w<! 7M 6o&4 4E 3g?! 1N 0_I .V -VM +7" *Ntq7 (tq." 'FB %< $> !Ytq tqtq# tq ltqtq# tq tqtq# tq tq#/3/"'/2//t/ qA/  <]L4DrawIf you are not drawing wires, Draw will start drawing wires on thecurrently selected layer. This means that two virtual wires will beshown from the mark to the cursor, and they will follow the cursoraround, showing you where wires will go if you create them. If you arealready drawing wires, Draw will make the "older" virtual wire real, andput virtual wires from its end to the cursor. Thus each Draw after thefirst creates one more real wire -- and also reverses the direction of thevirtual wire corner.If you are drawing wires, stop drawing wires. Virtual wires are deleted,but wires which have been made real are left. Thus "Draw, " isa nop, and "Draw, Draw, " will create one wire. doesother things -- it is a general "escape" from things you have gotten into,and is also a terminator for strings. In addition, always forces acomplete update (re-write) of both screens.Q-DrawIf you are not drawing wires, Q-Draw will make one wire, from the markto the x or y of the cursor (i.e. either horizontal or vertical). It will notput you into wiring mode. This is equvalent to "Draw, Draw, ",except that the length of the wire is slightly different. If you are alreadydrawing wires, Q-Draw will make one more wire, and quit drawing wires(equivalent to "Draw, ").A few random but necessary things:QQuit. Currently no attempt is made to ensure that files have beenwritten out, etc.OWrite Output file. The current drawing is output as a .Chip file. Notethat if you have pushed into a cell, it is the drawing of that cell that isoutput; structure above the cell will be lost if you then quit. Theprogram forces the extension to be .Chip. If you type the null string() when it asks for the file name, it uses the file name from themost recent Input or Output. Before writing the file, Chipmonk checksto see if it already exists, and if it does, asks for confirmation (Y/N).IInput a .Chip file. The program forces the extension to be .Chip. Thestuff read in is merged with anything already present.RRestart. Flushes all data structure and puts you back in the state youwere in when you first loaded the program (more or less). No attemptis made to ensure that files have been written out.Moving and Copying:In moving and copying what gets moved or copied is the set of all selected objects. The"source" reference point is the "mark", and the destination reference point is the location ofthe cursor when the command is given. In other words the relative offset caused by thecommand is the relative offset between the "mark" and the cursor.C-DrawCopy the selected items, with an offset such that the new stuff has thesame positional relationship to the cursor as the old stuff has to themark. The old stuff is de-selected and the new stuff is selected; themark is moved to the cursor position.M-DrawMove the selected items, by an amount equal to the offset between the"mark" and the cursor. The mark is moved to the cursor position.-=Move all selected items to the LEFT by one lambda..Nfr btq tq&/`D/_ 8/]< /\t q3/Z-/YJ/W Ttq t q(/S: /Q*/P3/N >/M+ J#tq tq!/H6/G=/E9/Dt q8/B ? ?dp! <t q8 /: 8t q'!/64/5(/3F/2&/0,/.5 ,t q3/*6 't q-/&,5/$3 !&!}p qC N 5"  A 'tq//5///% tq'/2+ Mtq/  ;]5-\Move all selected items to the RIGHT by one lambda..-Move all selected items UP by one lambda..-Move all selected items DOWN by one lambda..Window Control:The two screens are two independent windows into the chip-layout space. Each can bescaled and moved independently of the other.-MarkMove the color window so that the point under the cursor is at thecenter of the color screen. You may point to the desired center-pointon either screen.-SelectMove the black & white window so that the point under the cursor is atthe center of the B&W screen. You may point to the desired center-point on either screen.-DrawThis moves either screen by the amount the cursor moves betweenpushing the middle (draw) button and releasing it. The point under thecursor when you push the button is moved to the position of the cursorwhen you release the button. Do not change screens while the button isdown!"Scale"This is the "Scale" parameter in the feedback area. There are two scaleparameters, one for the color window and one for the black & whitewindow. Either may be incremented (by clicking the mark button),decremented (by clicking the select button), or set to a value (bypointing the cursor at the desired position on the scale bar and clickingthe draw button). See the section on the feedback window for details.An attempt is made to keep the screen centered in the same place as thescale changes.Area Selects:Area selects require a sequence of two commands, one to mark one corner of the(rectangular) area, and one to mark the other corner, and finish the command. Thissequence can be done in two ways. The first is to use the "Start area select" command (A-Mark) to mark the first corner, and then one of the normal select commands (Select, with orwithout a key) to finish the command and tell what kind it is (new stuff only, extend select,or de-select). The other way is to place the "mark" at one corner, then give one of theselect commands, while holding down the A key (doesn't work for de-select), to indicate thatit is an area select, and its type. One advantage of the first method ("start area select"command) is that Chipmonk draws a box from the first corner to the cursor so you can seewhat is inside the box. The rule about what an area select refers to is (currently) that onlythose things are referred to whose bounding box is fully within the select box.A-Mark then Select or"Mark" then A-Selectwill Select the objects wholly inside the selection box (from the "mark"or A-Mark command, to the cursor when the Select is done), and de-select all other objects.A-Mark then -Select or"Mark" then A--Selectwill extend-Select the objects wholly inside the selection box,without de-selecting other objects. Note: means any non-nullcombination of , , and .A-Mark then D-Selectwill De-Select (un-select) the objects wholly inside the selection box,Nfr btq0 _9tq& \Ttq( X -Y)p VDqQ T, Qt q 4/PW9 /N Kt q9 /Jj;/H Ft q'/D}tqtqtq/B./Aut/? <= q3/;$/:3 /86 /66/5x>/3 :/2p . f/Dp ,_q8 *N )WA '[ &O$9 $8 #G-/ !#8 ?.* T 73tq Rtqtq tqtqtq,/J)/ tqt q ]tqt qt q/%tqtq /U* ptqtqtq );\6without affecting other objects.Cells:A cell is a collection of objects which is treated as an object itself. It is usually a collectionof things which performs a function, such as an input pad cell, or a register bit. (In Icarusthese were called "symbols" -- a singularly bad name). Cells can contain other cells to anydepth (a cell cannot contain itself). At the top level (when working on the main drawing)the objects of which a cell is made cannot be manipulated; the cell is treated as an atomicobject. It is possible to "push" into a cell, and make its definition (collection of objects) thetop level, and thereby modify the cell definition. This pushing can be done to any level,until there are no further levels of cells. It is also possible to "expand" a cell, which meansthat the cell instance is removed from the drawing, and replaced by instances of the objectsin the cell's definition.-CDefine a cell. The collection of all selected objects is turned intothe definition of the cell, and those instances are removed and replacedby an instance of the cell. The program promts for a name for the cell(type a string, followed by or ). Cell names are uppercase -- you can't type lower case -- so there is no confusion about case.If you type the null string ( or ) the cell will have no name.This is OK, but if all instances of the cell get deleted at some point,there will be no handle for getting one, and the cell definition will fallinto the great black hole that is waiting for us all.C-MarkGet a cell instance. The program promts for a cell name (type a string,followed by or ). Naturally this command only works fornamed cells. Unnamed cells can be gotten by copying. This can be alittle tricky if the only instance of an unnamed cell is inside some othercell.P-MarkPush into a cell definition, by pointing. The drawing at the current levelis saved away (pushed) and the definition of the cell under the cursor ismade the current level. You can now modify the cell (includingpushing into other cells in its definition). All commands work. Inaddition to adding, deleting, and moving objects, you can define cells.Be careful, however, not to do any I/O, as the drawing definition ishidden, and an output will output the cell definition only. When youare through, you can leave the cell definition with a "pop" (-^,q.v.).-PPush into a cell definition, by selection. This is the same as P-Mark(above) except that the cell pushed into is the one selected (if more thanone is selected, one of them is picked by the program). Be careful,however, not to do any I/O, as the drawing definition is hidden, and anoutput will output the cell definition only.-PPush into a cell definition, by name. This is the same as P-Mark (above)except that the cell pushed into is the one whose name you type inresponse to the prompt.-^Pop from a cell definition. (Note: this is that same key as _, no casedistinctions are made in commands). If you have made any changes tothis cell, the program promts you for a decision about what to do withthe changes. You have three choices (respond with a single character):You can flush the changes and go back to the orriginal definition; youcan replace the old definition with the new (changed) one; or you canuse the new definition to create a new cell, leaving the old cell as it was.Nfr/bq ^^p \qG Z$: YK WH UN TyR R3' Qq7) O@ Ni Jtq&07J6nJsq/H3/Gb5/E,/DZI/B9 /ARG/? @/>J5 ;etq!'/9B/8]D/6D/5U 2ptq @/0%tq//h$/-,/,_@/**t* *q)/)W "")k)W$2))W()&)W+))W0))W2))W5A))W ;))W /'3/&O #jtq*/!("/ b- ?  btA   bq/"#Dk/Z&Z">Z''Z*Z-Z 3Z utq&#/'/m tq?///; /-/xB/ '/ p6 H );\%7If you choose to make a new cell with the new definition, the programprompts for a name (no name is OK), and also will replace certaininstances of the old cell with the new one -- specifically those instancesby which you pushed into the definition. Which instances these aredepends on which psuh command was used. If you pushed by pointingat an instance (P-Mark), the instance that you pointed at will bereplaced (all others remain the old cell). If you pushed by selection(-P) then all selected instances of the old cell are replaced with thenew one. If you pushed by name, no instances will be replaced.E-MarkExpand a cell, by pointing. The cell pointed to is deleted and replacedby instances of each object in its definition (at the same location andorientation as when the cell was there -- so that an expand should haveno electrical effect).-EExpand a cell, by selection. The selected cell is expanded. Currentlyonly one cell is expanded (this should change) so that if more than onecell is selected, only one of them is expanded.-ZDisplay all cell names. This command currently works in a kludgeyfashion. A drawing is created consisting of the cell names, and theprogram goes into a mode in which that drawing is displayed on theB&W screen. The windowing and scaling commands are used to movearound in the drawing. If there are a lot of cells, it can take a minuteto generate the drawing. To get out of the mode, type UNDO (theblank key below ). The correct scale for looking at the names is9, but you will probably need to find them using a smaller scale. Thisstuff is all going to change. While in this mode, you can select cellnames. -D will then delete all selected cell definitions (usuallywithout killing the program -- it is suggested that you save your filebefore doing this).Rotation and mirroring commands:R-MarkRotate an object, by pointing. The object pointed to is rotated to theright by 90 degrees. This is quite fast, so rotations of 180 or 270degrees are done with repeated 90 degree rotations. Four of these is anop. The object is rotated in such a way that the upper left corner ofthe result (bounding box) is in the same place as the upper left cornerwas before.-RRotate selected object(s). The set of selected objects is rotated to theright by 90 degrees. The set of objects is rotated as a unit, maintainingtheir relative positions. The unit is rotated such that the resulting upperleft corner of the unit (bounding box) is in the same place as the upperleft corner of the unit was before. If there is only one object selected,this command has the same effect as pointing to the object and doingR-Mark. However, if more than one object is selected, it is notequivalent to doing R-Mark to each of them, as that would rotate eachone in place, whereas -R rotates them as a unit.M-MarkMirror an object, by pointing. The object pointed to is mirrored(reflected) left to right (about the Y axis) and its center remains thesame. Two of these is a nop.-MMirror selected object(s). The set of selected objects is mirrored(reflected) left to right (about the Y axis) as a unit, maintaining theirrelative positions. The unit is mirrored such that the center of thebounding box of the unit remains the same.Nfr/bq0/`# tqtqt/_"q/])/\2/Ztqtq /Y< /Wtq /U!tq Stq; /Q ;/P-/N Ktq= /J#7/H/ Etq5 /D7;/B!!/A.//?$%/>&+/<./;Bt/9q /8./6(/5 11p .tq5/-z,/+9 /*r8/(G/'i $tq//#tqtqtqtq /!}</tq/ttq3/ 8/l//./d6 tq*/$#/w tqC/-tqtqtq/ >/ tq ;]L8Width & Length commands:Some types of objects have widths and/or lengths which are parameters. For those objects,it is possible to change those parameters with some or all of the five following commands:Widen, Narrow, Lengthen, Shorten, Default. Wires have both length and width, contacts(except butting contacts) have length, and transistors and pullups have both length andwidth. Cells have neither. Most of these parameters have defauls, which are parameters inthe feed-back window. The "Default" command sets a parameter which has a default to thatdefault value. The following table summarizes these parameters:WidthLengthType of ObjectWidthLengthDefaultDefaultWireYYLayer/WdnoneContactNY--4 lambdaXstrYYX-ratioX-ratioPullupYYP-ratioP-ratioCellNN----L-MarkLengthen an object, by pointing. The object pointed to is lengthened byone lambda if it has length as a parameter (wire, contact, xstr, orpullup).-LLengthen selected object(s). All selected objects which have length as aparameter are lengthened by one lambda.S-MarkShorten an object, by pointing. The object pointed to is shortened byone lambda if it has length as a parameter (wire, contact, xstr, orpullup). There is a minimum length below which an object will not beshortened.-SShorten selected object(s). All selected objects which have length as aparameter are shortened by one lambda. There is a minimum lengthbelow which an object will not be shortened.W-MarkWiden an object, by pointing. The object pointed to is widened by onelambda if it has width as a parameter (wire, xstr, or pullup).-WWiden selected object(s). All selected objects which have width as aparameter are widened by one lambda.N-MarkNarrow an object, by pointing. The object pointed to is narrowed byone lambda if it has width as a parameter (wire, xstr, or pullup). Thereis a minimum width.-NNarrow selected object(s). All selected objects which have width as aparameter are narrowed by one lambda. There is a minimum width.0-Mark (zero)Default width/length of an object, by pointing. The object pointed tohas its width and/or length set to the default if there is a default. Ifthere is not a default for a parameter, that parameter is not changed.This will set the width of a wire to the value in the feed-back windowfor the width of a wire on that layer. Wire length is unchanged.Transistors and pullups get both width and length set to the value in theX-Ratio or P-Ratio paramters. Contacts (except butting) get their lengthset to 4 lambda. Butting contacts are unchanged.-0Default width/length of selected object(s). All selected objects have theirwidth and/or length set to the default if there is a default. If there isNfr aap ^q@ ]n: [; Zf&1 X*1 W^G U@.RR5R6RQ Qq QQq'Q6Qq.QyQq5QyQqO '.5tNiq '.5L '.5Ka '.5I '.5 Ettq =/C1/Bl ?tq8/>' ;tq&/91/8E/6 3tq7/2)A/0, -tq"$/,<> )Wtq5/'$ $tq%/#j,/! tqF/}& tq-/ </>/ 5/'/*/I/1 tqA / 7 L;\9not a default for a parameter, that parameter is not changed.S-DrawStretch a wire. This applies to all wires which are selected. Selectedobjects which are not wires are ignored. The "Mark" must be touchinga selected wire when this command is given. The command causes oneend of all selected wires to be shortened or lengthened by the differencebetween the "mark" and the cursor. The end which is changed is theone which the mark is nearest. For horizontal wires only the horizontaldifference between the "mark" and the cursor is relevant. For verticalwires only the vertical difference is relevant. For example, if you selecta group of horizontal wires and put the mark exactly on the left end ofone of them, then move the curosr so it is to the left of the mark andgive this command, the wire which had the mark on it will be stretchedto meet the cursor, and all the other selected wires will be stretched bythe same amount. If the cursor had been to the right of the mark, thewires would have been shortened. If the mark had been on the rightend, that end would have been stretched/shrunk to meet the cursor. Ifboth vertical and horizontal wires are selected, the effects will be(probably) undesirable.Random commands:CWrite CIF file. A CIF file is made from the current drawing. Note thatif you have pushed into a cell, it is the drawing of that cell that isoutput; structure above the cell will not appear in the CIF file. Theprogram forces the extension to be .CIF.HWrite Hardcopy file. A press file is created containing the part of thedrawing which is currently begin displayed on the Color screen. Theprogram forces the extension to be .Press.B-MarkMake burried contact. A rectangle on the "Burr" layer is created. If thecursor is touching the intersection of a Dif line and a Poly line, therectangle will be centered on the intersection and will be of a size andshape to meet the minimum design rules for such a contact. If thecursor is not touching such an intersection, the rectangle will be aminimun square. The rectangle can be changed in shape and size usingthe width and length commands.-Flip wires. Reverses the direction of the corner of the temporary wireswhen drawing wires (q.v.).FFlush un-delete list. When objects are deleted (q.v.) they go to a list ofdeleted objects, rather than being destroyed completely, so that they canbe un-deleted (q.v.). This command flushes (destroys) everything onthat list. That list normally gets old things flushed when it grows verybig. This command allows you to recover some space.OMake overglass rectangle. The programs hunts for a metal wire(rectangle) under the cursor. When it finds one, it creates an overglassrectangle centered on the metal one, and smaller in both dimensions bya standard amount (8 lambda, or 4 lambda on each edge). Once therectangle has been made, its dimensions can be changed with the widthand length commands.T-MarkEnter text. If the cursor is on a wire or contact, the program waits foryou to type a string (terminated by or ) which it thenattaches as a property to the wire or contact. The text appears on theBlack&White screen. On the color screen, its position is indicated by aNfr/bq= _9tqH/])/\1C/Z7/Y)"!/W3/V!//T4/SG/Q!%/P%!/NI/MF/K"/JF/H|4/F CvKCp @t q*/?d-/=&/<\( 9wt q8/72tq /6o* 3tqC/2=/02/.*/-z: /+1/*r 't qH/&  #$tqC/!2/ #!/ >/4 /tq%/&#/'3/8/6/ tq'"/22 / // *5 ;](10small white rectangle in the upper left corner of the object. The textgets put into the CIF file, so it can be used to give a node a name (theCIF extractor finds it). The text currently does not get put into a pressfile written with the Hardcopy command (but will show up in one madewith the CIF printer program).SOutput Spice file. The program asks for a file name, then writes a .CKTfile, which can be input to spice. The file will contain transistors, andcapacitors to simulate the capacitance (in addition to that associated withthe gates of transistors) for each node. The generation of thisinformation is currently both slow and n-squared. For a circuit with 50transistors (which is probably larger than spice will accept) it takes 5 to30 minutes to generate the file. The circuit is generated for whatever iscurrently at the top level, so, to keep things small, it is suggested thatyou gather everything you want in the spice file into a cell and pushinto the cell, then generate the file. Eventually a new algorithm will beused and this stuff will become faster, more accurate, and more reliable.EOpen error file. The program asks for a file name, then opens that file,ready to display its error messages (see E below). The file shouldconsist of error lines, each of which starts with two numbers which arethe coordinates of the error.EDisplay next error line. This causes the program to display (on top ofpart of the feed-back area) the next line from the file opened withE (above). If the line begins with two numbers, they aretaken to be the coordinates of the error in CIF units (the current settingof "Cif Lambda" is used) and the Mark is placed at that point, and thatpoint is centered on the color screen. If the line does not begin withtwo numbers, the mark and screen are not moved. Then the line(without the coordinates, if any) is displayed. Note: you can go back tothe first line of the file by simply re-opening it.FChange font. This causes the program to change which font it uses fordisplaying the feedback information (and any text). There are threefonts it can use, and this cycles it through them.CChange color table. This causes the program to enter a mode in which itis possible to change the settings of the current color table (whichcontrols how the vaious layers are displayed). The command languagefor doing this is described below. If you get into this mode accidentally,you can get back to regular mode by typing "Q" or .Color Table Control:At the left side of the feedback window (bottom of black and white screen) is a pattern ofsquare dots. Each dot represents a "color table". The program uses the color display insuch a way that it has four bits per pixel, and it uses a particular four bit code for each layer(as well as some combinations of layers, and outlines for selection, etc.). The color table tellsthe display what color to use for each of the 16 four-bit codes. Consequently, changing thecolor table changes how the various layers (etc.) look. The dot for the color table currentlyselected is made larger than the others. A new color table can be selected by pointing at itsdot and clicking the "Mark" button. Clicking the "Select" button anywhere in the colortable area will select the default color table (upper left). The "Draw" button is used to copycolor tables around and create new ones. The first click selects a table to move, and thesecond selects the point to move it to. If there is already a table at the destination, it isoverwritten.Color Table Editing:Nfr/bq </`< /_9/]?/\ Y)t q: /W1/V!;/T)/S2/Q*!/P*/N'#/M!$/K'#/J, Gt q(!/E./DC/B ?tq ;/>&>/<./;;/9>/88/69/5F/33 0tq 9//!#!/-2 *tq </)41/';/&,B/$9 !&e!}p q O Y R  (: ? 7' > -* wO < o^ i p y;]11C gets you into the color table editor, editing the currently selected color table. Thecolor screen displays a collection of objects, including 16 rectangles (one for each pixel code)at the top. It also displays three color bars at the lower right. Above the color bars is arectangle of the currently selected color, to which the color bars refer. Note: color 0 is thebackground color and is fairly hard to see against the background. A color can be selectedby pointing at an example of it in any of the objects on the screen and clicking the Selectbutton (the invisible color-0 rectangle at the upper left is used to select the backgroundcolor). The Mark button is used to move the markers up and down the color bars, andhence change the color associated with the selected pixel code. The marker will track thecursor as long as Mark is held down. If you are sloppy and cross over to another color bar,its mark will jump to the cursor. The Draw button causes the screen to be erased and re-written. When you have finished editing the color table, typing "Q" will exit the tableeditor.Parameter Feedback Summary:Following is a summary of the things in the feedback area (bottom of the black & whitescreen) and what they mean and how to change those that can be changed. Many of thechangeable parameters are changed with a standard protocol. Such a parameter can beincremented by 1 (+1) by pointing at it and clicking the mark (left) button; can bedecremented (-1) by pointing and clicking the select (right) button; can be given a new valueby pointing and clicking the draw (middle) button, then typing the new value, followed by or ."Scale"There are two scale parameters, one for the color window and one forthe black & white window. Either may be incremented (by clicking themark button), decremented (by clicking the select button), or set to avalue (by pointing the cursor at the desired position on the scale barand clicking the draw button). The scales run from 1 to 20, 1 being toosmall to be useful, and 20 being ridiculously large. The particular scalesare chosen to be those for which the conversion is easy, so intermediatescales are not available. When the scale is changed, an attempt is madeto keep the screen centered in the same place."Wiring Layer:/wd"This indicates which layer is currently selected for making wires, as wellas the default width for wires on each layer. The selection is indicatedby a dark box drawn around the name of the layer. The default widthis shown directly below the layer name, and is in lambda. The selectioncan be changed by pointing at the name of the layer and clicking anybutton, or by any of a number of other commands described elsewhere(see the "Drawing Wires" section). The width parameters can each bechanged with the standard button protocol (mark for +1, select for -1,draw to type in a new value)."Curs Grid"The cursor in Chipmonk is gridded, which means that it caonnot bemoved to points not on the grid. This parameter is the grid pointspacing, and is in points, each point being 1/2 lambda. This parameterstarts out being set to 2 points (1 lambda) and it is recomended that younot change it unless you really need to. It can be changed using thestandard protocol, but the change does not take effect until the screenscale is changed."Ticks"Chipmonk puts up a grid of white dots on the color screen and thisparameters controls their spacing. The parameter is in lambda. Settingit to 0 turns the dots off (which can save screen refresh time). It can bechanged using the standard protocol."Size Cutoff"This is two parameters: one (labelled "B") for the black & white screen,and one (labelled "Color" on the line below) for the color screen. ThisNfr bq? `K _S ]Ktq \K ZC Y., W@ U9! TyF R9 QqR O LkLp IqD HY> F< EQS C<! BIV @ ==tq'/<\+/:=/9T&/7./6K5/42/3C ?/1. . .tq7/-V5/+D/*N(tqtqtq/(@/'F&/%8 /$>7/" ~Kt q0 /Q!!/tqt q/I0/-/A6/ tq(/T1tq /1/L$  gt q=/ , ;]o12parameter controls the cutoff size below which a cell is displayed as abox, instead of having all its contents displayed. Displaying as a boxmakes screen refresh much faster, but doesn't convey as muchinformation. The range of values are from 1 to 200, with 1 meaningdisplay everything and 200 meaning display only cells which fill thescreen (more or less). The units are arbitrary. These parameters can bechanged using the standard protocol."Cif Lambda"This parameter controls the lambda in 1/100th micron at which a Cif fileis created. It starts out at 250, which means lambda is 2.5 micron.Since Chipmonk works in lambda, the setting of this parameter isrelevant only during the actual writing of the Cif file. Several Cif filesmay be written from the same layout, at different scales. Thisparameter can be changed using the standard protocol."Select New"This parameter controls a mode in which newly created objects areselected, and all others de-selected. If the mode is off, creation ofobjects does not change what is selected."Orientation"This parameter controls the orientation at which new transistors andcontacts are created. 0 is standard, 2 is rotated 90 degrees to the right, 4is 180 degrees, etc. Only even values are allowed. Creating a transistorin orientation 4 is exactly equivalent to creating it in orientation 2 androtating it once. This parameter can be changed using the standardprotocol."Pushes"This parameter displays the number of levels deep you have pushed intocells. It starts at 0, which is the top level, and increments with eachpush and decrements with each pop. This parameter cannot bechanged, as it displays an internal condition."Currently in Cell"This parameter displays the name of the cell into which you have pushed(the bottom level, if you have pushed more than one level). This is thename of the cell you are changing. This parameter cannot be changed,as it displays an internal condition."X-Ratio"This set of parameters (width, length, and implant) controls the default atwhich new (non-pullup) transistors are created. Width and length are inlambda and can be changed with the standard protocol. Implant isboolean, and can be set true with the mark button and false with theselect button."P-Ratio"This set of parameters (width and length) controls the default at whichnew pullups are created. Width and length are in lambda and can bechanged with the standard protocol."Items Selected"This parameter displays a count of the number of items selected. Thisparameter cannot be changed, as it displays an internal condition."Core Used"This parameter displays a count of the number of words currently in useby the data structure holding the drawing. There are two numbers, thefirst is MDS words used (used mostly for strings) and the second is"Long Pointer" space words used (for everything else). items selected.These parameters cannot be changed, as they display internal conditions."Mark X, Y"This displays the current location of the "mark", in lambda, in theinternal coordinate system of Chipmonk. These absolute values are notof too much use (except for debugging), but differences can tell yousizes of things (see next parameter). These parameters cannot beNfr/bq1/`A/_8</]C/\@/Z3/Y$ U^V!t q3/T5/S@/Q3/P'/N5 KQ&Kt q#/J# 9/H) Ed?Et qD/D75/B;/A.//?(/>& :;Atq5/97/89</6. 3y q3tq-/2LA/0 ://D% ,,_tq</*6/)W+/'-/&O ##jtq6/!$/ b# & }tq2/& t q%/B/ @/$"/&"  t q0/)/ 7 / A L;\13changed, except of course by moving the "mark"."Mark DX, DY"This displays the difference between the current location of the "mark"and its previous location, in lambda. This is useful for finding out howbit some cell or other feature (or the whole drawing) is. Placing themark at one corner, then placing it at the opposite corner will cause theobject's size (with or without minus sign(s), depending on the cornerschosen, and the order) to appear in this parameter.New Stuff Summary:For those who have read the previous release of this write-up, the following is a re-listing ofthe paragraphs which have changed since then.Q-DrawIf you are not drawing wires, Q-Draw will make one wire, from the markto the x or y of the cursor (i.e. either horizontal or vertical). It will notput you into wiring mode. This is equvalent to "Draw, Draw, ",except that the length of the wire is slightly different. If you are alreadydrawing wires, Q-Draw will make one more wire, and quit drawing wires(equivalent to "Draw, ").OWrite Output file. The current drawing is output as a .Chip file. Notethat if you have pushed into a cell, it is the drawing of that cell that isoutput; structure above the cell will be lost if you then quit. Theprogram forces the extension to be .Chip. If you type the null string() when it asks for the file name, it uses the file name from themost recent Input or Output. Before writing the file, Chipmonk checksto see if it already exists, and if it does, asks for confirmation (Y/N).-=Move all selected items to the LEFT by one lambda..-\Move all selected items to the RIGHT by one lambda..-Move all selected items UP by one lambda..-Move all selected items DOWN by one lambda..-ZDisplay all cell names. This command currently works in a kludgeyfashion. A drawing is created consisting of the cell names, and theprogram goes into a mode in which that drawing is displayed on theB&W screen. The windowing and scaling commands are used to movearound in the drawing. If there are a lot of cells, it can take a minuteto generate the drawing. To get out of the mode, type UNDO (theblank key below ). The correct scale for looking at the names is9, but you will probably need to find them using a smaller scale. Thisstuff is all going to change. While in this mode, you can select cellnames. -D will then delete all selected cell definitions (usuallywithout killing the program -- it is suggested that you save your filebefore doing this).T-MarkEnter text. If the cursor is on a wire or contact, the program waits foryou to type a string (terminated by or ) which it thenattaches as a property to the wire or contact. The text appears on theBlack&White screen. On the color screen, its position is indicated by asmall white rectangle in the upper left corner of the object. The textgets put into the CIF file, so it can be used to give a node a name (theCIF extractor finds it). The text currently does not get put into a pressfile written with the Hardcopy command (but will show up in one madewith the CIF printer program).Nfr/bq/ ^ _9t q</]%$/\19 /Z1/Y)0/W3 Sr Ss Pq4+ O=- LXtq tq!/J6/IP=/G9/FHt q8/D At q'!/@[4/>(/=SF/;&/:K,/85 5tq/ 2tq0 0tq& -3tq( *Ntq5 /(;/'F!!/%//$>$%/"+/!6./Bt/.q /./&(/ tq'"/92 ///15/ </)< / 9/ ?/  f U;]14SOutput Spice file. The program asks for a file name, then writes a .CKTfile, which can be input to spice. The file will contain transistors, andcapacitors to simulate the capacitance (in addition to that associated withthe gates of transistors) for each node. The generation of thisinformation is currently both slow and n-squared. For a circuit with 50transistors (which is probably larger than spice will accept) it takes 5 to30 minutes to generate the file. The circuit is generated for whatever iscurrently at the top level, so, to keep things small, it is suggested thatyou gather everything you want in the spice file into a cell and pushinto the cell, then generate the file. Eventually a new algorithm will beused and this stuff will become faster, more accurate, and more reliable.EOpen error file. The program asks for a file name, then opens that file,ready to display its error messages (see E below). The file shouldconsist of error lines, each of which starts with two numbers which arethe coordinates of the error.EDisplay next error line. This causes the program to display (on top ofpart of the feed-back area) the next line from the file opened withE (above). If the line begins with two numbers, they aretaken to be the coordinates of the error in CIF units (the current settingof "Cif Lambda" is used) and the Mark is placed at that point, and thatpoint is centered on the color screen. If the line does not begin withtwo numbers, the mark and screen are not moved. Then the line(without the coordinates, if any) is displayed. Note: you can go back tothe first line of the file by simply re-opening it.FChange font. This causes the program to change which font it uses fordisplaying the feedback information (and any text). There are threefonts it can use, and this cycles it through them.CChange color table. This causes the program to enter a mode in which itis possible to change the settings of the current color table (whichcontrols how the vaious layers are displayed). The command languagefor doing this is described below. If you get into this mode accidentally,you can get back to regular mode by typing "Q" or .Color Table Control:At the left side of the feedback window (bottom of black and white screen) is a pattern ofsquare dots. Each dot represents a "color table". The program uses the color display insuch a way that it has four bits per pixel, and it uses a particular four bit code for each layer(as well as some combinations of layers, and outlines for selection, etc.). The color table tellsthe display what color to use for each of the 16 four-bit codes. Consequently, changing thecolor table changes how the various layers (etc.) look. The dot for the color table currentlyselected is made larger than the others. A new color table can be selected by pointing at itsdot and clicking the "Mark" button. Clicking the "Select" button anywhere in the colortable area will select the default color table (upper left). The "Draw" button is used to copycolor tables around and create new ones. The first click selects a table to move, and thesecond selects the point to move it to. If there is already a table at the destination, it isoverwritten.Color Table Editing:C gets you into the color table editor, editing the currently selected color table. Thecolor screen displays a collection of objects, including 16 rectangles (one for each pixel code)at the top. It also displays three color bars at the lower right. Above the color bars is arectangle of the currently selected color, to which the color bars refer. Note: color 0 is thebackground color and is fairly hard to see against the background. A color can be selectedNfr bt q: /`1/_;/])/\2/Z*!/Y*/W'#/U!$/Ty'#/R, Pt q(!/N./MC/K Htq ;/G>/E./D;/B>/A 8/?9/>F/<3 9tq 9/8#!/62 3tq </2)1/0;//!B/-9 *e*rp 'q O & Y $R #(: !}? 7' t> -* lO < d^  ^p q? LK S DKtq K y;]15by pointing at an example of it in any of the objects on the screen and clicking the Selectbutton (the invisible color-0 rectangle at the upper left is used to select the backgroundcolor). The Mark button is used to move the markers up and down the color bars, andhence change the color associated with the selected pixel code. The marker will track thecursor as long as Mark is held down. If you are sloppy and cross over to another color bar,its mark will jump to the cursor. The Draw button causes the screen to be erased and re-written. When you have finished editing the color table, typing "Q" will exit the tableeditor."Select New"This parameter controls a mode in which newly created objects areselected, and all others de-selected. If the mode is off, creation ofobjects does not change what is selected.Nfr bqC `., _@ ]9! \F Z9 YR W TF&Tt q#/S 9/Q)6 QM;g TIMESROMAN  TIMESROMAN GACHA TIMESROMAN TIMESROMAN  TIMESROMAN } ^ $m, 6 O?SG {P lZ Bd Km nv hj/1chip7.brPetitMay 19, 1981 5:13 PM