Page Numbers: Yes X: 530 Y: 10.5" First Page: 14
Margins: Top: 1.3" Bottom: 1"
Heading:
Sil, Analyze, Gobble, Build Reference Manual
ANALYZE

Analyze is a program that transforms logic diagrams produced using Sil into a file which can be input directly to the Gobble wirelister. In addition, Analyze produces a file in Sil format which contains the IC pin numbers which were not assigned by the user in the original drawing. Analyze assigns such pins automatically, and the resulting file may be merged with the original drawing to obtain a complete drawing, including all IC pin numbers.

Analyze is invoked with:

Analyze(/D) file01.sil file02.sil file03.sil ...

where file01.sil file02.sil file03.sil ... are the names of Sil output files. The program produces two output files for each input file: If ’filename.anything’ is the name of the input file, ’filename.NL’ is a text file that contains a listing of all components and nets in the drawing, and ’filename.PN’ is a Sil format file which contains the IC pins which were assigned by Analyze (if no new pin numbers are assigned, the file is deleted before Analyze finishes). Any errors detected during operation are recorded on ’filename1.er’, a text listing of error messages; it will be deleted if no substantive errors were detected. If the /D switch is used, the program writes (a great deal of) internal information onto the error file. During operation, Analyze turns off the display, and does not signal the occurrence of errors in any way. After completion, Analyze leaves a brief message "[n] = worst Error Severity" on the screen. N=0 means no problems were encountered, n=1 thens possible problems (warnings) were encountered, and if n=2 then errors were found and the ".pn" and ".nl" files are not valid. Warning and error messages are left in the ".er" file. Analyze requires one or more dictionary files, which are text files containing the correspondence between IC pin numbers and IC pin names for all components in the drawing. These file will be maintained concurrently with the Sil macro libraries.

Input File Format

The drawings produced by Sil contain four types of objects: The first are macros in fonts 5-9 (see below for exceptions) which are the graphic description of
components; the second are user defined macros in font 4 (see below for exceptions) which consist of collections of components, lines, and strings. The remainder of the file contains lines and strings (including single character font 4-9 strings corresponding to instances of user macros and components) which constitute the body of the drawing. These objects must conform to a number of syntactic rules, which will be described in detail.

components

Components are macro definitions which describe the component function to the user, and the component pin assignments to Analyze. A reference on the drawing is signified to be a component if it is a macro in fonts 5-9
or font 4, character codes 0 through 9. It is intended that all common macros be available in the public library files as font 5-9.

As a mechanism for accomodating unusual or seldom used macros, Analyze will also treat font 4 character codes 0 through 9 as component macros. This will alow you to maintain additional Sil files containing component macros. When needed, one essentially copies some macro difinition from one of these library files, re-defines it under a new character code, and merges in into ones drawing. The proceedure is as follows: Read the Sil macro file in, delete the entire picture, expand the one macro (with ↑H) of interest, type ↑R to delete all macro definitions, select the expanded items of the new component, and define them (with ↑L) to a macro character 0 through 9. Finally read in the file you are working on and use the newly defined font 4 macro.

Dictionary File Format

Analyze looks at one or more "dictionary" files to find the correspondence betwen component names 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 gets TtlDict.analyze), and Analyze will look down as many dictionaries as necessary to complete a drawing. There are currently two standard dictionary files maintained, TtlDict.analyze and EclDict.analyze. You may get either or both as required. In general, if you have some component not already in one of these dictionaries, you should arrange to get it entered. If you wish, however, you make a dictionary of your own (examine the standard dictionaries for the format) , place its name in user.cm and call the standard dictionaries from within your own. You may have one dictionary which calls another which is not present on your disk. If all components are defined in the existing dictionary(s) then no error or warning is generated.

Lines

Analyze recognizes lines of width 1 as signal paths. Lines of other widths are ignored.

Names

Analyze recognizes three types of names: signal names, component type names, and component pinnames. All names must be in font 1 and not italic; strings in fonts 0, 2, and 1-italic are ignored (exception: see title syntax, below). Names must be completely unique (i.e. it is illegal to have a signal named "IN", since this is a component pin name).

Component type names are recognized as such because of their inclusion in the component dictionary files (TtlDict.Analyze & EclDict.Analyze). A component type name may appear either in the macro definition corresponding to the component (i.e. in a library) or in the body of the drawing. The former situation will occur when the definition macro corresponds to a single component type, the latter is used if the macro is used to represent more than one type of component.

Component pin names may occur only in component definition macros (i.e. only in macro libraries 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 of replicating a common structure (i.e. font 4 macros). Signal names are always associated with horizontal lines, and must be positioned in the drawing such that the center of the string is above the line and closer to it than 30 screen units.

Component Definitions

Component definitions are Sil macros in fonts 5-9 which contain connection point characters at the top level of their definition. These definitions are taken from the libraries Sil.lb5-Sil.lb9 as required. Connection points are specified with the font 3 characters Q,R,S, and T. They indicate the locations at which Analyze expects to find interconnecting lines (signal paths). The four connection point characters correspond to connections made at the left (R), right (T), top (Q), and bottom (S) of the component symbol. In the font file ’GATES32.AL’, the connection point characters are small T’s in four orientations, and are short lines in the printing font. Associated with each connection point is an IC pin name string in font1. If Analyze cannot locate an IC pin name string near a connection point in the definition, it defaults the name to ’IN’ for left side connection 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 is supplied by Dict.Analyze, which contains the correspondence between pin names and pin numbers. 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 (or font 3).

Components correspond either to a subsection of an IC package (e.g. a 2 input gate which occupies one-fourth of a package), or to an entire package (e.g. a shift register). A single macro definition may be used for many IC types which are drawn identically, or a single IC type may be drawn with more than one macro. An example of the latter situation is a NAND gate, which may be shown as an AND gate with inversion at the output, or as an OR gate with inversion at the input.

The correspondence between component types, component connection points, and their associated pin numbers is made by the component dictionary files. Each component in the drawing must have associated with it a board location and group number. This descriptor is a font 1 string of the form <letter number letter >, with number <64, and a
<letter <y. The first letter and number represent the coordinate of the component on the board, the second letter represents the component’s group within the IC package. The group letter may be omitted if the package contains only a single group, in which case Analyze will default the group to ’a’.

Analyze locates the name string for each connection point character in a macro definition on the basis of its proximity to the connection point, then uses the type name, group letter, and connection point name to look up a list of valid pin numbers in the dictionary file(s). If pin numbers were predefined in the input file, their validity is checked. If some or all pin numbers are not assigned in the input file, they are assigned automatically.

To summarize, the precise graphic content of a component definition macro is unimportant. The important information contained in a definition macro consists of:

1) The relative coordinates of connection point characters
2) The pin name strings associated with each connection point
3) Optionally, an IC type name string

User defined macros

Macros in font 4 may be used to replicate common structures in a drawing. These macros are expanded by Analyze when instances are encountered in the body of a drawing. Such macros may contain lines, character strings, components, and other macros, nested to any depth.

Drawing body

The main body of the input file contains the information which the user explicitly added to the drawing using Sil. Legal objects for Analyze are a subset of the possible objects which may be drawn with Sil. The interpretation of all objects which may be created is as follows:

1) All items: All items (text, lines, components etc) that are assigned the color Majenta are ignored.
Note: Analyze will remind you (with a count) of Majenta colored items if it finds level 2 errors on a drawing.

2) Lines: If they have width = 1, they are interpreted as interconnects. If not, they are ignored.

3) Font 0 strings, Font 2 strings, and Font 1 italics face: These are ignored. It is thus possible to include comments in drawings which will be ignored by Analyze.

4) Font 1 strings (normal and bold face): If they can be interpreted as <letter number letter>, 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 a component type name. If these interpretations fail, the string is assumed to be a signal name.

Recall that all names must be unique. In general, it is best to begin all signal and component type names with a capital letter. A component type name must be associated with each component in a drawing, although if there is more than one component group at a particular board 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 edge or cable pin, respectively. If it is the single character ’n’, it is interpreted as a connection to ground, and any signal path associated with it will be given the name GND. If it is the single character ’x’, it will be assumed to be a connection to a pseudo-net; the pseudo-net has the signal name ’+’. If the string can be interpreted as a number, it is assumed to be an edge pin, cable pin, or IC pin number. If it is the character ’.’, it is a blob, which is placed on a connection point to inform Analyze not to expect to find a line connected to the point. If all of these interpretations fail, an error message results.

Pin number strings are associated with edge pins, cable pins, or component connection points on the basis of proximity. For cable and edge pins, the string will be associated with the pin if it is placed within the rectangular edge/cable pin character. For IC pin numbers, the string must be positioned relative to the component connection point as follows:

Left side connection points: above and to the left
Right side: above and to the right
Top: above and to the left
Bottom: below and to the left

When Analyze automatically assigns omitted pin numbers, it outputs them in Sil format to the pin number 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 Rules

Analyze uses a number of rules to determine if two objects are associated. In general, if a drawing 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 should be quite precise.

The search rules are:

1) Two line endpoints which form an "L" must be within 2 screen units to be considered connected.

2) Two lines which form a "T" must be within 3 units to be considered connected. Lines which 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 center of the string.

6) Signal name strings must be less than 30 screen units above a horizontal line. Signals are not associated with vertical lines.

7) Type name strings and board coordinate strings must be within a bounding box which is the height of the associated component, starts at its left edge, and extends to the right until another component is reached.

8) Lines and blobs associated with connection points on components must be within 2 screen 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 problems which Analyze cannot detect. NEATNESS COUNTS!

Parsing the title block

Several facilities in Analyze encourage you to place near the bottom of each drawing a "title block" that describes the drawing. A prototype for an acceptable title block can be found in the file LogicBlock.Sil. Analyze will look in this area (y>720) for strings in fonts 0, 2, or 1-italic that describes the drawing.

In particular, Analyze finds strings below and to the right of four keywords: File, Rev, Date, and Page, and associates the strings with the corresponding properties. It passes this information along in the .NL file as an aid in identifying the origin of the file. Gobble will copy this information into the final wirelist, thus providing you with a reasonably good description of the drawings that were used to make the wirelist. If a string "Reference" or "Documentation" is found anywhere within the title block area, then Analyze will generate a nul net list for compatibility and ignore ALL text and lines on that drawing. This feature allows reference drawings to be included in a consistently names set of drawings that Build will maintain for you. The title parsing is also intended to work with the Build subsystem.

The facility is useful only if you keep the title information accurate or use Build to keep it accurate for you. Build will process the Sil drawings, assigning consecutive page numbers, setting the file name to be the name of the file, setting the date (if the drawing is not marked build), and setting the rev level of all files.

If a title block can be successfully parsed for a file name, Analyze will use the file name to generate 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 relate entries in a final wirelist back to appropriate drawings. If there is no title block, or if a file name cannot be found, Analyze will emit no names for un-named nets, and Gobble will generate names of the form "XXX", followed by a unique number.

Prescan

If Analyze is invoked by typing Analyze/P file01.sil file02.sil file03.sil ..., it will produce a file file01.ps that contains the page numbers (the i-th file processed is page i or the page number in the title block) on which signal names and IC type names appear. The file file01.pe contains any error indications. This feature is used to provide a quick check on signal names and component count, 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 turned off (so the process is quite fast).

Error Messages

The following list summarizes all the error messages which may produced by Analyze, and a statement of the rule which was broken to cause the error if it is nonobvious. In some cases, a single error will generate more than one message, since a number of cross-checks on a drawing’s validity are done.

In the messages, "*" indicates an x,y screen coordinate which may be used with Sil to find the source of error in the drawing.

*Font 4 string with length #1
Strings which are instances of macros must be one character long.

*Font 4 macro has no definition
This should never happen, since it is a fatal error in Sil, but its consequences are sufficiently horrible that it is checked.

*Malformed font 3 string
The string cannot be interpreted as a single special character (p, P, n, or x), nor can it be parsed as a number.

*Multiple definition for symbol
All 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 definition
The macro library for this component doesn’t include it. This is a fatal error for Sil, and should never happen.

*Can’t assign all t/b conpoints to line
*Can’t assign all l/r conpoints to lines
One of the connection points on the component pointed to by the * has one or more unused connection points. This message may be suppressed using ’blobs’, as described earlier.

*Multiple type names possible for component
*Multiple board locations possible for component
The bounding box for type name searches contains more than one type name or board location string.

*Can’t find bloc/group for component
The bounding box contains no board location.

*Coalesced overlapping vertical lines
*Coalesced overlapping horizontal lines
This 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 pin
All lines must be connected to either a component or an edge pin

*Line with no name has only one pin

*Unused Epin
*Unused Cpin
*Unused ground
*Unused pseudonet point
*Unused blob
These messages are part of a final check done to ensure that Analyze was able to make use of all the objects in the drawing.

*Can’t find or default type name for component
The component at the specified screen position has no type name, nor does any other component at the same board location.

*Net has multiple names
A single line has more than one name string associated with it. This is an error even if the names are the same.

*Pin name is not in dictionary
*Preassigned pin is not a valid choice
*Can’t find pin to assign
For 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 have not wired up. This is simply a warning.

*Group shown for this component is not in dictionary
The coordinates point at the component.

*Multiple type names for component at this board location
The component pointed to and another component at the same board location were assigned two different 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 are only warnings:

Unable to find title entry for File
Unable to find title entry for Rev
Unable to find title entry for Date
Unable to find title entry for Page
File name cited in Sil title region does not match true filename

The following messages are generated as the libraries are read. They should not occur unless the standard libraries have been modified. The "%" indicates the font and character in which the error 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 definitions for types used in the drawing are examined. The $ indicates the type name in the messsage. Analyze does not tell you which dictionary, but the type shuld be sufficient information for you to figure 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 $