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