Magic - Multiple Analyses of the Geometry of Integrated Circuitsby Martin Newell and Dan Fitzpatrick and Rich PascoVersion of April 26, 1982[Indigo]Magic>Magic.bravo,.pressPREFACEMagic is a system providing Multiple Analyses of the Geometry of Integrated Circuits. Thesystem, which runs under the JaM system on Dolphins and Dorados, is configured as aframework providing commonly used facilities, on which separate modules implementing thevarious analyses have been implemented. As such the system is extensible as more inputformats and analyses are required. Currently full CIF 2.0 and Icarus format files are supported.The following analyses are implemented: viewing on the screen, outlined plots on the Versatecplotter and Ramtek ColorGraphic Printer, color Press output, Mead/Conway geometric designrule checking, switch level circuit extraction, electrical rules checking, dynamic simulation (byrunning SimMOS under Magic), and conversion to various other formats including filtered CIF,Icarus, and Mann 3000. XEROXPALO ALTO RESEARCH CENTER3333 Coyote Hill RoadPalo Alto California 94304 Spq8 Prsrsrs Kt G?u$ 7s24u4&23CA21!720;4#2.a2-3M2+.+2*+F2(<2'#)Wv)`sX)`)`N u ; 8 5x 2L /!+ *Nst %|stst st s R $ J  B  KX{Magic31. INTRODUCTIONMagic is a system providing Multiple Analyses of the Geometry of Integrated Circuits. Thesystem is configured as a framework providing commonly used facilities, on which separatemodules implementing the various analyses have been implemented. As such the system isextensible as more input formats and analyses are required. Currently input from CIF 2.0 andIcarus format files is supported. The following analyses are implemented: viewing on thescreen, outlined plots on the Versatec plotter, color Press output, Mead/Conway design rulechecking, switch level circuit extraction (with subsequent electrical rules checking andsimulation, see Magic), and conversion to various other formats including filtered CIF, Icarus,and Mann 3000. 1.1 AcknowledgementsTo Bob Hon for provision and maintenance of the CIF Parser and Interpreter that provide thebasis for the core of the system. To Forest Baskett for the electrical rules checking analysis.Also to the many people who have provided much valuable feedback from earlier versions ofthe system.2. OPERATIONMagic is implemented as a set of programs in Mesa. Although the core of the system will runon an Alto, most analysis modules will run only on a D machine. This results principally fromthe difficulty of using more than 1 bank of memory for data structures on an Alto.The basic Magic system is implemented in Mesa, and the user interface is provided by runningMagic under the interactive programming system JaM [JaM]. JaM provides a simple interpreterthat supports the JaM programming language, and from which Mesa programs can be called.For the purposes of this document the term Magic will be used to cover the combination of thebasic implementation and the JaM user interface.2.1 Input FormatsLayouts can be specified to Magic in one of two formats: Caltech Intermediate Form (CIF) orIcarus, or as a combination of both.2.2 UsageMagic can be used either interactively or via command files. The command files provide a verysimple interface to the more commonly used functions. More involved analyses require usingMagic interactively, which therefore requires a knowledge of JaM. This document does notinclude a JaM tutorial - the reader is refered to the JaM manual [JaM].Typical usage involves retrieving a command file from Indigo for the analysis required, andexecuting it to retrieve the necessary programs and files. This step is necessary for only the firstusage. One of the files will be a .do file whose execution requests information about input filesand parameters pertinent to the analysis being performed.Frequently the facilities provided by the command files are inadequate, in which case Magicshould be used interactively. This takes the form of commands to Jam and use of the mouse.Commands applicable to all analyses are provided later in this document, and commandsrelevant to specific analyses are contained in the Appendices. fuG bst 2^u4&2]n@2[T2ZfU2X&32W^&52U-T.2TVP2R O2L{?2J%;2Is.+2G Cst2?u?2>m*42<R29T289\26O251V230 02-V/,2+$ (2%|O2#%62"sB2 G2!:2@ Y2 W2892 )22A292> t 9Magic>Magic*.cmwhere the * stands for the name of the analysis required, e.g.[Indigo]Magic>MagicDRC.cmwill get and initialize Magic and the Design Rule Checking module. Also on that directory is afile:[Indigo]Magic>UpdateMagic.cmthat will update your disk for the entire system, including getting the system for the first time.Periodic execution of this command file is recommended. There is no need to updateUpdateMagic.cm itself as it is expected to never change.3. COMMANDSCommand file usage of Magic for any one analysis involves using one of two .do files - for CIFand Icarus input. For example, CIFtoDRC.do and ICtoDRC.do are used for design rulechecking. The .do files for the various analyses require different parameters. They aredocumented in the Appendices.3.1 Interactive usageThe interactive use of Magic usually proceeds as follows:1.read one or more layouts into the Magic database;2.use viewing commands to see what is there;3.select an analysis module;4.set up precise view and parameters for selected analysis;5.invoke the analysis;6.repeat from 3.The reason for having selection of an analysis module separate from its invocation is that certainanalysis modules affect the way in which the display is managed. For example, the Pressmodule forces the viewing region to be the shape of the array of pages requested. Also, certainstate can be set within a module only while it is selected.The available commands are from three sources - commands directed to JaM, primitive Magiccommands, and JaM procedures. While users need not be concerned with these distinctions, itmay be helpful to note that online documentation of most commands that are implemented asJaM procedures can be obtained using the JaM utility command "?", e.g. (reset)?.The commands are presented here in two categories: those common to all analyses, and thosespecific to particular analyses. The latter are documented in the Appendices. Screen output isimplemented as an analysis, but it is treated specially in that the system always includes it. fuG b2^L[2X>Up2RE]2PM2JjH2H',2Gb8 Bst2?duV2=>2<\G2: 72491U(1/(*.(,_(9*()( 2%U 2$aX2"R 2!Y;2.%423)2&F2P2vJ2J2n^x ' readcifRead the layout in CIF format from the indicated file, and add it to the layout currentlystored. The extension .cif is assumed if no extension is given. The view is set up to showthe whole of the currently stored layout fitted to the drawing area. e.g.(mychip)readcifwill read a layout from the file mychip.cif.readicUsage: readicRead the layout in Icarus format from the indicated file, and add it to the layout currentlystored. The extension .ic is assumed if no extension is given. The second and thirdparameters provide for scaling, where CIF units are in hundredths of a micron. The view isset up to show the whole of the currently stored layout fitted to the drawing area. e.g.(myotherchip) 250 3 readicwill read a layout from the file myotherchip.ic, and scale it to 2.5 microns per 3 Icarusunits. Icarus is normally used with 3 Icarus units representing 1 lambda, so the abovespecification would be appropriate for lambda = 2.5 microns.parsecifUsage: parsecifAs for readcif except that the current view is not altered. e.g.(mychip)parsecif fuG b2^D2]nZCw2Wu1SwRh2O=uQ2M2JsI usGu[F@(Bw2?uJsu <29Ts7us6Ku>4 P3CJ(0w,u,2)s(=u+s&uC%5+*#/,"-7"(wuBRJ <2susuA(ow (;lXMagic6parseicUsage: parseicAs for readic except that the current view is not altered. e.g.(myotherchip) 250 3 parseic3.4 ViewingViewing is accomplished by the Screen output module, which is always loaded. Viewing iscontrolled by a combination of the mouse and keyboard. The mouse is used for zooming,scrolling, and changing the window. Keyboard commands are used to change modes.Zoom: Red mouse button. Define a rectangle by pressing down at one corner, moving themouse to the other corner, then letting the button up. While the button is down therectangle is indicated by video reversing its contents. Zooming up or down is determinedby the relative positions of the two corners of the rectangle.If the second corner is up and to the right of the first then the image is expanded so thatthe contents of the rectangle just fit into the current viewing area. This is a best fit - theimage is never differentially scaled.If the second corner is down and to the left of the first then the image is contracted so thatthe contents of the current viewing area just fit into the rectangle.Scroll: Yellow mouse button. Press down at the source position, move the mouse to thedestination position, then let the button up. The image is then scrolled so that whateverwas at the source position now appears at the destination position.Window: Blue mouse button. The viewing region can be redefined as a rectangle in much thesame way as for zooming, except using the Blue button. The relative positions of the twocorners has no effect.drawUsage: drawRedraw the image. Drawing can be interrupted using the JaM break key (rightshift-swat).See also the command outline for dealing with complex files.outlineUsage: outlineSet a mode such that only the outline of the current layout is drawn. This is to allowmanipulations of the image without having to wait for all the detail to be drawn.unoutlineUsage: unoutlineUnset outline mode.fitUsage: fitThe image is scaled and positioned so that the entire layout just fills the current viewingregion.clipfitUsage: clipfitThe clipping region is adjusted to just surround the layout.atoriginUsage: atorigin fuG2bs`u+s_u@([w Xu 2UL 2TV2RP2O`su?MBLXFJ>G+0F$?D%AuK?E2 scrolltoThe image is scrolled to bring the point to the center of the current viewing region. and are in CIF units (hundredths of a micron).invisUsage: invisThe given layer name is made invisible for the purposes of both subsequent drawing on thescreen, and subsequent analysis by any analysis module. The name is a string conformingto the CIF conventions. e.g.(NM) inviswill suppress the metal layer.visUsage: visThis is the inverse of invis. The given layer name is made visible for the purposes of bothsubsequent drawing on the screen, and subsequent analysis by any analysis module. Thename is a string conforming to the CIF conventions. e.g.(NM) viswill restore the metal layer to visibility.showUsage: showThis command is used to examine a log file, showing each text message in the typescriptwindow while showing the corresponding geometry in the viewing region. e.g.(analysis.log) showFor each entry in the file analysis.log the text portion will be output to the typescriptwindow, and the corresponding geometry scrolled to the center of the viewing region, usingthe currently set up scale. It is therefore advisable to set up a suitable scale using themouse before using show. After each line the prompt More? will appear, to which youshould type to see the next entry, or n to suspend show. Note that no othercommand, nor the mouse, can be used while show is in control. See also the commandmore.The command show is available for viewing any analysis log that conforms to the followingsyntax requirements. Each entry should be a line of text starting with two decimalnumbers, each terminated with at least one space, which give the coordinates of the featurein CIF coordinates. The remainder of the line should contain the associated message.moreUsage: moreResume showing entries in a log after suspending a show command.boundboxUsage: boundbox => Return on the JaM stack the bounding box of the current layout. fuGb#7`%2]ns[u sZfu":X62UsT3usRu.+Q+AO(L{w IPu2F$sDusCuGA9@9( The are dependent on the being selected. The first time this commandis issued for a given module will result in a delay while the code for the module is beingloaded. Subsequent selections of the module are faster.e.g.2 4 pressselects the Press module which expects two parameters giving the number of pages tosubsequently use for printing.screenUsage: screenThis is a particular example of a module selection command that deselects any currentlyselected analysis module. It also directs commands in the next section to the screenmodule, such as setstipple.3.6 Commands common to all analysis modulesThis section describes commands common to all analysis modules, but whose implementationmay vary depending on the currently selected module.outputUsage: outputOutput the layout to the currently selected analysis module. The aredependent on the currently selected analysis module.setscaleUsage: setscaleSet the scale in the currently selected analysis module. Interpretation of the scale factor isdependent on the currently selected analysis module.setstippleUsage: setstippleLoad the stipple for the given in the currently selected analysis module. The is a single number. Interpretation of the stipple is dependent on the currentlyselected analysis module.setcolorUsage: setcolorLoad the color for the given in the currently selected analysis module. The is a JaM array of three numbers. Interpretation of the color is dependent on the currentlyselected analysis module.4.0 REFERENCES[JaM] JaM, John Warnock and Martin Newell, [Indigo]JaM.bravo. fuG b2^B([ s2Xu&su'2WQ2U82Rh(O=w2Lu*)2J2GbsEusDZu!6B6ARx u >&+2:929w426Ks4us3CuN142.s-us+uA*42&s %Xus #uF"P4& 2susuTM  st2uB K;lXMagic9[Mead and Conway] Introduction to VLSI Systems, Carver Mead and Lynn Conway, AddisonWesley, 1980. fuG2bxu 2` h ]';l Magic105.0 INDEX OF COMMANDSatorigin3.4boundbox => 3.4clipfit3.4draw3.4drcA4.3 ercA3.2extractorA2.3fit3.4 invis3.4 mannA6.3more3.4outline3.4 output3.6Press: <1st page row><1st page column> outputA1.3Extractor: outputA2.3DRC: outputA4.3Versatec: <1st strip> outputA5.3Mann: outputA6.3 parsecif3.3 parseic3.3 pressA1.3 readcif3.3 readic3.3reset3.2screen3.5Scroll3.4 scrollto3.4 setcolor3.6 setscale3.6 setstipple3.6 show3.4unoutline3.4versatecA5.3 vis3.4Window3.4Zoom3.4 fuG? bstst2^sB@u2]nsuB@2[sB@u2ZfsB@u2XsB@u2W^sB@u2UsB@u2TVsB@u2R sB@u2QNsB@u2OsB@u2NFsB@u2L sB@u2K>&2I/sB@u2H6sB@u2FsB@u2E-,sB@u2CsB@u2B% sB@u2@$sB@u2?sB@u2= sB@u2<$sB@u2:sB@u29 sB@u27sB@u26sB@u24sB@u22sB@u21ys B@u2/sB@u2.qsB@u2,sB@u2+i sB@u2)sB@u2(`sB@uR #j6DMagic116.0 APPENDICES fuG? bst ^ ! `Magic12A1. Color Press ModuleThe Color Press module produces color press files of the layout. The layout is split into separatepages that are generated on separate files. The image on each page overlaps its neighbor by 1/4",to allow for inaccuracies in trimming the paper. Each page is identified with page number, filename, and user name.A1.1 InitializationFirst get and initialize Magic for Press output as described under 2.3 "Where to find Magic",either by retrieving and executing[Indigo]DStar>MagicPress.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA1.2 Command file usageTwo .do files are provided for converting a single layout to Color Press output, one for CIFinput and one for Icarus:CIFtoPress.doICtoPress.doThese can be run using Do.run and answering the prompts for parameters, or by providingparameters on the command line in the form:Do CIFtoPress Four optional parameters are supported, to give the indices of the first and last pages to begenerated. These can be given only from the command line which then takes the form:Do CIFtoPress ^ <1st page row><1st page column>This will fit the entire layout to the requested, and will generatethe pages in row order between <1st page row><1st page column> and , inclusive, in row order. Any of the parameters can be out of range in which case themaximum or minimum permissible parameter value is used. Each page is output to a separatepress file, the names being of the form: filename-i-j.press, where i and j are the row andcolumn numbers of the page. If the filename starts with a fileserver name the pages are writtento the file server as they are generated. This minimizes the need for local file space for thepress files. Be warned that you must be logged in to the executive with a valid password beforeusing this option.A1.3 Interactive usageInteractive use of Magic for generating Press output is useful for experimenting with the fit ofthe layout to a given set of pages, for extracting a piece of the layout for printing, and forsuperimposing several layouts for printing.pressUsage: pressSelect the Press module for subsequent output. While the press module is selected theviewing area is constrained to be the shape of the array of pages requested. The outlines of fuG? bs ^uA" ]n+7 [ T Zf W;2T";2R"O`2L5I  E2B9#2A.> < 29TG27+(4921yL2/<(,;(+EA2("<2&L2%)52#<2" R2 O2_2}Y2 2B2I2+2os u"s gu&0 8% =]oMagic13the pages are superimposed on the view. e.g.2 3 presswill select press for output on an array of 2 pages down by 3 pages across.Press can be reselected for adjusting the array of pages. Each time press is selected, amaximal-size array of pages of the specified aspect ratio is laid out within the existingclipping region, and then the clipping region is shrunk to conform to the aspect ratio of thenew page array. Thus, reselecting press with a different aspect ratio will cause the clippingregion to shrink. In order to scale the drawing to fit within the new, smaller clippingregion, use the fit command. If repeated use of press leads to an awkwardly smallclipping region, it's size may be reset using the blue mouse bug Window command, asdescribed in Section 3.4 Viewing.outputUsage:<1st page row><1st page column> outputOutput the current contents of the viewing area to the press module to generate the pagesin row order between those indicated in the first four parameters, inclusive. Any of theparameters can be out of range in which case the maximum or minimum permissibleparameter value is used. Each page is output to a separate press file, the names being ofthe form: filename-i-j.press, where i and j are the row and column numbers of the page. Ifthe filename starts with a fileserver name the pages are written to the file server as they aregenerated. This minimizes the need for local file space for the press files. Be warned thatyou must be logged in to the executive with a valid password before using this option. e.g.1 1 1000 1000 (chip) outputwill output all pages (assuming the selected array is smaller than 1000x1000) onto files chip-1-1.press, chip-1-2.press, ..., chip-2-1.press, ... etc.setcolorUsage: setcolorSet the hue, saturation, and brightness of the given layer to the values in the color array,which must contain 3 numbers. e.g.(NM) [ 160 255 255 ] setcolorwill set the color of layer NM to be bright blue.The current setting of the color is retained in the JaM virtual memory, and is automaticallyrestored on subsequent runs. fuG?b-(^w[uKXyuyuW;U@T@R:QyuyuOPM!2JsIPuG!FH sDu/*C@BA:@7&4>)2=/4+;<!:'[(6w3uI2L82/!s-us,u*2*"('iw$>u1!#9b 8KMagic14A2. Circuit Extractor ModuleThe Circuit Extractor Module generates a switch level circuit representation of the layout. Itunderstands only NMOS technology, including buried contacts, but is not sensitive to design rules.The extractor generates two files - a .sim file for subsequent electrical rules checking [erc] and/orsimulation [SimMOS], and a .nodes file that is a legitimate cif file containing all names with theirpositions, including names generated for unnamed nodes. This file can subsequently be read backin and combined with the original layout for viewing or plotting of the layout with node numbers.Names in the input layout file are interpreted. Each name is taken to name the point thatdetermines the position of the name. Each of these points should be inside a unique layer ofgeometry, and it is taken to name the node of which that piece of geometry is a part. Names overno geometry are reported. Names of more than one node are also reported, and the name isassigned to one of the nodes, generated names being used for the other nodes. A node can benamed more than once. However, if the names differ a warning is output and one of the names isabandoned.Note that the names Vdd and Gnd are required by subsequent circuit analysis tools. Beware oflocal names that appear within symbols that are used more than once. All names are global, andtherefore the nodes within symbols that have the same name will effectively all be connectedtogether.A2.1 InitializationFirst get and initialize Magic for Circuit Extraction as described under 2.3 "Where to findMagic", either by retrieving and executing[Indigo]DStar>MagicExtractor.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA2.2 Command file usageTwo .do files are provided for extracting the circuit from a single layout, one for CIF input andone for Icarus:CIFtoExtractor.doICtoExtractor.doThese can be run using Do.run and answering the prompts for parameters. Two files aregenerated: a .sim file, which contains the extracted circuit; and a .nodes file that contains alegitimate CIF file giving the node names, including generated names.A2.3 Interactive usageInteractive use of Magic for Circuit Extraction is useful for extracting a piece of the layout forextraction, and for avoiding the need to restart Magic and read the layout again in order toexamine the results of the extraction.extractorUsage: extractorSelect the Circuit Extractor module for subsequent output.. e.g.extractor fuG? bs ^u5* ]nR [^ Zf+9 X=# W^C T3R R] Q+-4 O? N#'5 L\ K GJ Fk_ D'5 Cc @72= L2;*8]#2512 .2+P2*+'%|2"P++2 ="2HE 2$>2m0,2&2s:usuA( w C>[Magic15outputUsage: outputExtract the circuit represented by that part of the layout currently in the viewing area. Twofiles are generated: filename.sim, which contains the extracted circuit; and filename.nodesthat contains a legitimate CIF file giving the node names, included generated names. e.g.(chip) outputwill generate chip.sim and chip.nodes. fuG?2bs`u s_uD][\:(Xw Uu&j RD8>Magic16A3. Electrical Rules Checking ModuleThe Electrical Rules Checking Module, ERC, checks the .sim file (see A2 above) for conformancewith Mead/Conway [Mead/Conway] electrical rules for NMOS. ERC generates one file -.erclog file that lists all electrical rule violations, in show syntax;The show and more commands described in Section 3.4 are useful for examining the .erclog file.A3.1 InitializationFirst get and initialize Magic for Circuit Extraction as described under 2.3 "Where to findMagic", either by retrieving and executing[Indigo]DStar>MagicExtractor.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA3.2 Interactive usageInteractive use of Magic for ERC is useful for extracting a piece of the layout and checking it,and for avoiding the need to restart Magic and read the layout again in order to examine theresults.ercUsage: ercERC the circuit represented by the .sim file previously generated by the extractor. and are two floating point numbers that specify the range ofacceptable ratios for the ratio checks. One file is generated: filename.erclog, which containsa log of all electrical rule violations. Summary information on the electrical characteristicsis output to the typescript window. e.g.(chip) 3.5 4.5 ercwill generate chip.erclog and display a summary in the typescript window.A convenient way of viewing the results is to use the show and more commands describedin Section 3.4. Do this by showing the .erclog file.A3.4 ExplanationThe summary messages that appear in the typescript window arenodes, transistors, pullups : %d %d %dpullups and non-inverting superbuffers : %d %dinverting superbuffers and unknowns : %d %dSum of 1/Z's for all pullups : %d(syntax error : %s)where %d is a decimal number. The decimal numbers are just counts of the designated types ofcomponents found in the circuit by the electrical rules checker. The sum of the 1/Z's can beused to estimate maximum power dissipation of the circuit by multiplying by the appropriatenumber for the process you are using (approximately .6 milliwatts per 1/Z for NSIL-II). Thesyntax error message shouldn't appear unless your files are confused. fuG? bs$ ^uN ]nS;ZC;xu Wxuxu1 S2PL2O=*L#2HE B2?dA2=\2<\290s7us6(u74 E3 @1@0((,w)uI&#xuxu%xu !2=w& ..!2uwu"32LV2 [2 DE2 w u9 y=]Magic17The messages that appear in the .erclog file are listed below in alphabetical order with shortexplanations of what they might mean. %n indicates a node name in the message.Assuming lightning arrested node is an Input : %nA lightning arrestor is a transistor whose gate and drain are Gnd. The source of that transistoris assumed to be a TTL level input from off chip. Note that a TTL high level is approximatelytwo thresholds below an NMOS restored high. ERC assumes this when checking thresholdsand ratios.depletion transitor not a pullup or a superbuffer : d %n %n %nA depletion mode transistor that might be part of a function block?Gate is GND : e %n %n %nIn the listed transistor the gate is Gnd but the transistor is not of the lightning arrestor type.You may have an instance of a standard cell in which one of the inputs is always 0.gate is the same node as source or drain : e %n %n %nAn unusual thing to do.Gate is VDD : e %n %n %nIn the listed transistor the gate is Vdd. You may have an instance of a standard cell in whichone of the inputs is always 1.Node can never be given a value : %nThere is no path to Gnd or to Vdd from this node.Node can never be set to 1 : %nThere is no path to Vdd from this node.Node can never be set to 0 : %nThere is no path to Gnd from this node.node might be VDD : d %n %n %nA depletion mode transistor with gate tied to source. The drain is usually Vdd, but not in thiscase.Node name only occurs once : %nA dangling node. Can't possibly be useful. Maybe it's an output that you are not using from astandard cell.Node pulled up more than once : %nDo you want to do this?Non-restored node controlling input : %n %n fuG?2bS 2`'wu&(]nw12ZCuR2X^2W;=2U (Rw%2O`uC(L5w2I u,62GD(DZw52A.u(>w2:uF29T(6(w$22u1(/w2,u'(){w2&Ou'(#$w2uP2t(Iw2u U2 (nw"2Cu( w+ DStar>MagicDRC.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA4.2 Command file usageTwo .do files are provided for checking the design rules of a single layout, one for CIF inputand one for Icarus:CIFtoDRC.doICtoDRC.doThese can be run using Do.run and answering the prompts for parameters.A4.3 Interactive usageInteractive use of Magic for DRC is useful for extracting a piece of the layout, and for avoidingthe need to restart Magic and read the layout again in order to examine the results.drcUsage: drcSelect the DRC module for subsequent output.. e.g.drcoutputUsage: outputDRC the circuit represented by that part of the layout currently in the viewing area. Twofiles are generated: filename.drclog, which contains a log of all design rule violations; andfilename.drv that is a legitimate CIF file containing polygons on two layers to indicate thelocation and extent of design rule violations. e.g.(chip) outputwill generate chip.drclog and chip.drv. fuG? bs ^u$1% ]nP;ZC7xu;W';;U% Rhxuxu* O=2LG2JGb2D7A  =2:T 2906 4 21UG .*2*;&2){T2&Os$us#Gu3( w2slu su/+d]X\3(1w u'V =YMMagic20A convenient way of viewing the results is to use the show and more commands describedin Section 3.4. Do this by adding the .drv file into the current data base, and then showingthe .drclog file. fuG?b#xuxu`>xu_ [8 h,Magic21A5. Versatec Plotting ModuleThe Versatec Plotting Module, MagicVersatec, generates a ``.bits'' format file for subsequent printingusing the ``Oliver'' program at the Versatec plotter. The layout is split into separate strips that aregenerated on separate files.A5.1 InitializationFirst get and initialize Magic for Versatec output as described under 2.3 "Where to find Magic",either by retrieving and executing[Indigo]DStar>MagicVersatec.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA5.2 Command file usageTwo .do files are provided for converting a single layout to Versatec output, one for CIF inputand one for Icarus:CIFtoVersatec.doICtoVersatec.doThese can be run using Do.run and answering the prompts for parameters, or by providingparameters on the command line in the form:Do CIFtoVersatec Two optional parameters are supported, to give the indices of the first and last stripts to begenerated. These can be given only from the command line which then takes the form:Do CIFtoVersatec ^ <1st strip>This will fit the entire layout to the requested, and will generate the stripsbetween <1st strip> and , inclusive. Any of the parameters can be out of range inwhich case the maximum or minimum permissible parameter value is used. Each strip is outputto a separate bits file, the names being of the form: filename-i.bits, where i is the strip number.Caution should be taken to insure enough disk space is present when generating a large ``.bits''file; a typical plot 36" wide by 23" tall takes about 2000 Alto pages, depending on thecomplexity, which affects the effectiveness of the run-length coding in the file. If the filenamestarts with a fileserver name (e.g. [ivy]filename) each strip is written to the file server after it isgenerated. This minimizes the need for local file space for the bits files. Be warned that youmust be logged in to the executive with a valid password before using this option.A5.3 Interactive usageInteractive use of Magic for generating Versatec output is useful for experimenting with the fitof the layout to a given set of strips, for extracting a piece of the layout for printing, and forsuperimposing several layouts for printing.versatecUsage: versatecSelect the Versatec module for subsequent output. While the versatec module is selected fuG? bs ^u Z ]nJ [ X2UW2T"P"2MJ Gb2D7M2B?>2:G29T+(6(422K21y<(.M6(,2)&;2(1-2&L2%K2!>"2 bW2=%2Z[ 2#=2RR '2\2wC2+2 s Du" > y=]Magic22the outlines of the strips are superimposed on the view. e.g.2 versatecwill select versatec for output on 2 strips. Versatec can be reselected for adjusting thenumber of strips.outputUsage:<1st strip> outputOutput the current contents of the viewing area to the versatec module to generate thestrips between those indicated in the first two parameters, inclusive. Either of theparameters can be out of range in which case the maximum or minimum permissibleparameter value is used. Each strip is output to a separate bits file, the names being of theform: filename-i.bits, where i is the number of the strip.1 1000 (chip) outputwill output all strips (assuming the selected number is smaller than 1000) onto files chip-1.bits, chip-2.bits, ... etc.If the filename starts with a fileserver name each strip is written to the file server after it isgenerated. This minimizes the need for local file space for the bits files. Be warned thatyou must be logged in to the executive with a valid password before using this option. e.g.1 1000 ([Ivy]chip) outputsetstippleUsage: setstippleSet the stipple vector of the given layer to the values in the stipple array, which mustcontain 4 numbers. e.g.(NM) [ 12345 5432 12345 5432 ] setstippleA5.4 Using Oliver to plotThe procedure for plotting a ``.bits'' file is: Spin up the ``current press'' Alto disk and thepublic Trident pack on the Versatec Alto, and place the Versatec plotter on-line. Boot and type``@OliverServer'' On your Dolphin or Dorado workstation (on which you ran Magic-Versatec) use EFTP.run (available from [Maxc]) to send the ``.bits'' file to the VersatecAlto (the VLSI System Design Area has chosen the name ``Vice'' as in ''Vice-Versatec'' for theirAlto with net address 3#166#). Oliver should begin plotting the file as soon as it istransferred. fuG?b>(^wu[L ZC2WsUu"sTu8R GQ:O.0M:(JwGuO F$B20Au@?S(DStar>MagicMann.cmor by getting everything from[Indigo]DStar>UpdateMagic.cmA6.2 Command file usageTwo .do files are provided for converting a single layout to Mann output, one for CIF inputand one for Icarus:CIFtoMann.doICtoMann.doThese can be run using Do.run and answering the prompts for parameters, or by providingparameters on the command line in the form:Do CIFtoMann must be one of the keywords english or metric. This will generate a Mann directory fileoutfile.mann, and a set of files of the form outfile-i.mann, where i is the layer number.Correspondence between layer numbers and layer names is given on the typescript.Dimensions in the input file are taken to be dimensions on the wafer, after reduction of thereticle by a factor of 10. For english units no attempt is made to scale from CIF units(hundredths of a micron) to english units. Rather, 1 CIF unit will come out as 0.01 mils on thewafer.A6.3 Interactive usageInteractive use of Magic for generating Mann output is useful for extracting a piece of thelayout for conversion, and for superimposing several layouts for printing.mannUsage: mannSelect the Mann module for subsequent output. The single parameter must be oneof the keywords english or metric. e.g.english mannwill select the Mann output module in english units.outputUsage: outputConvert the current contents of the viewing area to Mann format. fuG? bs ^uL ]nB [J X2U O2T"P2MJ Gb2D7)22B? > 2:G29T+(6(%22$xuxu&21yB2/P2,>2+E'12)C2(= %2!'42 bJ27sus/u Mxuxu(wxTu42)s u s uBb =\2Magic24This will generate a Mann directory file filename.mann, and a set of files of the formfilename-i.mann, where i is the layer number. Correspondence between layer numbers andlayer names is given on the typescript. e.g.(chip) outputwill generate the directory file chip.mann, and the layer files chip-1.mann, chip-2.mann, ...etc. fuG?bV`=_-([w XuLW;P S8C4Magic25A7. Ramtek Plotting ModuleThe Ramtek Plotting Module, MagicRamtek, generates a ``.ram'' format file for subsequent printingusing the ``Aries'' program at the Ramtek plotter. The layout is split into separate strips that aregenerated on separate files.A7.1 InitializationFirst get and initialize Magic for Ramtek output as described under 2.3 "Where to find Magic",by retrieving and executing[Indigo]DStar>UpdateMagic.cmA7.2 Command file usageTwo .do files are provided for converting a single layout to Ramtek output, one for CIF inputand one for Icarus:CIFtoRamtek.doICtoRamtek.doThese can be run using Do.run and answering the prompts for parameters, or by providingparameters on the command line in the form:Do CIFtoRamtek Two optional parameters are supported, to give the indices of the first and last stripts to begenerated. These can be given only from the command line which then takes the form:Do CIFtoRamtek ^ <1st strip>This will fit the entire layout to the requested, and will generate the stripsbetween <1st strip> and , inclusive. Any of the parameters can be out of range inwhich case the maximum or minimum permissible parameter value is used. Each strip is outputto a separate ``.ram'' file, the names being of the form: filename-i.ram, where i is the stripnumber.Caution should be taken to insure enough disk space is present when generating a large ``.ram''file; a typical plot 15" wide by 20" tall takes about 400 Alto pages, depending on thecomplexity, which affects the effectiveness of the run-length coding in the file. If the filenamestarts with a fileserver name (e.g. [ivy]filename) each strip is written to the file server after it isgenerated. This minimizes the need for local file space for the ram files. Be warned that youmust be logged in to the executive with a valid password before using this option.A7.3 Interactive usageInteractive use of Magic for generating Ramtek output is useful for experimenting with the fitof the layout to a given set of strips, for extracting a piece of the layout for printing, and forsuperimposing several layouts for printing.ramtekUsage: ramtekSelect the Ramtek module for subsequent output. While the ramtek module is selected theoutlines of the strips are superimposed on the view. e.g. fuG? bs ^ua ]n32 [ X2UF2TP M2JC2I E DZ 2A.G2?+(<229TK27<(44(3 2/&;2.q1-2,L2+iB2)2&!>2%5V2#=%2"-[ 2 '82%R 2?2JC2+2su/): l =ZDMagic262 ramtekwill select ramtek for output on 2 strips. Ramtek can be reselected for adjusting thenumber of strips.outputUsage:<1st strip> outputOutput the current contents of the viewing area to the ramtek module to generate the stripsbetween those indicated in the first two parameters, inclusive. Either of the parameters canbe out of range in which case the maximum or minimum permissible parameter value isused. Each strip is output to a separate ram file, the names being of the form: filename-i.ram, where i is the number of the strip.1 1000 (chip) outputwill output all strips (assuming the selected number is smaller than 1000) onto files chip-1.ram, chip-2.ram, ... etc.If the filename starts with a fileserver name each strip is written to the file server after it isgenerated. This minimizes the need for local file space for the ram files. Be warned thatyou must be logged in to the executive with a valid password before using this option. e.g.1 1000 ([Ivy]chip) outputsetstippleUsage: setstippleSet the stipple vector of the given layer to the values in the stipple array, which mustcontain 4 numbers in [0..15]. e.g.(NM) [ 0 6 9 15 ] setstippleEach of the four numbers represents a 2x2 array, in Black, Cyan, Magenta, and Yellow.respectively, with bits weighted as shown:2184The areas of the plot occupied by the given layer are tiled with repetitions of the pattern sodefined. The example above thus yields a red and green checkerboard.A7.4 Using Aries to plotA simple interface program, Aries.run, is available from [Indigo]Magic> to drive theprinter from ".ram" format color-bitmap files. (People wishing to write other software togenerate ".ram" files will find the format documented in[Indigo]DStar>RamFileFormat.Press.) An Alto II, with network name ``Color'' isinterfaced with the 4100 in the VLSI Purple Lab. A disk labelled ``Pasco Ramtek'' ismaintained with a current copy of Aries.Run.Color is now running in Server mode for remote, unattended operation. It accepts multiple``.ram'' files via the Alto Pup FTP protocol, and prints them when the connection is closed.Files are deleted after they are printed. To use, you need only type (to your Alto executive),FTP Color store File1.ram File2.ram ...Color does not spool files and does not respond to a request for connection if it is busyprinting. If your connection attempt fails, Color may be down or just busy, and you should fuG?(bw^u*,]n2ZCsXu"sW;u QU(5T3JR:Q+*(MwJuO IPF$20DO CS(?w2 ramtek 1 99 ([Color]temp) outputand your design will be transmitted and printed, strip-by-strip, as it is generated. fuG?2b2^]2]n(ZCw32WuT V