Annotation of researchv10dc/vol2/Ucds/macro, revision 1.1.1.1

1.1       root        1: .NH
                      2: Signal Bundles and Macros.
                      3: .LP
                      4: Consider this buffer between two 8-bit busses:
                      5: .PS <fig1.pic
                      6: It illustrates several
                      7: .I jraw
                      8: conventions.  The
                      9: .I chip
                     10: is indicated by a box; its
                     11: .I name
                     12: is
                     13: .CW buffer ;
                     14: its
                     15: .I type
                     16: is
                     17: .CW 74F244 .
                     18: These are simply unattached text strings that appear stacked inside the
                     19: box.
                     20: .I "Pin names"
                     21: (e.g.,
                     22: .CW D0 )
                     23: are strings that appear on the inside edge of the box.
                     24: .I Nets
                     25: are lines that end on a pin.
                     26: .I "Net names"
                     27: are strings that are placed on nets.  A trailing
                     28: .CW "-"
                     29: conventionally indicates an active-low signal.
                     30: .LP
                     31: Even this trivial example involves repeated patterns.
                     32: A much more succint equivalent is:
                     33: .PS <fig2.pic
                     34: The
                     35: .I generator
                     36: .CW "x<0:7>"
                     37: expands into the ordered list
                     38: .CW x0 ,
                     39: .CW x1 ,...
                     40: .CW x7 .
                     41: The
                     42: .I pattern
                     43: .CW "D?\&"
                     44: matches two-character pin names that begin with
                     45: .CW D .
                     46: (The space of possible names comes from the
                     47: .CW .pins
                     48: file entry for the chip type.)
                     49: The names that match the pattern are
                     50: .I "sorted alphabetically"
                     51: and put into correspondance with the nets.
                     52: .LP
                     53: If connected sets of nets and pins do not have the same cardinality,
                     54: the smaller set is reused until the larger is exhausted.  Thus in the
                     55: example, the
                     56: .CW drive-
                     57: net gets connected to both
                     58: .CW OE0-
                     59: and
                     60: .CW OE1- ,
                     61: as desired.
                     62: .LP
                     63: Frequently one has a group of chips that will be used or replicated as
                     64: a unit.  In such a case it makes sense to define a
                     65: .I macro
                     66: that may be instantiated as required.  A macro lives in its own file.
                     67: Here is an example,
                     68: .CW opm.j :
                     69: .PS <opm.pic
                     70: The dotted box (produced by selecting
                     71: .CW macro
                     72: in
                     73: .I jraw ")"
                     74: identifies the circuit as a macro.  Strings outside of this box
                     75: (conventionally in upper case) are ``pin names'' visible to the
                     76: outside world.  Most names inside the box will be made local to
                     77: each instantiation.  Net names beginning with
                     78: .CW "/"
                     79: are ``globals,'' i.e., they represent the same signal throughout
                     80: the design.
                     81: .CW "/VCC"
                     82: and
                     83: .CW "/GND"
                     84: are the most common global signals.
                     85: .LP
                     86: Now we use generators to make several instances of
                     87: .CW opm.j :
                     88: .PS <opmcall.pic
                     89: Sixteen copies of the
                     90: .CW opm
                     91: circuit are made.  The pattern
                     92: .CW "D?\&"
                     93: is at a lower, i.e., ``faster running,'' level than
                     94: .CW "opm<00:15>" ,
                     95: with the effect that all the
                     96: .CW D0 "'s"
                     97: are connected to
                     98: .CW "bd0" ,
                     99: all the
                    100: .CW D1 "'s"
                    101: are connected to
                    102: .CW "bd1" ,
                    103: etc; similarly, all the
                    104: .CW A0 "'s"
                    105: are connected to
                    106: .CW ba0 .
                    107: On the other hand, all the
                    108: .CW "CS-" "'s"
                    109: are separate:
                    110: .CW "opm00/CS-"
                    111: (the instance of
                    112: .CW CS-
                    113: in
                    114: .CW opm00 )
                    115: is connected to
                    116: .CW "ops00-" ,
                    117: .CW "opm01/CS-"
                    118: is connected to
                    119: .CW "ops01-" ,
                    120: etc.  The manual entries for
                    121: .I cdm
                    122: and
                    123: .I cdmglob
                    124: should be consulted for all the details.

unix.superglobalmegacorp.com

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