|
|
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.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.