SIL, ANALYZE, GOBBLE, BUILDReference Manualby C.P. Thacker, R.F. Sproull, R.D. BatesFebruary 20, 1981This manual describes the Palo Alto Design Automation system, which includes SIL, aninteractive illustrator; ANALYZE, a postprocessor for SIL output; GOBBLE or ROUTE,wirelisting programs; BUILD, a data-management aid, and several printing utilities. This document is for Xerox internal use onlyThis document is for Xerox internal use onlyXEROXElectronic Operations DepartmentLos Angeles / Palo AltoPALO ALTO RESEARCH CENTER3333 Coyote Hill Road / Palo Alto / California 94304 S_p P NFqr' Iq >&s6 <A :S 5xtF|rX,|h,)Wu)`r)`qF)`rX)`2qF4@ >Qh.\Sil, Analyze, Gobble, Build Reference Manual1IntroductionThis document is a description of a group of programs intended to aid in the documentation andconstruction of digital logic systems. The primary goal in the creation of these programs was toautomate a number of system-building tasks which have previously been difficult to do well,particularly in an environment which has no support staff for design documentation. In addition,the system provides a de facto documentation standard, since its capabilities are limited andspecialized. The complete logic design system consists of: Sil, an interactive drawing program usedto produce logic diagrams; Analyze, which creates a file of node interconnection and componentinformation from the graphic representation created by the designer with Sil; Gobble or Route,wirelisting programs which merges a number of files generated by Analyze into a complete wirelistfor a circuit board; and an additional program available to operate the semi-automatic stitchweldingfacility at Palo Alto, given the Gobble or Route wirelist as input.Making simple illustrationsAlthough the system described here was built primarily to offer help in design documentation anddesign automation, portions of it are useful for making simple illustrations for documents. Thereader interested only in such facilities should read about Sil only.Technology and construction processThe logic design system is specialized for a hardware construction method in which integratedcircuits are assembled on standard cards, which are in turn assembled into a standard backplane.Both the boards and backplane are interconnected using Wire-Wrap, Stitchweld, or a similarinterconnect scheme. The primary documentation for such a system consists of logic diagrams forthe cards and an indication of the arrangement of the cards in the backplane.Secondary documentation, which is derivable from the primary documentation, includes wirelists forthe cards and backpanels, IC loading charts for the cards, and a number of summaries to aid indebugging, such as pin lists and signal name lists.Using the design-automation systemBecause most hardware-construction tasks are joint efforts, it is important that the suite of programsdescribed in this manual are used in similar ways by all designers on the team. A number ofconventions for using the system have been developed over time, and are offered in this manual asa help in organizing a large design. Many of the conventions have resulted from the tremendouslydifficult problem of managing different versions of drawings, numerous Alto files produced orrequired by the system, and the like.fpX,HY _q \1pH ZH Y)5& W3. V!rp3 TO ST QW PX N;) MC J#rX G?p,4 E%; D7E ARrX# >mpC <E ;eP 9G 8]M 5x4. 3$: 2p3 /rX" ,pP +"@ )q p L (10 &F %% \ $>C@Sil, Analyze, Gobble, Build Reference Manual2Files you need and where to find themThis section summarizes the files you will need on your Alto in order to run the various systemsdescribed in this manual. All files are on the MAXC2 file system under the SIL directory.SIL -- for illustration use onlySil.RunHelvetica10.AlHelvetica7.AlTemplate64.Al (use to draw circles and diagonal lines)Template64.lb5 (use to draw bold circles and diagonal lines)+changes to your User.cm; see UserCmSliceSIL -- for use in logic designSil.RunHelvetica10.AlHelvetica7.AlGates32.AlSil.Lb5 to Sil.Lb8 "loaded" from SilLibraries.dmLogicBlock.Sil (this is a prototype title block)Documentation on current libraries can be found onECLDataSheets.Press and TTLDataSheets.Press.ANALYZEAnalyze.RunTtlDict.AnalyzeEclDict.Analyze (if you are using ECL)GOBBLE/ROUTE/BUILDGobble.Run (obsolete) or Route.RunRouteAub.brBuild.RunTHIS MANUALSilManual.PressfpX,HY _q% \1pE ZA WVDT S< Q7P4=N) KJGH G? E D70B0?2>J, ;e9 8]6' 32p"0 /h , * )4=>Sil, Analyze, Gobble, Build Reference Manual3SILSil is a SImple Illustrator designed for (but not limited to) the creation of logic diagrams. It allowsthe user to create pictures composed of variable width horizontal or vertical lines, and text strings inone of three user-specified fonts. Text fonts may be specified with bold face and/or italic face, andSil will modify the screen font to so indicate the face. In addition to the three text fonts, a specialfont is available which includes most of the symbols on a standard logic designer's draftingtemplate. Sil also allows the creation of display macros, which are composed of a number of objectsthat the user prefers to name and manipulate as a single unit. In addition to user-specified macros,Sil can use symbols from any of five Macro Libraries, which are used to hold commonly-usedsymbols (e.g. logic symbols). Drawings created with Sil may be formatted and printed on Pressprinters using the Sil/H to create a press file "Sil.press" and send it to a printer by invokingEmpress.run. Sil/P will also create the "Sil.press" file but will not invoke Empress.run.Although Sil is (was) simple, it is certainly appropriate for new users to read this descriptioncompletely at least once before using Sil, as many of the commands and features are not obvious.Starting SILThe first time you use Sil, or after you have changed font names in user.cm or changed libraries,you must run Sil/I. This will cause Sil to read your user.cm entries and build up two scratch files(Sil.fps and Sil.fonts) for future fast access.Sil is subsequently started by typing "Sil(CR)" or "Sil filename(CR)" to the Executive. After a fewseconds, the screen will be cleared, and a single status line of text will appear at the top. If afilename is specified then Sil will immediatly Input that file.A typical status line is:GLMF: 4111b TF0N Space: 12000 Selections: 0 X: 0 Y: 0These quantities have the following significance:GLMF: 4111bG: is the current Grid. The cursor and all objects are constrained to lie on points whichare multiples of the grid spacing. The grid may be set to 2**n (n=0-7) by typing ^G(Control-G)n. The standard grid for design-automation work is 4, i.e, ^G2.L: is the current width for any lines added to the picture. The line width is set to n bytyping ^Wn (n=1-9).M: is the current magnification. The magnification is changed using the ^E command.F: is the current font. Sil has ten fonts (0-9), the first four of which are text fonts whichmay be set by the user (see "Fonts"). Fonts four through nine are macro names (see"Macros"). For fonts, an optional "b" and/or "i" may be displayed to indicate that textentries will be added in bold or italics face as appropriate.TF0NThe "T", is a flag to indicate that macro expansion will go one level deep only (see"Macros" under ^H and ^L).The "F" is a flag to indicate what vertical offset is to apply when a carriage return istyped (see ylock flag under ^Y).The "0" indicates the state of the storage compacter (an internal Sil function), which whenfpX,HY _q \1pp[J\1<[\1P Z'A Y).8 WH V!9# T*r p+ SK Qrp& PU NH MZ J#` HH Erp B-4 ARI ?/ <7- ;eJ 9? 6X 4q6 12p12.p +"qprpD)7(K%5qpX# qp3"qprp3c9S[=2vqp-r p)qpN rp qpT  y=]MSil, Analyze, Gobble, Build Reference Manual4non-zero indicates that Sil has not yet completed updates from that last edit. You do nothave to wait for one edit to be completed before initiating the next.The "N" indacates the default color (Neutral in this case), and is changed by the ^Fcommand.Space: 12000Indicates the number of words of space remaining in the storage pool for objects. A linerequires five words for its description, a string requires five words plus one word for everytwo characters in the string.Selections: 0Indicates how many objects are currently selected. Selected objects are displayed gray(halftone) rather than black. There are three types of objects in Sil, text strings, verticalor horizontal lines, and backgrounds. Strings may contain normal characters or macronames, but an entire string must be in a single font (no ^F during typein), and whencomplete becomes a single object. Most Sil commands which affect the picture changeonly the selected objects.X: 0 Y: 0These are the coordinates of the cursor at the time of the last depression of the left (ortop) mouse button. X=0, Y=0 corresponds to the upper left corner of the screen; Yincreases downward, X increases to the right. If any mouse button is kept depressed whilemoving the mouse, the frequency of refresh of the status line is increased and thecoordinates of the cursor are displayed. This is provided to aid in debugging drawingsprepared for Analyze, which reports errors in terms of screen coordinates.In addition to these quantities, Sil displays messages and interacts with the user via informationwhich is placed at the end of the status line when necessary.Mice, Marks, and ModesMice have three buttons, and come in two types. We will refer to depressions of the left or top(closest to the cord) button as mark, depressions of the middle button as draw, and depressions ofthe right or bottom button as select. Actions occur when the button is depressed, as opposed towhen it is released.There are three special objects whose positions are controlled (usually) by the mouse:The cursor is a small arrow, and moves as the mouse is moved. When the cursor is usedto point at objects, the tip of the arrow should be positioned over the object.The mark appears as a short vertical bar. On every mark (depression of the left or topmouse button), the mark is moved so that its upper left corner is coincident with thecursor.The origin is a small horizontal bar. The origin provides a reference point when movingor copying selected objects.Both the origin and the mark blink approximately twice per second.Sil has three modes: Normal mode, in which lines are added to the picture or objects are selectedfor further action, magnified mode, described later, and add text mode, in which text strings areadded to the picture. In the last mode, the message ADD TEXT is displayed at the end of thestatus line.fpX,HY_V]EZqpMY)2Up S3&QJP2M, JG)rp&H4*G?=E4D7AB2?<3';eR9J8]J6rp+5UJ 2pR 0= .rX +"pQ )qp%qp (qp1 & #V rp AHOcrp qp2#[vrp<  B )r p@ r prp (4   \ U<]6Sil, Analyze, Gobble, Build Reference Manual5In normal mode, depressions of the mouse buttons, sometimes in conjunction with depressions ofthe control and/or left-hand shift keys, have the following meanings:mark: Move the mark to the current cursor position.shift-mark: Moves the origin to the current position.control-mark: Moves the mark to the current cursor position, then moves all selected objects sothat their origin is at the mark, selects the objects which were moved, and deselects any previouslyselected objects. This command is equivalent to mark-^X (see below).control/shift-mark: Same as control-mark except that any attached lines are not stretched. Seedescription of mark-^X below.draw: Draw a line between the mark and the current cursor position. The line will be horizontalif the difference between the y-coordinates is less than that of the x-coordinates, otherwise it willbe vertical. The mark is moved to the end of the new line closest to the cursor, the line becomesselected, any previously selected objects are deselected, and the origin is moved to the upper leftcorner of the new line.control-draw: Moves the mark to the current cursor position, then copies all selected objects suchthat their origin is at the mark. It then selects all copied items, and deselects any previouslyselected objects. This command is equivalent to mark-^C (see below).shift-draw: Deletes just the item pointed to, not the selected items.control/shift-draw: Undeletes and selects the set of objects last deleted with shift-draw or ^D (seebelow).select: The object at which the cursor is pointing is selected, any previously selected objects aredeselected, and the origin is moved to the upper left corner of the selected object. When objectsoverlap, the object with the smallest parameter is selected. If there are no objects of any typeunder the cursor, nothing is selected, and the origin is moved to be coincident with the cursor.control-select: Same as select, except that previously selected objects are not deselected.shift-select: Selects all objects which lie fully within the rectangular area bounded by the currentcursor position and the mark. The origin is moved to the upper left corner of the selected area,and all previously selected objects are deselected.control/shift-select: Deselects the item pointed to while leaving the origin at its current location.KeyboardIn normal mode, Sil is awaiting commands. The initial character of every command is a controlcharacter. If a character is typed which is not a control character or space, ADD TEXT mode isentered. In this mode, character strings in the current font (and face) are put into the picture atthe mark. Strings are terminated by typing carriage return or ESC, or by depressing any mousebutton. Remember that each string is a separate object.The following control characters are available during input to facilitate editing:BSBackspace one character^ABackspace one character^WBackspace one word^QBackspace the entire string but don't leave the mode^SConvert the last character typed into a control character (i.e. "A^S >^A)DELwhich clears anything typed and returns to normal mode without modifying thepicture.fpX,HY _J ]E Zqp0 Wq p, Tq p? S_;) Q1qp Nqpq p7 Mrqp JqpO I L G"@ FQ D} Aq pI @a >1qp ;q p; 8qp=q pqp 7B 4^qpH 2&< 1UE /.2 ,q pN *q pJ (J '3 $qp2 !6r QpH \ Id L A8 \RTL4 I D @  y<]@Sil, Analyze, Gobble, Build Reference Manual6Once a string has been entered, it can be modified via the BS command (see Commands below).CommandsSil commands consist of single control characters, control characters followed by single digits orcharacters, or more complex commands which carry on brief interactions with the user viamessages in the status line. Only the first character of multi-character commands uses the CTRLkey. Subsequent characters, if any, are typed normally. In a couple of instances, special meaningis attributed if the Control and Shift keys are held down simultaneously when the command key istyped. The notation used for this will be ^shA ('control shift A'). The commands are: ^A: Display text from an "Alternate text file". The first time ^A is typed, the user is asked tosupply a file name, that file is opened, and the first text line is displayed in place of the statusline. For subsequent occurrences of ^A, if the Status line still displays text from the file, then thenext line of the file is displayed, otherwise the current line is redisplayed.This feature is intended primarily for viewing Analyze error files while in Sil. Whenreading a line of text, Sil looks for possible x,y coordinates, as generated by Analyze and,if found, moves the Mark to that location. The text file is closed when the last line isread or after two successive ^K commands (see below). A ^shA will backup one line.This will go back only one line. ^B: Draws a box. The mark and the origin define the corners of the box. The box is selected,previously selected objects are deselected, and the origin is moved to the upper left corner of thebox. ^shB: Draws a rectangular background. The mark and the origin define the corners of the area.This command is useful in creating colored drawings. Text and lines drawn over a backgroundwill "work" correctly for color printers, but will disappear on a black printer (backgrounds may bedisabled during press formatting with the use of "Sil/p 0/b foo.sil" in the command line).Backgrounds over backgrounds will print such that the last background created with Sil willappear over previously created backgrounds. ^C: Copies all selected items and positions them away from the original items by the offset ofthe mark from the origin. The copy is selected, and previously selected items are deselected. Theorigin is moved to the mark, so that ^C can be done repeatedly. ^D: Deletes all selected items from the picture. Objects are not immediately lost, but aremarked as deleted 'level 1' and no longer displayed. All objects already marked deleted have theirlevel incremented by 1. When objects exceed level 5 they are discarded and their space reclaimed. ^E: Expands the rectangular area defined by the two preceding marks so that it fills the screen(as nearly as possible). The magnification factor (2-9) is shown in the status line. A second ^Eexits this mode. ^Fn: Sets the current font, face, or color according to the following tablen=0-9:Font = n.n=b/iset font face to bold or italic respectivelyn=B/Iset font face to not bold or not italic respectivelyn=D,R,O,Y,L,G,T,C,A,V,U,M,P,S,N,Wset color to DarkBrown, Red, Orange, Yellow, Lime, Green, Turquoise, Cyan,Aqua, Violet, Ultaviolet, Magenta, Pink, Smoke, Neutral (black), or Whiterespectively.All new items are created according to these parameters as appropriate.See Printing below, for more information about the use of colors.fpX,HY _;qp  \1r YLp_ W0( VD,4 TH S<qp@ QE NqpD MOG KJ JGNHVG?2*E9D7(+B >Jqp(5 <D ;A 8]qpB 6F 5Uc 3qp 2LFqp 0+ -qp] ,_rp rpG *@ 'qpY &sA" $9) " qpB 21  qpJ,4 !  qp qpqpqpqpqpqp qp qpqpqp qpqpqpqpqp  GxA L=\sSil, Analyze, Gobble, Build Reference Manual7 ^Gn: Sets the current grid to 2**n (n=0-9). ^Hc: Expands the macro c and puts its upper left corner at the mark. Macros within themacro c will not be expanded if the onelevel flag (the first "T" in the status line) is true. The ^Ncommand complements this flag (i.e. makes it false, displaying "F"). ^I Input: When ^I is done, the message "Input From: " is displayed, and the user is expectedto enter a filename. If any previous input or output has been done, the previous filename isdisplayed. If it is the desired file, a carriage return, ESC, or mouse button depression confirms it.If not, simply type the new filename or edit the existing filename with ^Q, BS, or DEL (to abortinput). ^J: "Jam" new text font, face, or color into all selected items. This allows the user to change allselected items to a new font, face, or color. Font and Face apply only to fonts 0, 1, 2, or 3. ^K: This command ("kill") clears the screen and reclaims all storage so you may start on a newdrawing without leaving Sil. You will be asked to confirm with a carriage return if you made anychanges since your last Output command. Filenames are remembered for use with subsequent ^Icommands if desired and the 'Alternate text file' may remain open. Any 'Alternate text file' thatmay be open is closed if a ^K is executed when Sil is already in the initial state (i.e. 2 sucessive^K commands). ^Lc: Defines the macro c (in font 4) to be the collection of currently selected items (if there areno selections, or if c is a control character, the command is aborted). The reference point for themacro is its upper left corner, except that macro definitions are forced to fall on a grid of 4 screenunits. First, the definition is checked to ensure that none of the objects are the macro c itself. Such adefinition would destroy Sil when an attempt was made to display the macro - the message "BadMacro Definition" is output and the command is aborted. If all is well, the message "Confirmwith CR" or "Confirm with CR to Overwrite" is output. If confirmation is given, the macro isdefined, and the original set of objects is replaced by a (selected) single character string which isan instance of the macro. The origin is moved to the upper left corner of this string. ^M (CR): The mark is moved down by an amount determined by the ^Y command. ^N: Complement the onelevel flag, which controls the depth of macro expansion. ^O Output: A filename is requested as for ^I, and the macro definitions and picture are writtenon the file. Sil-format files normally have names with extension ".Sil". ^P: Writes a snapshot of the current state on the file "Sil.temp" (not including deleted items). Itis a good idea to do this occasionally to avoid losing work if Sil or your Alto breaks. ^Q: This command exits Sil. It requires confirmation if the picture has been changed since itwas last written out. ^R: This command requests confirmation and then deletes all macro definitions. It is used toedit macro libraries. ^S: This command ("Show") copies the area of the picture around the origin into the cursor.Since the cursor is only 16 screen units square (about .25 inch), only a small part of the object willbe shown. If there are no selected items, or if the area around the origin is blank, the commandis aborted. The idea of this command is that the origin will be positioned (automatically ormanually) to an interesting area of a selected object, which may then be moved or copied withgreat accuracy using control-mark or control-draw. Doing anything other than a move or copyoperation resets the cursor to the original arrow.fpX,HY _qp* \1qp*. Zrp: Y)-rp VDqpV TH S<A% Q(rp P4 MOqpX KK Hqp./ Gb2/ E N DZO B22 AR >mqpX <P ;e15 9 6C 5xA 3T 2p5( 0e /h> ,qp6 )qprp3 &qp;$ %5I "PqpO W qpC c ~qpQ  qpZ K  V H B q pq p+ 2d =\UjSil, Analyze, Gobble, Build Reference Manual8 ^T: Turns on (or off) an array of single point "ticks", which may be used as a positioning aid.The ticks are on a sixteen screen unit grid. ^U: Undeletes and selects the set of objects last deleted with ^D or shift-draw, after deselectingany previously selected objects. This works for up to five levels, at which point there are no moreobjects to Undelete. ^Vn: View has two distinct modes as follows:For n= 4-9, the status line is replaced with a line of text enumerating the macros currentlydefined in that font. Typing any character returns to normal mode.For n= 0-3, b,i,B,I, or color, all items with match the indicated parameter are selected (thusmaking it easy to jam a new parameter). ^shVn: only has meaning for n= 0-3, b,i,B,I, or color. In this case, items left selected are asubset of those selected before the command is issued. As an example, ^V0 ^shVR will selectonly those items which are font 0 and Red. ^Wn: Sets the line width (n=1 to 9). ^X Move (translate): All selected objects are moved so that the origin is at the mark, then thepositions of the origin and the mark are interchanged (so that another ^X puts things back theway they were).As a feature, if the selected objects are thought of as defining a rectangular window, and if theyare moved in X or Y only (not diagonally), the endpoints of any lines which cross the windowboundary are moved (by shortening or lengthening the line) so that the endpoints have the samerelation to the selected objects as in the original view. If the line would be shortened to zero or anegative length, or if it is fully in the window but not selected, it is not modified. This feature ishandy for moving rows of components in a logic diagram or adjusting the boundaries of a form.This feature is turned off by ^shX or if a ^S is in force (i.e. if there is something in the cursorother than the normal arrow). ^Y: This command sets (or clears, if it is set) the ylock flag. At the time ylock is set (changedfrom "F" to "T" by the ^Y command), the difference between the Y coordinates of the mark andthe origin is saved as yinc. When subsequent carriage returns are typed, the mark is moved down by a distance determinedby the height of the last object put into the picture (if ylock is false) or by the distance yinc (ifylock is true). ylock is initialized to false, and its status is shown in the status line (it is the secondletter of the "TF0N" section). ^Z: This command complements "Hardcopy" mode, erases the screen and re-draws the entirepicture. Sil normally spaces characters in text strings according to the widths of the Alto font.This makes them easy to read on the Alto screen, but means that the end of the string on yourscreen will not accurately indicate where the string will end on the printed page. To correct this,hardcopy mode positions each character according to the printing width information found in theFonts.Widths file during initialization. BS: This command (the BackSpace key) allows you to modify an existing text string. You musthave exactly one item selected on the screen that is in fonts 0 through 9. This item will then be"opened up" the first time you hit the BS key. You then modify the contents of the item byappending characters, backspacing characters (the BS key with its normal meaning), backspacingwords (^W), or by clearing the line (^Q) and starting again. Leaving this mode with the DEL keywill return the original string. Besides the obvious advantages for editing the end of the string,you can use this command to replace an item with a new one having the same font, face, andcolor. ^_ Moves the STATUS display to the x,y location of the last mouse action. This is useful in fullfpX,HY _qpC ], ZqpC Y),8 W Tqp( S<<! QC P4A N' KqpA JG= H* Eqp# BqpE AuD ? = ^ ; P :Y 8F 6Q 5x9$ 303 2p /qp.rprp .'5 ,rp )P (:rprp &rp rp(. % "-qpV E %F -7 [ ( qp)1 04. '5 (qp* qpqp4  [ J  3qpH =^|Sil, Analyze, Gobble, Build Reference Manual9drawings when items in the drawing must be placed over the normal location for the STATUSdisplay. Note the the initial location can be specified in the User.cm file (see Fonts below).MacrosSil allows an arbitrary collection of objects to be defined as a macro, which is given a singlecharacter name, and thereafter behaves exactly as if it were a normal character. Controlcharacters, space, and DEL are not allowed as macro names; there may thus be up to 94 macronames per font. Font 4 is reserved for user-defined macros which are associated with a single drawing. The macrodefinitions in font 4 are saved with the drawing when an output file is generated with the ^Ocommand. Fonts five through nine are used for Library Macros, which are symbols which are used over anumber of pictures. Libraries will be constructed for commonly used integrated circuit symbols,for example. Definitions for library macros are not saved with the file; instead, when a picture isread into Sil, any macros it requires from fonts 5-9 are read from the five files Sil.lb5 - Sil.lb9 (orwhatever file name is given in user.cm). This also happens the first time a macro name in thesefonts is used in ADD TEXT mode. If you intend to use these macro libraries, be sure the filesare on your disk before you attempt a use. (Because users who desire only to make simpleillustrations will not customarily use the libraries, their presence on the disk is not mandatory.)A set of standard libraries is released with Sil. Sil.lb5 and Sil.lb6 contain component definitions forTTL-family circuits; Sil.lb7 and Sil.lb8 contain ECL-family definitions. These libraries changerelatively slowly over time. However, when you save Sil drawings in a permanent way, it isprudent to save the libraries as well, to guard against incompatible future changes. You do notneed to have all of these libraries on your disk if you do not make any reference to one or moreof them.Libraries are created in font 4. The only thing special about a library is its filename. Whenmacro definitions are read from a library file, they are changed to the appropriate font. A librarymay contain a picture which describes its contents if desired. This portion of the file will beignored when the library is used. Two caveats about libraries: When one is created, it should not make use of any fonts other than0-4 (i.e. it should not use any libraries other that itself). Also, if a library macro has other macroswithin it, they should have names which are greater (i.e. have greater ASCII codes) than thecontaining macro's name. If this is not done, things will still work, but library access will be muchslower, since Sil will have to make multiple passes over the library file when reading it.FontsWhen Sil/I is specified, the file User.cm is read to determine which fonts to use for fonts 0-3,where to find them on your disk, and where to find your library files on your disk. The filepointers for Alto fonts and Sil libraries are stored in "Sil.fps", and the font names, faces, andprinting widths are stored on "Sil.fonts". A possible entry in a users User.cm would be:[SIL]0: Helvetica101: Helvetica72: Template643: Gates329: Foo.lb5Y: 712 (optional) (X: val is also recognised but not very useful)A: TtlDict.Analyze (optional)fpX,HY _'2 ]G Zr Wp@rp VD< T= S< PWW NG MO Jj r p) HO Gb1rp$ E8/ DZ(8 BN AR> ?W <,; ;eI 9[ 8]` 6Q 5U 2pZ 040 /hE -" *I ){Q 'S &sf $< " r pU Z-0 a RU('(( ( ( ( (t;( pt   C<[DSil, Analyze, Gobble, Build Reference Manual10This is an example of a straightworward User.cm specifying fonts etc. suitable for logic drawings.A more completcated User.cm might be as follows:[SIL]0: Helvetica10B Helvetica10N1: Helvetica7B2: Helvetica7BI Helvetica7B3: Template645: Template64.lb5Y: 712 (optional) (X: val is also recognised but not very useful)A: TtlDict.Analyze (optional)The above contains examples of many different ways of using your user.cm to control Sil fonts.The first name following the font number will be taken as the name of the printing font to use. Ifa bold or italic face is specified, then that face is the "default face", and can be overridden by the^F and ^J commands described above. The second name (or first if a second is missing), with".al" appended, is the name of the Alto font to use for display. If a face is specified for this font,then Sil will not further indicate this face. That is Sil will not italicize an italics .al font or bold-face a bold .al font. Numbers 5 through 9 may be used to specify a SIL file for use as a Libraryfile. A "Y", or "X" entry is used to specify the position of the STATUS line on your display.To expand on the above example, font 0 will print in Helvetica10 with Bold as the normal face,and will be displayed from Helvetica10N.al on the screen. Font 1 will print as Helvetica7 withbold as the normal, and will be displayed from Helvetica7B.al on the screen. Note that the fontwill not be displayed bold on your screen wheather specified bold or not. Font 2 will be the sameas font 1 except that the default face will be bold and italics. This font will be made italics on thescreen. Font 3 will be the special Template font used to draw arcs, circles, and diagonal lines.The other option for font 3 would be Gates32 (if you are doing logic drawings). Font 5 will bedisplayed according to the macros defined in the sil file Template64.lb5. The STATUS LINE willbe displayed on the screen with its upper left hand corner at coordinates Y=712 (this is justabove the title block of standard logic drawings). Finally, the entry A: is ignored by Sil, but isthere for use by the Analyze program (see below).If a font 0 through 3 is unspecified, it is defaulted to font 0, and Sil will complain bitterly if nofont 0 is specified. If Sil has any problem reading the fonts, it calls Swat with an explanatoryerror message. If a Library file 5 through 9 is unspecified then "SIL.lb5...9" is substituted andlooked up on your disk. No complaint is made if the Library name is not found.Three caveats: (1) You should not use a large font for font 0, or the status line will overflow theright edge of the screen. Fonts up to about 10 points work well. (2) If you are working onexceptionally large drawings and you run out of SPACE for new items, you can Output your fileand re-enter with "Sil/n(CR)" (n=0,1, or 2). In this case Sil will only read in the font definitionfor font n, and use that definition for displaying items in fonts 0,1 and 2. This will recoverapproximately 2000 words of storage.Miscellaneous InformationSil rebuilds the screen automatically whenever the picture is changed. This takes placeincrementally, and if the picture is complex, it can take a while. The rebuilder is operating if thenumber in the "TF0N" part of the status line is non-zero. If you are confused about the state ofthe picture, wait for the rebuilder to stop.Sil correctly windows objects so that things which overlap the screen boundaries are only partiallydisplayed. It is thus possible to type a string which extends beyond the screen boundary, thenmove it back onto the screen. If, however, an object is moved completely off the screen and thenbecomes deselected, it will be destroyed, and the space it occupied reclaimed. If an item is movedsuch that any part of it is above or to the left of the screen boundary, that item is immediately lostfpX,G _X ]0(Z(Y)(W(V!(T (S(Qt;(Ppt M,pS KW J#(> HA G"E E` D V BA ?+3 >&O <.2 ;V 9g 8Y 64+ 5E 3U 2c 01 -e ,A *-5 )O &,M $< #$= !M M $ r p%3 JQ qpC B, ]:)  T U># E MRb =][Sil, Analyze, Gobble, Build Reference Manual11and connot be reclaimed with Undelete.fpX,G _&T ^H <Sil, Analyze, Gobble, Build Reference Manual12PrintingSil/P (alias nPPR.run) is an alternate way of invoking Sil which will cause it to enter a completelydifferent mode of operation. In this mode, Sil converts Sil format files into one Press format filecalled "Sil.Press". Sil/H may be used to start up Sil, in which case the same "Sil.press" file willbe generated, but in addition, Empress.run will be invoked to send the press file to theappropriate printer for making hardcopy. Sil will use the font related information saved in"Sil.fonts" (during Sil/I) for printing.Sil/H File.press/F {color switches} File01 File02... Printer/H n/C In the above example, Press formated output will be written in "File.press" which will then besent to Host "Printer", and it will ask for n copies to be printed. If the /H or /C commands areomitted Empress will look in your User.cm under [HardCopy] for your default Host printer, andwill print 1 copy. If the /F switch is not omitted the output will be written on "Sil.Press". Notethat the /F switch, if used, must come before any input files.A whole slew of additional commands have been implemented for press file creation to control thecolor in drawings to be sent to a color printer. In essence, when one specifies a color in the Sildrawing, you are only setting a "pointer" to a table for the printing phase of Sil. This table isinitialized to values which will print the colors which correspond to the name given that color.Each color has associated with it a Hue, Brightness, and Saturation. There is one table fortext/lines and another for Backgrounds. The default values are the same for both tables accordingto the following table.ColorHueBrightnessSaturationCommentsNeutral(black)000 000 000 3 primary colorsWhite000 255 000Smoke000 192 000 requires half-tone processDarkBrown 005 090 255 requires half-tone processRed000 255 255 2 Primary colorsOrange 020 255 255 requires half-tone processYellow040 255 255 Primary colorLime060 255 255 requires half-tone processGreen080 255 255 2 Primary colorsTurquise100 255 255 requires half-tone processCyan120 255 255 Primary colorAqua140 255 255 requires half-tone processViolet160 255 255 2 Primary colorsUltaviolet180 255 255 requires half-tone processMagenta200 255 255 Primary colorPink220 255 128 requires half-tone processNotice that some colors are primary colors, some are combinations of primary colors, and othersrequire half-tone dot screens to be applied by the press printer. You should keep in mind thatthe half-tone process will introduce some degradation of character and line edge sharpness.All of the above parameters may be changed with the following switches. Whenever an entry ofthis type is encountered, it will affect the printing of subsequent files on the command line:C/ofollowing switches will effect text and lines with color C.C/b following switches will effect backgrounds with color C.N/b set the Brightness of the appropriate entry to N.fpX,G _q \1p*: Zd Y)_ W/) V!:" T((QG NV MO:' KA JGC! H> EC DZ_ BS ARE >&!< <C ;8" + 55qp X$.q53qp$.q2qp$.q50qp$.q5.qp$.q5-zqp$.q5+qp$.q5 *rqp$.q5(qp$.q5'iqp$.q5%qp$.q5 $aqp$.q5"qp$.q5!Yqp$.q5qp$.q5 Qqp$.q5 l#< 8' d N "; 8&;2/ M. <]Sil, Analyze, Gobble, Build Reference Manual13If no color has been specified, then the brightness of ALL backgrounds will be setto this value. (white will get 255-N)N/s set the Saturation of the appropriate entry to N.If no color has been specified, then the saturation of ALL backgrounds will be setto this value. (neutral & white will get 255-N)N/hIf N is a number then set the Hue of the appropriate entry to N.If N is a name then send Sil.press to printing host N./iwill re-initialize all entries0/bDisable backgrounds so that the press file may be printed on a black printer.Actually, 0/*, where * is any character, seems to do this.In order to properly print colored strings and lines over colored backgrounds, it is necessary tospecify software scan conversion in the press file. This takes a great deal of time for the hostprinter to perform , so if you determine that this is not necessary in your case you may invoke Silwith Sil/PF, where the F (fast) switch inhibits software scan conversion. Finally there are three other switches which effect Sil hardcopy. Note: If N=0 these switchesshould be omitted; otherwise they would disable backgrounds (see 0/b above).N/xShifts the entire drawing N Alto screen units right (left if negative).N/yShifts the entire drawing N Alto screen units down (up if negative).[Known bug, found by Dick Lyon: N acutally has some units other than screenunits, about 11/16 inch].N.NN/zScale the entire drawing by the indicated amount.The number may be less than or greater than one. The point size of the printingfonts requested will be scaled, and it is left up to the printing server to select thebest available printing font to match the point size requested. This works well forHelvetica, but not at all for Gates or Template fonts.If both scaling and shifts are specified, the shifts are performed before the scaling.A word of caution. The last set of switches were added quickly and are not done carefuly.In particular, objects are not clipped properly at the page boundary, and the press printerwill "wrap-around" if you move or expand something very far off the page.fpX,G_K]&Z.Y):W0T@S<6PWMr2K: I *7 G-4 F_ D}J AR^ ?L<G:.5F9D::9: 8 @6412@1&0/?.6,B)W,.'I&OIJ "! *4) ( %|r "sp3( D k(sp( G 1, [;% 0- SQ 5* K=" :# CG ;r 3p? =^]Sil, Analyze, Gobble, Build Reference Manual15names the the pin assignments. Analyze first looks in user.cm to find an entry "A:someDict.analyze" for the first dictionary file to open. If not found, Analyze will look for"Dict.analyze". Each dictionary may "get" another dictionary (as EclDict.analyze getsTtlDict.analyze), and Analyze will look down as many dictionaries as necessary to complete adrawing. There are currently two standard dictionary files maintained, TtlDict.analyze andEclDict.analyze. You may get either or both as required. In general, if you have somecomponent not already in one of these dictionaries, you should arrange to get it entered. If youwish, however, you make a dictionary of your own (examine the standard dictionaries for theformat) , place its name in user.cm and call the standard dictionaries from within your own. Youmay have one dictionary which calls another which is not present on your disk. If all componentsare defined in the existing dictionary(s) then no error or warning is generated.LinesAnalyze recognizes lines of width 1 as signal paths. Lines of other widths are ignored.NamesAnalyze recognizes three types of names: signal names, component type names, and componentpinnames. All names must be in font 1 and not italic; strings in fonts 0, 2, and 1-italic areignored (exception: see title syntax, below). Names must be completely unique (i.e. it is illegal tohave a signal named "IN", since this is a component pin name).Component type names are recognized as such because of their inclusion in the componentdictionary files (TtlDict.Analyze & EclDict.Analyze). A component type name may appear eitherin the macro definition corresponding to the component (i.e. in a library) or in the body of thedrawing. The former situation will occur when the definition macro corresponds to a singlecomponent type, the latter is used if the macro is used to represent more than one type ofcomponent.Component pin names may occur only in component definition macros (i.e. only in macrolibraries and in Dict.Analyze). These names are associated with connection points in the definition.Signal names may occur in the body of the drawing, or in macros which are for the purpose ofreplicating a common structure (i.e. font 4 macros). Signal names are always associated withhorizontal lines, and must be positioned in the drawing such that the center of the string is abovethe line and closer to it than 30 screen units.Component DefinitionsComponent definitions are Sil macros in fonts 5-9 which contain connection point characters at thetop level of their definition. These definitions are taken from the libraries Sil.lb5-Sil.lb9 asrequired. Connection points are specified with the font 3 characters Q,R,S, and T. They indicatethe locations at which Analyze expects to find interconnecting lines (signal paths). The fourconnection point characters correspond to connections made at the left (R), right (T), top (Q), andbottom (S) of the component symbol. In the font file 'GATES32.AL', the connection pointcharacters are small T's in four orientations, and are short lines in the printing font. Associatedwith each connection point is an IC pin name string in font1. If Analyze cannot locate an IC pinname string near a connection point in the definition, it defaults the name to 'IN' for left sideconnection points, to 'OUT' for right side points, or indicates an error for top and bottom points.Note that component definition macros may not include IC pin numbers. This information issupplied by Dict.Analyze, which contains the correspondence between pin names and pinnumbers. If it is desired to preassign IC pins to control the placement of interconnects on a card,the pin numbers must be put in the body of the drawing, rather than in the component definition.Any pin numbers which are included must be numbers in the range 1-63, and be in font 1 (orfont 3).fpX,G _P ]2+ \L=M Z? YW WR UF Ty= RR Qqa OP Lr IpX Fr Cp@ BI&8 @W ?A> <8W :B 90T 7= 6(Z 4 1A 0;rp -? +? *] (/ %|r "sp^ @! k.2 D c5. G [ U =$ SO ?$ *rp* CU c ;.2 E 3T =^ZSil, Analyze, Gobble, Build Reference Manual16Components correspond either to a subsection of an IC package (e.g. a 2 input gate whichoccupies one-fourth of a package), or to an entire package (e.g. a shift register). A single macrodefinition may be used for many IC types which are drawn identically, or a single IC type may bedrawn with more than one macro. An example of the latter situation is a NAND gate, which maybe shown as an AND gate with inversion at the output, or as an OR gate with inversion at theinput.The correspondence between component types, component connection points, and their associatedpin numbers is made by the component dictionary files. Each component in the drawing musthave associated with it a board location and group number. This descriptor is a font 1 string ofthe form , with number <64, and a ,they are assumed to be a board location/group number.If the string can be interpreted as a number, it is assumed to be an IC or edge pin number.If the string corresponds to a component type defined in a dictionary file, it is assumed to be acomponent type name. If these interpretations fail, the string is assumed to be a signal name.fpX,G ]C \:) Z(8 Y S W8$ U RR Qq6$ O(9 Ni!/NNi3NNi LX KaL IR FH EQN CW BI$= @D =^ <8B290:27=26(% 3 r 0p L .5$ -X *r 'p(7 %|:% #V P k r<  pc 51 S> KG 5 S K 3P F <^;Sil, Analyze, Gobble, Build Reference Manual17Recall that all names must be unique. In general, it is best to begin all signal and componenttype names with a capital letter. A component type name must be associated with eachcomponent in a drawing, although if there is more than one component group at a particularboard location, only one of the groups must have a type name string - the others are inferred.5) Font 3 strings: If the string consists of the single character P or p, it is interpreted as an edgeor cable pin, respectively. If it is the single character 'n', it is interpreted as a connection toground, and any signal path associated with it will be given the name GND. If it is the singlecharacter 'x', it will be assumed to be a connection to a pseudo-net; the pseudo-net has the signalname '+'. If the string can be interpreted as a number, it is assumed to be an edge pin, cablepin, or IC pin number. If it is the character '.', it is a blob, which is placed on a connection pointto inform Analyze not to expect to find a line connected to the point. If all of theseinterpretations fail, an error message results.Pin number strings are associated with edge pins, cable pins, or component connection points onthe basis of proximity. For cable and edge pins, the string will be associated with the pin if it isplaced within the rectangular edge/cable pin character. For IC pin numbers, the string must bepositioned relative to the component connection point as follows:Left side connection points: above and to the leftRight side: above and to the rightTop: above and to the leftBottom: below and to the leftWhen Analyze automatically assigns omitted pin numbers, it outputs them in Sil format to the pinnumber file with this orientation.6) Font 4 strings: These strings must be exactly one character long, or an error message results.The macro corresponding to the font 4 character is expanded.Search RulesAnalyze uses a number of rules to determine if two objects are associated. In general, if adrawing is prepared using Sil's grid 4 (^G2), all errors detected by Analyze will be legitimate.Using the default font set and libraries, it should not be necessary to use a grid size other than 4,except to add single font 3 special characters. This is best done using Sil's ^S feature, and shouldbe quite precise.The search rules are:1) Two line endpoints which form an "L" must be within 2 screen units to be consideredconnected.2) Two lines which form a "T" must be within 3 units to be considered connected. Lineswhich cross each other are NOT considered connected.3) Edge and cable pins must touch the horizontal line to which they are connected.4) Edge and cable pin numbers must be inside the box which constitutes the pin.5) When strings are matched with anything, the coordinates used are those of the centerof the string.6) Signal name strings must be less than 30 screen units above a horizontal line. Signalsare not associated with vertical lines.fpX,G ])6 \U Z N YP U16 Ty04 RD Qq!B OL Ni \ LG Ka/ HY_ F Y EQ(7 CA(@2(?A"(=(<8 90B 7" 4X 3 < 0r -p2* +M *O (L ' # Vk cQ4 G D?C  ;8! ' =^Sil, Analyze, Gobble, Build Reference Manual187) Type name strings and board coordinate strings must be within a bounding box whichis the height of the associated component, starts at its left edge, and extends to the rightuntil another component is reached.8) Lines and blobs associated with connection points on components must be within 2screen units of the connection point.In practice, these rules mean that things which touch are associated, things which do not are not.Although Analyze can detect a number of errors made by the user, sloppiness can cause problemswhich Analyze cannot detect. NEATNESS COUNTS!Parsing the title blockSeveral facilities in Analyze encourage you to place near the bottom of each drawing a "titleblock" that describes the drawing. A prototype for an acceptable title block can be found in thefile LogicBlock.Sil. Analyze will look in this area (y>720) for strings in fonts 0, 2, or 1-italic thatdescribes the drawing.In particular, Analyze finds strings below and to the right of four keywords: File, Rev, Date, andPage, and associates the strings with the corresponding properties. It passes this information alongin the .NL file as an aid in identifying the origin of the file. Gobble will copy this informationinto the final wirelist, thus providing you with a reasonably good description of the drawings thatwere used to make the wirelist. If a string "Reference" or "Documentation" is found anywherewithin the title block area, then Analyze will generate a nul net list for compatibility and ignoreALL text and lines on that drawing. This feature allows reference drawings to be included in aconsistently names set of drawings that Build will maintain for you. The title parsing is alsointended to work with the Build subsystem.The facility is useful only if you keep the title information accurate or use Build to keep itaccurate for you. Build will process the Sil drawings, assigning consecutive page numbers, settingthe file name to be the name of the file, setting the date (if the drawing is not marked build), andsetting the rev level of all files.If a title block can be successfully parsed for a file name, Analyze will use the file name togenerate unique names for un-named nets in the drawing. It does so by appending the character'+' and a number to the file name. Thus if the file name mentioned in the title block is"Or01.Sil", a net might have the name "Or01.Sil+4". This convention will allow you to relateentries in a final wirelist back to appropriate drawings. If there is no title block, or if a file namecannot be found, Analyze will emit no names for un-named nets, and Gobble will generate namesof the form "XXX", followed by a unique number.PrescanIf Analyze is invoked by typing Analyze/P file01.sil file02.sil file03.sil ..., it will produce a filefile01.ps that contains the page numbers (the i-th file processed is page i or the page number inthe title block) on which signal names and IC type names appear. The file file01.pe contains anyerror indications. This feature is used to provide a quick check on signal names and componentcount, without having to assign the IC's to board positions and run Gobble for the entire board.No node list or pin number files are produced, and almost all error checking features are turnedoff (so the process is quite fast).Error MessagesThe following list summarizes all the error messages which may produced by Analyze, and astatement of the rule which was broken to cause the error if it is nonobvious. In some cases, asingle error will generate more than one message, since a number of cross-checks on a drawing'svalidity are done.fpX,G_),]V\#YQW% TyR RJ Qq- Nir Kap4) I3. HYH F C*8 BI%@ @H ?AQ =8% <87, :$; 90I 7* 41- 3 R 1M 0# -J +E *P (D '/9 %|"; #/ r pf c S 2/ [;$ ` S9' # r p+. ;<$ 7( 3F =^VSil, Analyze, Gobble, Build Reference Manual19In the messages, "*" indicates an x,y screen coordinate which may be used with Sil to find thesource of error in the drawing.*Font 4 string with length #1Strings which are instances of macros must be one character long.*Font 4 macro has no definitionThis should never happen, since it is a fatal error in Sil, but its consequences are sufficientlyhorrible that it is checked.*Malformed font 3 stringThe string cannot be interpreted as a single special character (p, P, n, or x), nor can it be parsedas a number.*Multiple definition for symbolAll names must be unique, and one isn't.*Can't find line for pin*Can't find number for pin*Can't find line for ground*Ground appears connected to top of line?The ground symbol must attach to the bottom of a vertical line.*Can't find line for pseudonet point*Can't find line for signal name*Component more than 1 character long*Component has no definitionThe macro library for this component doesn't include it. This is a fatal error for Sil, and shouldnever happen.*Can't assign all t/b conpoints to line*Can't assign all l/r conpoints to linesOne of the connection points on the component pointed to by the * has one or more unusedconnection points. This message may be suppressed using 'blobs', as described earlier.*Multiple type names possible for component*Multiple board locations possible for componentThe bounding box for type name searches contains more than one type name or board locationstring.*Can't find bloc/group for componentThe bounding box contains no board location.*Coalesced overlapping vertical lines*Coalesced overlapping horizontal linesThis is a warning. Analyze has found two lines which lie on top of one another in the drawing,and has merged them into one line.*Line with no associated component or edge pinAll lines must be connected to either a component or an edge pin*Line with no name has only one pinfpX,G ]N \ Yq WpA Tyq RpP Qq Niq Lp Z Ka HYq Fp( Cq BI @ =) <8p? 90q$ 7 4% 1 0pI . +q' *( (pC 'W #q+ "s0 pC k cq$ p, q% S' pD K" Cq. p@ q# <^Sil, Analyze, Gobble, Build Reference Manual20*Unused Epin*Unused Cpin*Unused ground*Unused pseudonet point*Unused blobThese messages are part of a final check done to ensure that Analyze was able to make use of allthe objects in the drawing.*Can't find or default type name for componentThe component at the specified screen position has no type name, nor does any other componentat the same board location.*Net has multiple namesA single line has more than one name string associated with it. This is an error even if the namesare the same.*Pin name is not in dictionary*Preassigned pin is not a valid choice*Can't find pin to assignFor these messages, the coordinates point to the ic pin with which Analyze is having trouble.*Unused pin in section near this point, named ...The dictionary definition of the IC section you are using contains pin definitions that you havenot wired up. This is simply a warning.*Group shown for this component is not in dictionaryThe coordinates point at the component.*Multiple type names for component at this board locationThe component pointed to and another component at the same board location were assigned twodifferent ic typenames. This may be an error in the name, or an error in the board location.The following messages may be generated when parsing the title block in the drawing. They areonly warnings:Unable to find title entry for FileUnable to find title entry for RevUnable to find title entry for DateUnable to find title entry for PageFile name cited in Sil title region does not match true filenameThe following messages are generated as the libraries are read. They should not occur unless thestandard libraries have been modified. The "%" indicates the font and character in which theerror occurred:Component real name conflicts with other symbol type: %Strange entry in dictionary header: %Name in compdef has wrong symbol type: %Compdef contains overlapping connection points: %Compdef has more than one type name: %Compdef has more pin names than connection points: %Compdef has no connection points: %Can't find name for conpoint in compdef: %Can't assign string in compdef: %The following messages are generated as the dictionary files are read. Only component definitionsfor types used in the drawing are examined. The $ indicates the type name in the messsage.fpX,G _q ] \ Z Y Wp` U Rq. Qqp? O Lq KapV I Fq EQ& C BIp#: ?Aq1 =p#= <8( 90q4 7p' 4q9 3 p1* 1? .K - *q# (" '# %|# #@ pG kP  q7 [% ( S1 & K4 # C* ! p'; 30+  =^Sil, Analyze, Gobble, Build Reference Manual21Analyze does not tell you which dictionary, but the type shuld be sufficient information for you tofigure that out.Dictionary has groupname #a-y in type $Dictionary has strange entry in type $Dictionary has strange pinname in type $Dictionary has bad pinnumber in type $Dictionary has nonnumeric pin in type $Dictionary has pinnumber >63 in type $fpX,G _A" ] Zq' Y& W( U& Ty' R& R<]:Sil, Analyze, Gobble, Build Reference Manual22GOBBLEGobble is a program that merges a number of node list files (.NL) created by Analyze to producea wirelist for a single board. It also does automatic terminator assignment for ECL signals, androutes each net to achieve a minimum wire length. Gobble does not do automatic componentplacement: this information must be supplied by the designer in the original Sil drawing.Gobble is invoked by typing:Gobble/x file01.nl file02.nl file03.nl ...to the Executive. The switch is a single letter (A to Z) that tells Gobble the board type to use forthe wirelist. Brief descriptions of boards are given below.Gobble creates several output files, overwriting any previous contents. If file01.nl is the firstfilename in the list of .NL files given to Gobble, the wirelist file will be written on file01.WL, thebackpanel pin list will be written on file01.BP, and errors will be written on file01.GE.While it is running, Gobble complements the cursor each time it begins processing a new net.This will start a few tens of seconds after the program is started (after all input files are read), andwill continue until all processing is done. A few more seconds will elapse as the output files arewritten, and Gobble will finish. The amount of time spent processing a net depends on its length,and may be up to a few tens of seconds for nets that include many nodes.The routing algorithms used by Gobble can be controlled by optional entries in the command lineappearing just before the first filename:number/HSpecifies amount of work the heuristic router will do(default=20; 100 is "a lot")number/ESpecifies the size of the net above which the heuristic router isused and below which the exhaustive router is used (default=7)name/MSpecifies the metric to use in computing net length(name="Manhattan" or "Euclidean"; default is Manhattan)ECL terminator assignment is normally performed on any net that has one or more outputs fromECL-family components, and does not visit any edge or cable pins. In addition, any net with aname that ends in the character '!' will not have terminators assigned automatically. Theseconventions will require you to draw explicit terminators for any net that either (1) visits an edgepin; (2) visits a cable pin; or (3) has a name that ends in !.Gobble recognizes certain reserved net names, usually used for ground and various sorts of power.The reserved names are listed with the board type, below.Reworking a boardWhen a board has already been constructed, and a rather small set of changes is required, Gobbleis willing to generate a file of "adds and deletes" that will alter the already-constructed board toagree with the new drawings. For this purpose, invoke Gobble with \ rather than / preceding theboard letter. Gobble will read all the .NL files and the .WL file that corresponds precisely to thepresent board, and will create two new files: file01.AD, a list of adds and deletes to make to thecurrent board, and file01.wlNew, a revised complete wirelist. This wirelist will represent "truth"only after the add/delete modifications have been accomplished on the board.The Gobble re-work option requires rather careful attention to data-management to avoid carelesserrors while modifying a board several times. Although the Build subsystem will help with thischore, it is wise to understand the underlying principles. The most important point is that it isessential to keep a .WL file that accurately represents the current state of the board, for it is fromfpX,G _q \p!> ZB Y9 WL Ty(Qq* Ni3r p L< I@r HYp?' FY C7% BI+= @?$ ?AZ =H :A 90)26(5423 A1>203.7 + N *D ((4 'E %|> "s-4 9 r p7) [L B S %r2  pD K3 r$ L pQ ;-2 ]r 3Vp  =^ASil, Analyze, Gobble, Build Reference Manual23this file that Gobble determines what must be changed when updates are required. This .WL filecannot, in general, be reconstructed from the Sil drawings that agree with it, because automaticterminator assignment may place terminators differently.GOBBLE board definitionsInformation about geometric and electrical properties of various boards is "assembled into"Gobble, and can currently only be modified by modifying the program. The following list citesboards known to Gobble, and gives a brief description of their properties. All ranges are inclusive.B. Augat 8136 stitch-weld board.C. Board specially designed to fit in Xerox 9200 engine control.L. D1 main logic board. Board location letters range from a to l (ell); numbers range from 1 to24 for 16-pin dips, 41 to 52 for SIPS, and 60 to 63 for 24-pin packages. Cable and edge pinnumbers range from 1 to 188. There are five reserved net names, corresponding to various powersupply voltages: GND (0), VCC (+5), VTT (-2), VEE (-5.2), and VDD (+12).M. D1 memory storage board.X. Wild card board -- allows all board positions (a-y, 01-63), and does no routing.CareThe judicious user of Gobble will always be skeptical, and will examine carefully the outputbefore stitch-welding. Special inspection should be applied to add/delete lists.Error Messages...to come...fpX,G __ ]E \8 Yr Up[ Ty S R>r Op L@ IV HYH FM EQH BI ?AS <8r 90p+1 7Q 4r 1p X /<8:Sil, Analyze, Gobble, Build Reference Manual24BUILDBuild is a subsystem that helps with the data-management aspects of building boards and keepingthe design-automation data files current. Suppose a board is currently "revision C" (or Rev C),two drawings are updated, and it is now time to undertake to get everything (drawings, wire lists,and board) updated to the new Rev D. Good practice will encourage us to change all thedrawings to show Rev D as the current version; but sheer tedium and errors will soon let chaoscreep in. Build should help.Let us first define a "built drawing" for a certain revision level as the drawing that accuratelyrepresents the particular rev level. Built drawings are distinguished by a series of broad horizontallines at the very bottom of the page: these lines mean that the drawing, as you see it, was used tobuild the board whose revision level is cited in the drawing. Sil will remove these markerswhenever you change the drawing in any way. Thus the veracity of the "Rev x" label in thedrawing is determined by the obvious markers.Build is invoked with a command line that lists all the files for a particular board. For example,"Build D/R \GL aabb*.Sil" will build the D revision of the board aabb. Build undertakes severalsteps:1. All .Sil files are "edited" by Build, and changes are made in the title area of each drawing. Therevision level is updated to xx if the phrase xx/R is present in the command line. The file namecited in the title area is changed to match the true file name. The page number is updated tomatch the ordinal position of the filename in the list of files provided to Build. And finally,unless the .Sil file was already built (i.e., unmodified since last Build), the date is updated. Thefile is marked "built," and the special marker lines are added to it. The first file specified alwayshas the date updated. The specification on page numbers assigned may be modified by placing anum/p switch before some page, where num may be 0,1,2 etc or .+2, or .+0 etc..2. Now Analyze is run on all the files that were not marked "built" at the start of step 1 above.The error messages will, as usual, be collected on one file aabb01.er, where aabb01.Sil was the firstname passed to BUILD.3. Any .PN files produced by Analyze are merged into the corresponding .Sil files unless theTentative switch has been set. Build will terminate before appending pin numbers if Analyzereported any serious errors.4. Gobble or Route is invoked on all the .NL files produced by Analyze. The "board letter"switch for Gobble is extracted from the /Gy switch in the command line (or \Gy for rework).Any other items in the command line that are of the form "xxx/Gyy" are passed on to Gobble as"xxx/yy". If you are using BUIILD for re-work, you must of course have aabb01.wl on your disk(this is the current wirelist file, for rev C in our example). In rework mode, you may explicidlygive the name of the .wl file to be reworked by placing oldname.wl/CG in the command file.5. If re-work has been specified and an old .wl file has not been given explicidly, aabb01.wl iscopied into aabb01.wlOld (backup); then aabb01.wlNew is copied into aabb01.wl (critical step!!),and finally aabb01.wlNew is deleted. The critical step will be crash-protected with a restartprocedure that copies aabb01.wlOld back into aabb01.wl so that no harm is done.6. This step executes any number of commands according to the contents of a special file calledBuildBackupTemplate.cm. If no such file exists, then Build will default to dumping all files itbelieves are critical to the build run on both IVY and MAXC. Build essentially reads inBuildbackupTemplate.cm expands some special escape sequence as defined below, and passes theresults on to the Alto operating system in Rem.cm for further system expansion.If a "$Z" is found in the template, then the template is expanded as follows:fpX,G _q \pL Z=# Y[ WPrp U2, Ty QqI Oqp@ Ni6- L!r Ka qp- I- F0rp qp EQ V C @T ?A\ =S <89' :>' 90O 7^ 6(N 3 S 1;* 0 -(4 +H * 'F %|[ ##: "s^ B k= @[  U 8$qp8 O ,3 H  L X xO MMP =]]Sil, Analyze, Gobble, Build Reference Manual25N:name of the first file given to build with the extension stripped off.$ZN.ad >> Foo01.adB:name of the first file given to build with the extension and numbers stripped off.$ZBC.ad >> Foo.ad (only if running "change" mode - see below)A:names of the files given to build.$ZB.sil >> Foo01.sil Foo02.sil . . .F:same as $ZB plus the string "-Rev-" and revision appended.$ZF.dm >> Foo-Rev-Aa.dmIn addition, there are a number of characters that will modify whether an expansion is to takeplace attall.C:Only if running in change modeG:Only if using the Gobble programR:Only if using the Route programM:Only if using the Multiwire option of RouteBuild can be invoked "tentatively" by saying Build/T ... In this case, only steps 2 and 4 areexecuted. This allows you to look at the .er, .ge and .ad files before committing to the revisions.If you are re-working, the new wirelist will of course be on aabb01.wlNew, i.e., no copying willhave been done.Build is designed to permit restarting at any time without damage to vital files. Thus, if the Altodisk fills up during one of the operations, you can delete some old files and retry the Buildcommand. You specify the step at which Build is started by add the number to the globalswitches to build, thus "Build/6 . . ." will start Build up at level 6.Build uses a rather general mechanism for passing phrases from its command line on to thesubsystems it invokes (Analyze, Gobble, Sil/p, and Ftp). Phrases of the form xxx/qyy will bepassed on as xxx/yy to the subsystem whose initial letter is q. Thus conn/fc is passed to Ftp asconn/c; maxc/f is passed to Ftp as maxc; 4/ge is passed to Gobble as 4/e. If the xxx phrase isempty, the switch phrase is passed as a global switch. Thus \gy is passed to Gobble as the globalswitch \y. So a real command to Build that might update a real board to rev F is:Build \gl 6/ge f/r maxc/f conn/fc d1/f password/f d1pa*.silfpX,G_9s F ]\ R [>ZC " Y$W : V SpF Q Ns M L{ K> + H6pU FR E-,4 C @~); >? =vC ;G 8)0 7B\ 5?! 4:7( 2J 12rp=(.*; ,_=;Sil, Analyze, Gobble, Build Reference Manual26CONVENTIONS FOR USING THE DESIGN AUTOMATION SYSTEMThis section recommends several conventions for using the design-automation system. Althoughnot every design group will want to follow them all, they have aided a number of large projects.Note that this information is supplemental to a great deal of detailed conventions mentionedelsewhere in this document (e.g., the rules that must be followed to please Analyze).Drawing files have the extension .Sil, and are given reasonably short names of the formxxyydd.Sil, where xx is a code for the project, yy is a code for a specific logic board, and dd is atwo-digit number that indexes the drawings for the board. The two-digit number three is 03 --this convention assures that the Alto Executive * feature in filename recognition will alwaysprocess drawings in numerical order. Thus "Sil/P D1CB*.Sil" will print the drawingsconsecutively.In Sil, do all drawings on a grid of 4 units (^G2). Macros should be defined so that allconnection points lie on grid points. Use a "title area" at the bottom of each drawing -- the fileLogicBlock.Sil provides a template.Component names should be all upper case. For example, MC101, N123 or H04 are goodcomponent names. Note that H04 is a component name and h04 is a board location.Signal names should be mnemonic, pronounceable and meaningful. Names should begin with acapital letter, use upper case to separate words, and should contain no spaces, {, }, <, >, ;, or *characters (some of these confuse the stitch-welding program). Examples of beautiful signal namesare:MemoryDataReady BufferEnable CompareErrorIn order to name individual lines of buses and registers, follow the signal name with .dd, where .is the period character, and dd is a one or two digit number. Include the leading zero for buseswider than 10 bits to make name sorting convenient. Thus:Video.0BMux.00Video.1BMux.01Video.2...Video.3BMux.15The active low version of a signal is denoted by appending the character ' (single quote) to thename. Ready inverted is Ready'.Signals that are driven differentially (often cable and edge signals) have + as the final character ofthe differential positive signal and - as the final character of the differential negative signal. Forexample, LineSync+ and LineSync- would be received differentially and produce LineSync asoutput.Perhaps the largest single problem in managing a large design project is data management:keeping all the drawings, wire lists, macros, etc. together, especially as changes are made. TheBuild subsystem, described above, is an attempt to impose some order on the chaos. Even if youobject to the specific actions Build takes, you should enforce some conventions for preventingdisaster. The nexus of the problem concerns Gobble re-work: it is essential to have a wirelist thataccurately reflects the current state of your board. As revisions fly thick and fast, it is surprisinglyeasy to get confused.fpX,G _q2 \pT ZE Y/- WU TyA R\ Qq!= OA Ni*T L I3qp HYc F# CD BIP ?AF =U <8!A :(7- 4D 3 a 1:(.(-(+(* '"> %| "s7/ &A kY   N [-4 D SC L K-<  =X"Sil, Analyze, Gobble, Build Reference Manual27FILE FORMATSSIL drawing formatThe format of Sil files is considered "private" to the suite of design-automation programs.Text file conventionsMost of the files used in the design-automation system are text files, for convenience in fixingproblems, editing, seeing what you are doing, and the like. Several conventions apply to all suchfiles:Comments are embedded in files by putting semi-colon (;) as the first character in a commentline; the remainder of the line is ignored.Dictionary formatThe file Dict.Analyze is a text file which contains definitions for all components which may beused in a drawing. The file contains two sections, a header, which contains the names for allcomponents in the balance of the file, and a body, which contains the association between groups,pin names, and pin numbers for each component. A (small) dictionary might have the form:MC100=MC10100/16/EMC136=MC10136/16/E@MC100a,IN,4,5a,c,9a,OUT,2b,IN,6,7b,OUT,3c,IN,10,11c,OUT,14d,IN,12,13d,OUT,15@MC136a,CC,13a,D0,12,a,D1,11a,D2,6a,D3,5a,S1,9a,S2,7a,CI,10a,C0,4a,Q0,14a,Q1,15a,Q2,2a,Q3,3@The first two lines are the header. The first string is the print name of a component (MC100),which is the name Analyze expects to find in the drawing. Usually, these names are short versionsof the real name, which is the second item. The real name is the manufacturer's name for thecomponent, and might be used for automatic preparation of purchase orders, for example. The"/16/E" following the real name is the number of pins on the IC and the family type. ThisfpX,G _q \r Yp? Ur Rp:& QqD O LO Ka+ HYr EQpC CK BIP @9=<8:9076(43 10 .- +*('%|#"s kc[SK C4r p Q ;rpI H 3&"r p4 <^Sil, Analyze, Gobble, Build Reference Manual28information about the IC is required by the Gobble wirelister, so that it can do terminatorassignment (ECL), power assignment, and routing properly. The family types currently supportedby Gobble are (the term "PackPin" is the number of pins in the package, either 14 or 16):E: MECL 10K (Gnd on pins 1,16; Vee on pin 8)N,S,H: Normal, Schottky, and H TTL (Vcc on PackPin; Gnd on PackPin/2)T: 8-pin SIP terminators (Vee on pin 1)P: 16-pin pullup resistor newtorks (Vcc on pin 16)M: MOS (Gnd on pin 16; Vcc on pin 9; Vdd on pin 8; Vee on pin 1)The header is terminated with @.The balance of the file consists of blocks describing each component. Each block begins with theprint name of the component, and is terminated with an @. The first field in each line is thegroup id for the information on the balance of the line, the second entry is the pinname, and thethird (and subsequent) entries are a list of the ic pins which can have the given group id and pinname. There may be multiple pins with the same group id and pin name if the pins are logicallyidentical (i.e. if Analyze is allowed to permute them during the pin assignment process). TheMC100, for example, contains four groups, one for each of the four gates in the package. Thegroups are lettered a-d. The IN signals in each group may be permuted. The MC136 has onlyone group, group a, and its pins may be assigned in only one way.If a chip in a particular family does not obey exactly the power/ground rules for the family (statedabove), it is possible to include information in the component blocks that describes the powerrequirements. This is accomplished with a line following the print name that begins with theword POWER, and cites pin numbers and power names. For example, the following line woulddescribe an MC100, although it is identical to the normal rules:POWER GND,1,VEE,8,GND,16And the following line would describe an MC210:POWER GND,1,VEE,8,GND,15,GND,16The pin numbers should be in ascending order.fpX,G _A ]>! \GY,WEU'Ty2R@ O L@ KaW I+6 HY02 F*5 EQ] C-0 BIB @A = V <8J :] 90%4 7@4 1/. +- )<>JSil, Analyze, Gobble, Build Reference Manual29WARNINGS, UNIMPLEMENTED THINGS, ETC.As of 25 July 1977, the following cautions apply:1. Gobble makes no use of the special POWER entries in the dictionary, and will only performwith the "standard" powering rules. Gobble really understands very little about power: it iswilling to wire power to N,S,H, and P components. Others are assumed to have power alreadywired. This is being fixed.2. By the same token, Gobble will not issue instructions for "cutting" already-wired pins awayfrom committed power buses. This too will be fixed.fpX,G _r$ \p1 Y\ W+2 US Ty Qq8& O4F K<FSILText Font FilesHelvetica8BGates32SILLibrary FilesComponentSil.lb7, Sil.lb8 (ECL)Sil.lb5, Sil.lb6 (TTL)Component DictionaryAnalyzerrrrrrrr<< = GGGr>;Gr:Gr#Gr GrGrNGNXGNXGGr9wdru <p$2V'stH&r V?WpIOg\a:b:c:d:e:f:g:h:i:j:k:l:m:n:p:q:r:<:>:x:abcdefghijklmnpqr<>xA:B:C:D:E:F:G:H:I:P:.:ABCDEFGHIP.Small numbers as themselves:i.e. '!' through ')', respectivelyLarger numbers (5x7) as 'capital numbers:1234567890!@#$%~&*()Q:R:S:T:W:X:Y:Z:QRSTWXYZtopleftbottomrightThese charactersdefine connection points in componentdefinitionsy:z:yzPieces of 16 pinpackages'unconnected' pinSIL'S FONT 3 CHARACTER SETThese characters are normally read in by SIL as FONT 3( this picture is available as GATES32.press )8/09/78This figure shows the available characters in "Gates32.al"XEROXFileProjectDesignerRevDatePagePARCReferenceAR BatesS I LGates32.silGates Symbols7/12/7931rf<a]XXTtPKGB>;95W0,s(#: |c> _ Z W Qv N H D ? ;= 7 2Y - ( $u    ; ;srf<sas]XsXsTtsPsKsGsBs>;s V|caZX!RO=I!E@;=s W,sp]X.Tt",sV)3|X! 3N sr9s5Ws0s,ss(s#ss|62Y-)u%!!Vu:!V5!V1,!V,(p7(4(2(0W %;$&,$%,@$sr:s|X(p(%)$&$s%]@$% V.hu68u3>;p99:rU$u/Gr90W;t>GGGr>;Gr:Gr#Gr GrGrNGNXGNXGGr9wdru <p2V% 9 ?WITiJP HELVETICA HELVETICA HELVETICA  HELVETICA  HELVETICALOGO TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN  TIMESROMAN HELVETICA  HELVETICA  HELVETICA HELVETICA HELVETICA GATES  w  ' 0 : D M WYEag q {  $ x 5I eWp p<`@| e ?Rn = ?< : ' j/!ɄSilManual.PressPasco20-Feb-81 17:38:12 PST