Annotation of researchv10dc/vol2/Ucds/ucds.ms, revision 1.1

1.1     ! root        1: .so ../ADM/mac
        !             2: .XX 33 549 "The UNIX Circuit Design System"
        !             3: .TL
        !             4: The
        !             5: .UX
        !             6: Circuit Design System
        !             7: .AU
        !             8: A. G. Hume
        !             9: .AU
        !            10: T. J. Killian
        !            11: .AB
        !            12: .SM UCDS
        !            13: is a system for the design and prototyping of digital systems.
        !            14: At the front end
        !            15: it provides hierarchical schematic entry,
        !            16: .SM PAL
        !            17: design and board layout; at the back end it
        !            18: produces data for various manufacturing technologies, in particular
        !            19: wire-wrap and multiwire.
        !            20: .AE
        !            21: .NH
        !            22: Introduction.
        !            23: .LP
        !            24: A design has a logical part and a physical part.
        !            25: The logical part consists of circuit schematics, generally
        !            26: supplemented by 
        !            27: .SM PAL
        !            28: equations.  The physical part includes board layout and routing.
        !            29: .LP
        !            30: A circuit contains
        !            31: .I chips
        !            32: each identified by
        !            33: .I name
        !            34: (which is arbitrary, and of mnemonic value to the designer) and
        !            35: .I type
        !            36: (which is generic, e.g.,
        !            37: .CW 74LS74 ")."
        !            38: Schematics can be hierarchical; what appears syntactically as
        !            39: a chip is in fact an instance of a
        !            40: .I macro ,
        !            41: (i.e., another drawing) if the file
        !            42: .I "type\c"
        !            43: .CW ".w"
        !            44: .R
        !            45: exists.
        !            46: Real chips have
        !            47: .I pins ,
        !            48: each identified by a
        !            49: .I "pin name"
        !            50: and
        !            51: .I "pin number" ","
        !            52: and a
        !            53: .I "package type" "."
        !            54: Pin names and their mapping onto pin numbers are a property of
        !            55: the chip type; the mapping from pin numbers to physical coordinates
        !            56: is a property of the package type.
        !            57: .LP
        !            58: Pins are connected by
        !            59: .I nets ","
        !            60: which have unique
        !            61: .I "net names"
        !            62: (assigned by the drawing package if
        !            63: omitted by the user).  It is an error for a pin to
        !            64: be connected to more than one net.
        !            65: Nets such as
        !            66: .CW VCC
        !            67: and
        !            68: .CW GND
        !            69: generally need different routing algorithms from ordinary nets;
        !            70: these are called
        !            71: .I "special-signal nets"
        !            72: in cases where the distinction is important.
        !            73: .LP
        !            74: A
        !            75: .I board
        !            76: is a physical mounting for packages.  It is mostly characterized by its
        !            77: .I "pin holes"
        !            78: (available for package insertion) and
        !            79: .I "special-signal pins"
        !            80: (connected to special-signal nets).  An
        !            81: .I
        !            82: .SM I/O
        !            83: .R
        !            84: .I connector ","
        !            85: where signals enter or leave the board, is simply a special case
        !            86: of a chip.
        !            87: .NH
        !            88: Methodology.
        !            89: .LP
        !            90: These are the conventional steps in a design.  Many are necessary simply to
        !            91: maintain consistency between ``source'' and ``object'' files.
        !            92: We will collect all of this into a
        !            93: .CW mkfile
        !            94: in a later section.
        !            95: .nr P 0 1
        !            96: .IP (\n+P)
        !            97: The interactive program
        !            98: .I jraw
        !            99: is used to construct schematics, kept in files
        !           100: whose names end with
        !           101: .CW ".j" "."
        !           102: The semantics of a circuit diagram (its
        !           103: .CW ".w"
        !           104: file) are derived from the
        !           105: .CW ".j"
        !           106: file by running
        !           107: .I "jraw -w" "."
        !           108: .IP (\n+P)
        !           109: Any editor may be used to create files in
        !           110: .CW lde
        !           111: format for logic that is to be implemented with
        !           112: .SM PAL "'s."
        !           113: These filenames end with
        !           114: .CW ".e" "."
        !           115: Pin information resides in a corresponding
        !           116: .CW ".p"
        !           117: file, generated by
        !           118: .I "lde -W" "."
        !           119: .IP (\n+P)
        !           120: A
        !           121: .CW ".pins"
        !           122: file, that matches pin names with numbers for each chip type, must
        !           123: be constructed.  Most pin information comes from standard libraries,
        !           124: but the user must generally supply some of it, usually for
        !           125: .SM I/O
        !           126: connectors (\c
        !           127: .CW io.pins ")"
        !           128: or non-standard chips (\c
        !           129: .CW my.pins ")."
        !           130: .I Mkpins
        !           131: reads
        !           132: .CW ".w"
        !           133: files,
        !           134: .CW ".p"
        !           135: files, and pin libraries to produce the
        !           136: .CW ".pins"
        !           137: file.
        !           138: .IP (\n+P)
        !           139: .I "Cdmglob -f -v"
        !           140: reads the
        !           141: .CW ".w"
        !           142: and
        !           143: .CW ".pins"
        !           144: files to produce a
        !           145: .CW ".wx"
        !           146: file, in which all macros are expanded, and nets are described in terms of
        !           147: pin numbers.
        !           148: .IP (\n+P)
        !           149: At this point one may do static circuit checks with
        !           150: .I smoke "."
        !           151: .IP (\n+P)
        !           152: Most files discussed so far have to do with the logical part of the design, and,
        !           153: except for
        !           154: .CW ".e"
        !           155: files, are in
        !           156: .SM CDL
        !           157: (Circuit Design Language).  The remainder of the physical design files are in
        !           158: .SM FIZZ
        !           159: format.  So, at this point, one uses
        !           160: .I "fizz cvt"
        !           161: to turn the
        !           162: .CW ".wx"
        !           163: file into a
        !           164: .CW ".fx"
        !           165: file.
        !           166: .IP (\n+P)
        !           167: As with the
        !           168: .CW ".pins"
        !           169: file, one creates a
        !           170: .CW ".pkg"
        !           171: file with geometric descriptions of each package type.
        !           172: .IP (\n+P)
        !           173: A geometric description of the board (\c
        !           174: .CW ".brd"
        !           175: file) is made.
        !           176: .IP (\n+P)
        !           177: Chip positioning information (\c
        !           178: .CW ".pos"
        !           179: file) is generated.  This is usually done interactively with
        !           180: .I "fizz place" "."
        !           181: .IP (\n+P)
        !           182: The wrap list (\c
        !           183: .CW ".wr"
        !           184: file) is now made, and one can physically wrap the board.
        !           185: .IP (\n+P)
        !           186: To make changes, one generates a new
        !           187: .CW ".wr"
        !           188: file;
        !           189: .I rework
        !           190: then compares the new and old wrap files and generates separate lists
        !           191: for unwrapping and rewrapping.
        !           192: .NH
        !           193: Using
        !           194: .BI jraw .
        !           195: .LP
        !           196: .NH
        !           197: Signal Bundles and Macros.
        !           198: .LP
        !           199: Consider this buffer between two 8-bit busses:
        !           200: .PS <fig1.pic
        !           201: It illustrates several
        !           202: .I jraw
        !           203: conventions.  The
        !           204: .I chip
        !           205: is indicated by a box; its
        !           206: .I name
        !           207: is
        !           208: .CW buffer ;
        !           209: its
        !           210: .I type
        !           211: is
        !           212: .CW 74F244 .
        !           213: These are simply unattached text strings that appear stacked inside the
        !           214: box.
        !           215: .I "Pin names"
        !           216: (e.g.,
        !           217: .CW D0 )
        !           218: are strings that appear on the inside edge of the box.
        !           219: .I Nets
        !           220: are lines that end on a pin.
        !           221: .I "Net names"
        !           222: are strings that are placed on nets.  A trailing
        !           223: .CW "-"
        !           224: conventionally indicates an active-low signal.
        !           225: .LP
        !           226: Even this trivial example involves repeated patterns.
        !           227: A much more succint equivalent is:
        !           228: .PS <fig2.pic
        !           229: The
        !           230: .I generator
        !           231: .CW "x<0:7>"
        !           232: expands into the ordered list
        !           233: .CW x0 ,
        !           234: .CW x1 ,...
        !           235: .CW x7 .
        !           236: The
        !           237: .I pattern
        !           238: .CW "D?\&"
        !           239: matches two-character pin names that begin with
        !           240: .CW D .
        !           241: (The space of possible names comes from the
        !           242: .CW .pins
        !           243: file entry for the chip type.)
        !           244: The names that match the pattern are
        !           245: .I "sorted alphabetically"
        !           246: and put into correspondance with the nets.
        !           247: .LP
        !           248: If connected sets of nets and pins do not have the same cardinality,
        !           249: the smaller set is reused until the larger is exhausted.  Thus in the
        !           250: example, the
        !           251: .CW drive-
        !           252: net gets connected to both
        !           253: .CW OE0-
        !           254: and
        !           255: .CW OE1- ,
        !           256: as desired.
        !           257: .LP
        !           258: Frequently one has a group of chips that will be used or replicated as
        !           259: a unit.  In such a case it makes sense to define a
        !           260: .I macro
        !           261: that may be instantiated as required.  A macro lives in its own file.
        !           262: Here is an example,
        !           263: .CW opm.j :
        !           264: .PS <opm.pic
        !           265: The dotted box (produced by selecting
        !           266: .CW macro
        !           267: in
        !           268: .I jraw ")"
        !           269: identifies the circuit as a macro.  Strings outside of this box
        !           270: (conventionally in upper case) are ``pin names'' visible to the
        !           271: outside world.  Most names inside the box will be made local to
        !           272: each instantiation.  Net names beginning with
        !           273: .CW "/"
        !           274: are ``globals,'' i.e., they represent the same signal throughout
        !           275: the design.
        !           276: .CW "/VCC"
        !           277: and
        !           278: .CW "/GND"
        !           279: are the most common global signals.
        !           280: .LP
        !           281: Now we use generators to make several instances of
        !           282: .CW opm.j :
        !           283: .PS <opmcall.pic
        !           284: Sixteen copies of the
        !           285: .CW opm
        !           286: circuit are made.  The pattern
        !           287: .CW "D?\&"
        !           288: is at a lower, i.e., ``faster running,'' level than
        !           289: .CW "opm<00:15>" ,
        !           290: with the effect that all the
        !           291: .CW D0 "'s"
        !           292: are connected to
        !           293: .CW "bd0" ,
        !           294: all the
        !           295: .CW D1 "'s"
        !           296: are connected to
        !           297: .CW "bd1" ,
        !           298: etc; similarly, all the
        !           299: .CW A0 "'s"
        !           300: are connected to
        !           301: .CW ba0 .
        !           302: On the other hand, all the
        !           303: .CW "CS-" "'s"
        !           304: are separate:
        !           305: .CW "opm00/CS-"
        !           306: (the instance of
        !           307: .CW CS-
        !           308: in
        !           309: .CW opm00 )
        !           310: is connected to
        !           311: .CW "ops00-" ,
        !           312: .CW "opm01/CS-"
        !           313: is connected to
        !           314: .CW "ops01-" ,
        !           315: etc.  The manual entries for
        !           316: .I cdm
        !           317: and
        !           318: .I cdmglob
        !           319: should be consulted for all the details.
        !           320: .NH
        !           321: A Toy Example.
        !           322: .LP
        !           323: In this section we present a complete example.  The design consists of
        !           324: two
        !           325: .SM I/O
        !           326: connectors that route signals from a ribbon cable to a backplane.
        !           327: Here is the schematic, followed by the
        !           328: .CW ".w"
        !           329: file:
        !           330: .PS <toy.pic
        !           331: .nr dP 2       \" delta point size for program
        !           332: .nr dV 2p      \" delta vertical for programs
        !           333: .P1
        !           334: .so toy.w.l
        !           335: .P2
        !           336: .LP
        !           337: The comments (introduced by
        !           338: .CW % )
        !           339: are coordinates from the
        !           340: .CW .j
        !           341: file that can be used later to annotate the drawing with pin numbers.
        !           342: Otherwise the
        !           343: .CW .w
        !           344: file is mostly just a compendium of the text strings in the
        !           345: .CW .j
        !           346: file.
        !           347: In order to proceed further, we need a
        !           348: .CW .pins
        !           349: file:
        !           350: .P1
        !           351: .so toy.pins.l
        !           352: .P2
        !           353: .LP
        !           354: It should be fairly obvious what is going on here.  Note the appearance of the
        !           355: .I "package type"
        !           356: on the
        !           357: .CW .t
        !           358: lines.
        !           359: Now the
        !           360: .CW .wx
        !           361: file can be made:
        !           362: .P1
        !           363: .so toy.wx.l
        !           364: .P2
        !           365: .LP
        !           366: This is basically a listing, for each chip, of net\ name\-pin\ number pairs.
        !           367: Package types are copied through from the
        !           368: .CW .pins
        !           369: file for use by the physical design tools, and
        !           370: the pin names are left as an aid to humans.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.