|
|
1.1 ! root 1: .PD .2i ! 2: .ds or \fP\ |\ \fB ! 3: .de cg ! 4: .sp ! 5: .PP ! 6: .ne 5 ! 7: .B \\$1 ! 8: .PP ! 9: .. ! 10: .TH CDL 10.5 UCDS(almost obsolete) ! 11: .SH NAME ! 12: cdl \- circuit description language ! 13: .SH DESCRIPTION ! 14: The circuit descriptions used by the various design aid programs ! 15: are expressed in dialects of the circuit design language described below. ! 16: A complete description consists of two parts; ! 17: an electrical circuit with chips, pins and connecting signals, ! 18: and a physical layout with pins and chip positions. ! 19: The commands described below are recommended; ! 20: others exist and may work but are regarded as obsolete. ! 21: .sp ! 22: .PP ! 23: .SS LOGICAL DESIGN ! 24: .PP ! 25: A circuit consists of ! 26: .I chips ! 27: connected by ! 28: .I signals. ! 29: The point of connection is denoted by a ! 30: .I pin. ! 31: Each chip has a ! 32: .I type ! 33: which describes its logical and electrical ! 34: characteristics. ! 35: (For example, \fB74S181\fP is a chip type.) ! 36: .PP ! 37: Types, signals and chips are identified by name. ! 38: Pins are identified by name and number. ! 39: A ! 40: .I name ! 41: is a string of letters, ! 42: digits or any of the characters ! 43: .BR +\-.\ $\ /:<=>[]\(ul . ! 44: Sometimes, the first character ! 45: may not be a digit. ! 46: A name may not be longer than 16 characters. ! 47: .PP ! 48: In the following description, ! 49: literals appear as ! 50: .B bold, ! 51: whereas names are in ! 52: .I italic. ! 53: [ ] enclose an optional item and ! 54: a list of items is written ! 55: .PP ! 56: .RS ! 57: {\fIitem\fR} ! 58: .RE ! 59: .PP ! 60: Commands are separated by either newline or ! 61: semi-colon. ! 62: A comment ! 63: starts with a ! 64: .B % ! 65: and ends with a newline ! 66: and may appear on any line. ! 67: All white space serves only to separate tokens. ! 68: .cg General ! 69: .B .p ! 70: .I number ! 71: .br ! 72: Specifies the page number for subsequent input. ! 73: .PP ! 74: .B .f ! 75: [ ! 76: .I file ! 77: ] ! 78: .br ! 79: Subsequent input originated in ! 80: .IR file . ! 81: If ! 82: .I file ! 83: is not present, the previous file name is restored. ! 84: .PP ! 85: .B .q ! 86: .br ! 87: End of file. ! 88: .cg Signal\ Description ! 89: .I signal ! 90: [ ! 91: .I pin-number ! 92: ] [ [ ! 93: .I , ! 94: ] ! 95: .I pin-name ! 96: ] ! 97: .br ! 98: .I name ! 99: = ! 100: .I signal ! 101: .br ! 102: Lines that do not start with a period are signal ! 103: definition lines. ! 104: Signal definitions refer to the most recent ! 105: .B .c ! 106: command, the pin name and number refers to the chip. ! 107: .cg Circuit\ Description ! 108: .B .c ! 109: .I name ! 110: [ [ ! 111: .B , ! 112: ] ! 113: .I type ! 114: ] ! 115: .br ! 116: .B .o ! 117: .I name ! 118: [ [ ! 119: .B , ! 120: ] ! 121: .I type ! 122: ] ! 123: .br ! 124: Instantiates a chip ! 125: .I name, ! 126: of type ! 127: .IR type . ! 128: This is typically used for I/O connectors. ! 129: The command may occur more than once. ! 130: The type of a chip need only be specified ! 131: once in a circuit description. ! 132: Signal descriptions that follow ! 133: a ! 134: .B .c ! 135: or ! 136: .B .o ! 137: command refer to pins on the chip. ! 138: .PP ! 139: .ne 10 ! 140: .B .c ! 141: .I name ! 142: .B = ! 143: .I chip ! 144: .br ! 145: .I chip ! 146: must be previously defined and ! 147: .I name ! 148: is a synonym for ! 149: .I chip. ! 150: .PP ! 151: .B .m ! 152: .I name1 name2 ! 153: .br ! 154: Macro parameter definition. ! 155: The signal ! 156: .I name1 ! 157: is to be associated with macro parameter ! 158: .I name2\|. ! 159: .PP ! 160: .B .h ! 161: .I signal ! 162: .br ! 163: Hand wired signal. ! 164: The argument is the ! 165: .I name ! 166: of a signal that will be ignored by an ! 167: automatic wiring program. ! 168: .cg Chip\ Type\ Description ! 169: .B .t ! 170: .I name package ! 171: .RI [ pin ]\ ... ! 172: .br ! 173: Define a chip type ! 174: .I name. ! 175: The name of the ! 176: .I package ! 177: in which it is installed, ! 178: and pin numbers, ! 179: .I pin, ! 180: for the special signal connections ! 181: are specified. ! 182: The special voltage ! 183: pin numbers, if present, must be in the same ! 184: sequence with which the special signals are numbered. ! 185: This usage is discouraged; ! 186: use the \f3.t[tT]\fP commands described below. ! 187: (See ! 188: .B .v ! 189: command.) ! 190: All commands of the form ".t?" are meant to follow a .t line. ! 191: .PP ! 192: .B .t ! 193: .I name ! 194: .B = ! 195: .I type ! 196: .br ! 197: .I name ! 198: is a synonym for ! 199: .IR type . ! 200: .PP ! 201: .BI .tt \ sequence_of_single_character_pin_descriptors ! 202: .br ! 203: The number of characters must equal the numbers of pins on this \fItype\fP\|. ! 204: The meaning of the descriptors is given in \fIwcheck\fP\|. ! 205: .PP ! 206: .BI .tT \ sequence_of_single_character_pin_descriptors ! 207: .br ! 208: This means the same as the equivalent ! 209: .B .tt ! 210: command except that every ! 211: .B [gvwxyz] ! 212: pin must have a corresponding ! 213: .B .vb ! 214: pin. ! 215: .PP ! 216: .B .ta ! 217: .I pin1 ! 218: \&... ! 219: .I pin2 ! 220: \&... ! 221: .br ! 222: .I pin1 ! 223: \&... ! 224: is the set of address pins, in order, ! 225: such that the most significant address bit ! 226: appears first in the list. ! 227: .I pin2 ! 228: \&... ! 229: is the set of output pins. ! 230: .PP ! 231: .B .td ! 232: .I delay ! 233: .I pin1 ! 234: \&... ! 235: .B \- ! 236: .I pin2 ! 237: \&... ! 238: .br ! 239: The propagation delay (conventionally in nanoseconds) from inputs ! 240: .I pin1 ... ! 241: to outputs ! 242: .I pin2 ... ! 243: is given. ! 244: .PP ! 245: .B .ti ! 246: .I hi ! 247: .I lo ! 248: .I pin ! 249: \&... ! 250: .br ! 251: The input (or output) current range for the set of pins ! 252: is given by ! 253: .I hi ! 254: and ! 255: .I lo. ! 256: Current is conventionally expressed in milliamperes. ! 257: .PP ! 258: .B .tp ! 259: .I name ! 260: .I number ! 261: \&... ! 262: .br ! 263: The given ! 264: pin ! 265: .I name ! 266: is associated with the pin ! 267: .I number. ! 268: .I Name ! 269: may contain generators such as ! 270: .B Q[0-7] ! 271: which cause pin names ! 272: .B Q0 ! 273: .B \&... ! 274: .B Q7 ! 275: to be assigned to the pin numbers given. ! 276: Multiple bracket constructs may be used. ! 277: In any case, the resulting list is lexicographically sorted before ! 278: assigning to pin numbers. ! 279: .PP ! 280: .B .ts ! 281: .I setup ! 282: .I pin ! 283: \&... ! 284: .br ! 285: Specifies the setup time required by the device ! 286: at the pins given. ! 287: .PP ! 288: .B .tw ! 289: .I c1 ! 290: .I c2 ! 291: .br ! 292: .I c1 ! 293: is the average current drawn by the device ! 294: in milliamperes and ! 295: .I c2 ! 296: is the maximum. ! 297: Both are specified as floating point numbers. ! 298: .SH ! 299: .ne 9 ! 300: .sp ! 301: .PP ! 302: .B PHYSICAL DESIGN ! 303: .PP ! 304: The physical design ! 305: consists of a ! 306: .I board ! 307: containing ! 308: .IR pin-holes . ! 309: The description details the positions of the pin-holes and the ! 310: position and orientation of the chips. ! 311: No special case is made of I/O connectors; ! 312: they are best considered as unmoveable packages. ! 313: The description is divided into two files; ! 314: details can be found in ! 315: .IR board (7). ! 316: .PP ! 317: The coordinate system for the board is with ! 318: .I x ! 319: increasing to the right and ! 320: .I y ! 321: increasing upwards. ! 322: The origin is at the lower left corner; ! 323: thus, no coordinate should ever be negative. ! 324: The circuit board and components mounted on it are described ! 325: as rectangles. ! 326: They are positioned so that their sides are parallel to one or other ! 327: of the axes used to describe circuit board geometry. ! 328: Measurements are expressed in ! 329: units of ! 330: .B 1/100 ! 331: of an inch. ! 332: All are integers and have no explicit decimal point. ! 333: Coordinates are expressed as pairs of integers separated by `\fB/\fR' ! 334: with ! 335: the ! 336: .I x ! 337: coordinate appearing first. ! 338: All rectangular regions are half open; ! 339: the upper and right edges are outside the rectangle. ! 340: .PP ! 341: It is sometimes necessary to provide a list of ! 342: coordinates. ! 343: Invariably each coordinate is associated with a numbered item ! 344: (say, a pin number). ! 345: A one item list consists of the item ! 346: number followed by its coordinates as in ! 347: .RS ! 348: .PP ! 349: 28 170/250 ! 350: .RE ! 351: A series of equally spaced ! 352: and consecutively numbered items can be described by ! 353: giving the first and last item descriptions and separating the ! 354: two with `\fB\-\fR' as in ! 355: .RS ! 356: .PP ! 357: 28 170/250 \- 30 190/200 ! 358: .RE ! 359: (item number 29 appears at position 180/225). ! 360: If the item numbers are equally spaced but not consecutive ! 361: a step size can follow the `\fB\-\fR' as in ! 362: .RS ! 363: .PP ! 364: 12 200/700 \-9 147 200/100 ! 365: .RE ! 366: (which describes the positions of items numbered 12, 21, 30 etc.). ! 367: .cg Board\ Description ! 368: .B .B ! 369: .I string ! 370: .br ! 371: The board name is set to ! 372: .IR string . ! 373: .PP ! 374: .B .A ! 375: .I coord coord coord coord ! 376: .br ! 377: The points used in board alignment are ! 378: .IR "coord , coord , coord , coord ." ! 379: .PP ! 380: .B .K ! 381: .I "name pmin pmax ox oy cx cy" ! 382: .br ! 383: Define a package ! 384: .I name ! 385: with a bounding rectangle with lower left corner ! 386: .I (ox,oy) ! 387: and upper right corner ! 388: .I (cx,cy) ! 389: as values relative to pin ! 390: .I pmin ! 391: of the package. ! 392: The package has pins numbered from ! 393: .I pmin ! 394: to ! 395: .I pmax ! 396: inclusive; ! 397: expect trouble if ! 398: .I pmin ! 399: is not zero or one. ! 400: Placement of a package involves both its pins and rectangle. ! 401: The rectangle must not intersect any other placed package, ! 402: and there must be a pin-hole for each of the pins. ! 403: .PP ! 404: .B .ka ! 405: .I anything ! 406: .br ! 407: After skipping white space ! 408: the rest of the line is stored as an artwork reference. ! 409: .PP ! 410: .B .kd ! 411: .I letter ! 412: .br ! 413: Specifies the drill type for following ! 414: .B .kp ! 415: commands. ! 416: There can be multiple ! 417: .B .kd ! 418: commands per package. ! 419: Currently recognized drill types are found in ! 420: \f(CW/usr/jhc/pins/drills\fP. ! 421: .PP ! 422: .B .kp ! 423: .RI {\| pin ! 424: .IR coord } ! 425: .br ! 426: One or more ! 427: .B .kp ! 428: commands following a ! 429: .B .k ! 430: command ! 431: gives the list of pins ! 432: and their coordinates relative to pin ! 433: .IR pmin . ! 434: .PP ! 435: .B .ku ! 436: .br ! 437: Guarantees this package will not be moved by any automatic process. ! 438: .PP ! 439: .B .v ! 440: .I number name ! 441: .br ! 442: Define Voltage and Ground special signals. ! 443: The special signals are numbered consecutively from zero to five. ! 444: The arguments are ! 445: the special signal ! 446: .I number ! 447: and the signal ! 448: .I name ! 449: to which it corresponds. ! 450: .PP ! 451: .B .vb ! 452: .RI { pin ! 453: .IR coord } ! 454: .br ! 455: Special signal pin positions. ! 456: One or more ! 457: .B .vb ! 458: commands following a ! 459: .B .v ! 460: command gives the list of pins ! 461: and their positions on the circuit board. ! 462: The pins should be numbered consecutively from one. ! 463: .PP ! 464: .B .vd ! 465: .I number ! 466: .br ! 467: Specifies the drill type for following ! 468: .B .vb ! 469: commands. ! 470: There can be multiple ! 471: .B .vd ! 472: commands. ! 473: The types are as descibed for \f3.kd\fP. ! 474: .PP ! 475: .B .C ! 476: .I name coord orientation flags ! 477: .br ! 478: Specifies the position and orientation for the chip ! 479: .IR name . ! 480: The orientation is the number of right angles clockwise to ! 481: rotate the package. ! 482: The meaning of ! 483: .I flags ! 484: can be found in ! 485: .IR /usr/include/cdl.h ; ! 486: it should be initialised to zero. ! 487: .PP ! 488: .B .P ! 489: .I coord lx ly spacing diam ! 490: .br ! 491: Define a rectangular array of pin-holes with diameter of ! 492: .IR diam . ! 493: The lower left corner of the rectangle is ! 494: .IR coord , ! 495: and the width and height are ! 496: .I lx,ly ! 497: respectively. ! 498: The pins are placed ! 499: .I spacing ! 500: apart. ! 501: If ! 502: .I spacing ! 503: is of the form ! 504: .IR sx / sy , ! 505: the spacings in the ! 506: .IR x and y ! 507: directions are set independently. ! 508: .PP ! 509: .B .R ! 510: .I coord lx ly type ! 511: .br ! 512: Define a special rectangular region. ! 513: Type ! 514: .B .A ! 515: defines a region that will not be used by the ! 516: automatic placement algorithm. ! 517: .PP ! 518: .B .W ! 519: .I chip1 pin1 chip2 pin2 net ! 520: .br ! 521: Define a wire link between ! 522: .I pin1 ! 523: of ! 524: .I chip1 ! 525: and ! 526: .I pin2 ! 527: of ! 528: .IR chip2 . ! 529: The net name is ! 530: .IR net . ! 531: .sp 2 ! 532: A line with any undefined key causes most programs to halt. ! 533: .SH SEE ALSO ! 534: .IR cdm (10.1)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.