Annotation of 41BSD/cmd/cifplot/cifplot.l, revision 1.1.1.1

1.1       root        1: .TH CIFPLOT PUBLIC 2/1/80
                      2: .UC
                      3: .SH NAME
                      4: cifplot \- CIF interpreter and plotter
                      5: .SH SYNOPSIS
                      6: .B cifplot
                      7: [
                      8: .I options
                      9: ]
                     10: file1.cif
                     11: [
                     12: file2.cif ...
                     13: ]
                     14: .SH DESCRIPTION
                     15: .I Cifplot
                     16: takes a description in Cal-Tech Intermediate Form (CIF) and
                     17: produces a plot.
                     18: CIF is a low-level graphics language suitable for describing
                     19: integrated circuit layouts.
                     20: Although CIF can be used for other graphics applications,
                     21: for ease of discussion it will be assumed that CIF is used to
                     22: descibe integrated circuit designs.
                     23: .I Cifplot
                     24: interprets any legal CIF 2.0  description including symbol renaming
                     25: and Delete Definition commands.
                     26: In addition,
                     27: a number of local extensions have been added to CIF,
                     28: including text on plots and include files.
                     29: These are discussed later.
                     30: Care has been taken to avoid any arbitrary restrictions on
                     31: the CIF programs that can be plotted.
                     32: .PP
                     33: To get a plot call
                     34: .I cifplot
                     35: with the name of the CIF file to be plotted.
                     36: If the CIF description is divided among several files call
                     37: .I cifplot
                     38: with the names of all files to be used.
                     39: .I Cifplot
                     40: reads the CIF description from the files in the order
                     41: that they appear on the command line.
                     42: Therefore the CIF End command should be only in the last file since
                     43: .I cifplot
                     44: ignores everything after the end command.
                     45: After reading the CIF description but before plotting,
                     46: .I cifplot
                     47: will print a estimate of the size of the plot
                     48: and then ask if it should continue to produce a plot.
                     49: Type
                     50: .B y
                     51: to proceed and
                     52: .B n
                     53: to abort.
                     54: A typical run might look as follows:
                     55: .PP
                     56: .in +0.5i
                     57: %
                     58: .B
                     59: cifplot lib.cif sorter.cif
                     60: .br
                     61: Window -5700 174000 -76500 168900
                     62: .br
                     63: Scale: 1 micron is 0.004075 inches
                     64: .br
                     65: The plot will be 0.610833 feet
                     66: .br
                     67: Do you want a plot?
                     68: .B y
                     69: .PP
                     70: After typing
                     71: .I y
                     72: .I cifplot
                     73: will produce a plot on the Benson-Varian plotter.
                     74: Options to send the plot to a different device are discussed in the
                     75: next section.
                     76: .PP
                     77: .B Options
                     78: .PP
                     79: The following is a list of options that may be included on
                     80: the command line:
                     81: .br
                     82: .sp
                     83: .in 1.2i
                     84: .ti -0.5i
                     85: .B -w
                     86: .I xmin xmax ymin ymax
                     87: .br
                     88: .B window:
                     89: The -w options specifies the window;
                     90: by default the window is set to be large enough
                     91: to contain the entire plot.
                     92: The windowing commands lets you plot just a small
                     93: section of your chip, enabling you to see it in better
                     94: detail.
                     95: .I Xmin, xmax, ymin,
                     96: and
                     97: .I ymax
                     98: should be specified in CIF co-ordinates.
                     99: .sp    
                    100: .ti -0.5i
                    101: .B -s 
                    102: .I float
                    103: .br
                    104: .B scale:
                    105: The -s option sets the scale of the plot.
                    106: By default the scale is set so that the window will fill the
                    107: whole page.
                    108: .I Float
                    109: is a floating point number specifying the number of inches
                    110: which represents
                    111: 1 micron.
                    112: A recommended size is 0.02.
                    113: .sp    
                    114: .ti -0.5i
                    115: .B -l 
                    116: .I layer_list
                    117: .br
                    118: .B layer:
                    119: Normally all layers are plotted.
                    120: The -l option specifies which layers NOT to plot.
                    121: The
                    122: .I layer_list
                    123: consists of the layer names separated by commas, no spaces.
                    124: There are two reserved names:
                    125: .B text
                    126: and
                    127: .BR bbox .
                    128: Including the layer name
                    129: .B text
                    130: in the list suppresses the plotting of text;
                    131: .B bbox
                    132: suppresses the bounding box around symbols.
                    133: .sp
                    134: .ti -0.5i
                    135: .B -d
                    136: .I n
                    137: .br
                    138: .B depth:
                    139: This option lets you limit the amount of detail plotted
                    140: in a hierarchically designed chip.
                    141: It will only instanciate the plot down
                    142: .I n
                    143: levels of calls.
                    144: Sometimes too much detail can hide important features in a circuit.
                    145: .sp
                    146: .ti -0.5i
                    147: .B -g
                    148: .I n
                    149: .br
                    150: .B grid:
                    151: Draw a grid over the plot with spacing every
                    152: .I n
                    153: CIF units.
                    154: .sp
                    155: .ti -0.5i
                    156: .B -f  fuzzy:
                    157: Don't print the border outlines around the merged features on each layer.
                    158: .sp
                    159: .ti -0.5i
                    160: .B -h  half:
                    161: Plot at half normal resolution.
                    162: .I
                    163: (Not yet implemented.)
                    164: .sp
                    165: .ti -0.5i
                    166: .B -e  extensions:
                    167: Accept only standard CIF. User
                    168: extensions produce warnings.
                    169: .sp
                    170: .ti -0.5i
                    171: .B -I  non-Interactive:
                    172: Do not ask for confirmation.
                    173: Always plot.
                    174: .sp
                    175: .ti -0.5i
                    176: .B -L  List:
                    177: Produce a listing of the CIF file as it is parsed.
                    178: Not recommended unless debugging hand-coded CIF
                    179: since CIF code can be rather long.
                    180: .sp
                    181: .ti -0.5i
                    182: .B -a
                    183: .I n
                    184: .br
                    185: .B approximate:
                    186: Approximate a roundflash with an
                    187: .IR n -sided
                    188: polygon.
                    189: By default
                    190: .I n
                    191: equals 8.
                    192: (I.e. roundflashes are approximated by octagons.)
                    193: If
                    194: .I n
                    195: equals 0 then output circles for roundflashes.
                    196: (It is best not to use full circles since they significantly
                    197: slow down plotting.)
                    198: .I
                    199: (Full circles not yet implemented.)
                    200: .sp
                    201: .ti -0.5i
                    202: .B -b
                    203: .I
                    204: "text"
                    205: .br
                    206: .B banner:
                    207: Print the text at the top of the plot.
                    208: .sp
                    209: .ti -0.5i
                    210: .B -C  Comments:
                    211: Treat comments as though they were spaces.
                    212: Sometimes CIF files created at other universities
                    213: will have several errors due to syntaxically incorrect comments.
                    214: (I.e. the comments may appear in the middle of a CIF command or
                    215: the comment does not end with a semi-colon.)
                    216: Of course, CIF files should not have any errors
                    217: and these comment related errors must be fixed
                    218: before transmitting the file for fabrication.
                    219: But many times fixing these errors seems to be more trouble
                    220: than it is worth, especically if you just want to get a plot.
                    221: This option is useful in getting rid of many of these
                    222: comment related syntax errors.
                    223: .sp
                    224: .ti -0.5i
                    225: .B -r  rotate:
                    226: Rotate the plot 90 degrees.
                    227: .sp
                    228: .ti -0.5i
                    229: .B -V  Varian:
                    230: Send output to the varian.
                    231: (This is the default option.)
                    232: .sp
                    233: .br
                    234: .ti -0.5i
                    235: .B -W  Wide:
                    236: Send output directly to the versatec.
                    237: .sp
                    238: .ti -0.5i
                    239: .B -S  Spool:
                    240: Store the output in a temporary file then
                    241: dump the output quickly onto the Versatec.
                    242: Makes nice crisp plots;
                    243: also takes up a lot of disk space.
                    244: .sp
                    245: .br
                    246: .ti -0.5i
                    247: .B -T
                    248: .I n
                    249: .br
                    250: .B Terminal:
                    251: Send output byte stream to standard output.
                    252: Useful for setting up pipes.
                    253: .I N
                    254: is the number of bytes per line that the plotting device expects.
                    255: .I
                    256: (Not yet implemented.)
                    257: .sp
                    258: .br
                    259: .ti -0.5i
                    260: .B -H  HP2648:
                    261: Send output to HP2648A terminal.
                    262: This requires that
                    263: .I cifplot
                    264: is running in the foreground on an HP2648
                    265: and that there is a scratch tape in the left tape drive of the terminal.
                    266: .I
                    267: (Not yet fully implemented.)
                    268: .sp
                    269: .ti -0.5i
                    270: .B -X
                    271: .I basename
                    272: .br
                    273: .B eXtractor:
                    274: From the CIF file create a circuit description
                    275: suitable for switch level simulation.
                    276: It creates two files:
                    277: .IB basename .sim
                    278: which contains the circuit description, and
                    279: .IB basename .node
                    280: which contains the node numbers and their location
                    281: used in the circuit description.
                    282: .sp
                    283: When this option is invoked no plot is made.
                    284: Therefore it is advisable not to use any of the other
                    285: options that deal only with plotting.
                    286: However, the
                    287: .IR window ,
                    288: .IR layer ,
                    289: and
                    290: .I approximate
                    291: options are still appropriate.
                    292: To get a plot of the circuit with the node numbers call
                    293: .I cifplot
                    294: again, without the
                    295: .B -X
                    296: option, and include
                    297: .IB basename .nodes
                    298: in the list of CIF files to be plotted.
                    299: (This file must appear in the list of files
                    300: before the file with the CIF End command.)
                    301: .I
                    302: (Not yet implemented.)
                    303: .sp
                    304: .ti -0.5i
                    305: .B -P
                    306: .I pattern_file
                    307: .br
                    308: .B Pattern:
                    309: The -P option lets you specify your own
                    310: layers and stipple patterns.
                    311: .I Pattern_file
                    312: may contain an arbitrary number of layer descriptors.
                    313: A layer descriptor is the layer name in double quotes,
                    314: followed by 8 integers.
                    315: Each integer specifies 32 bits
                    316: where ones are black and zeroes are white.
                    317: Thus the 8 integers specify a 32 by 8 bit stipple pattern.
                    318: The integers may be in decimal, octal, or hex.
                    319: Hex numbers start with '0x';
                    320: octal numbers start with '0'.
                    321: The CIF syntax requires that layer names be made up of
                    322: only uppercase letters and digits,
                    323: and not longer than four characters.
                    324: .br
                    325: .sp
                    326: .ti -0.5i
                    327: .B -F
                    328: .I font_file
                    329: .br
                    330: .B Font
                    331: The -F option indicates which font you want for your text.
                    332: The file must be in the directory '/usr/lib/font'.
                    333: The default font is Roman 6 point.
                    334: Obviously, this command is only useful if you have text on your plot.
                    335: .sp
                    336: .ti -0.5i
                    337: .B -O
                    338: .I filename
                    339: .br
                    340: .B Output:
                    341: After parsing the CIF files, store an equivalent but easy to parse
                    342: CIF description in the specified file.
                    343: This option removes the include and array commands (see next section)
                    344: and replaces them with equivalent standard CIF statements.
                    345: .in -1.2i
                    346: .PP
                    347: .B Local Extensions
                    348: .PP
                    349: .I Cifplot
                    350: recognizes a number of extensions to standard CIF.
                    351: All extension commands begin with a number.
                    352: The following is a list of them.
                    353: .de Q1
                    354: .br
                    355: .sp
                    356: .ti -0.5i
                    357: ..
                    358: .in 1.2i
                    359: .Q1
                    360: .B 0I
                    361: .IB filename ;
                    362: .br
                    363: .B Include:
                    364: Read from the specified file
                    365: as though it appeared in place of this command.
                    366: Include files can be nested up to 6 deep.
                    367: .Q1
                    368: .B 0A
                    369: .I s m n dx
                    370: .IB dy ;
                    371: .br
                    372: .B Array:
                    373: Repeat symbol
                    374: .I s m
                    375: times with
                    376: .I dx
                    377: spacing in the x-direction
                    378: and
                    379: .I n
                    380: times with
                    381: .I dy
                    382: spacing in the y-direction.
                    383: .I s, m,
                    384: and
                    385: .I n
                    386: are unsigned integers.
                    387: .I dx
                    388: and
                    389: .I dy
                    390: are signed integers in CIF units.
                    391: .Q1
                    392: .B 1
                    393: .IB message ;
                    394: .br
                    395: .B Print:
                    396: Print out the message on standard output when it is read.
                    397: .Q1
                    398: .B 2
                    399: .I
                    400: "text"
                    401: .IB transform ;
                    402: .ti -0.5i
                    403: .br
                    404: .B 2C
                    405: .I
                    406: "text"
                    407: .IB transform ;
                    408: .br
                    409: .B Text on Plot:
                    410: .I Text
                    411: is placed on the plot
                    412: at the position specified by the transformation.
                    413: The allowed transformations are the same as the
                    414: those allowed for the Call command.
                    415: The transformation affects only the point at which the beginning
                    416: of the text is to appear.
                    417: The text is always plotted horizontally,
                    418: thus the mirror and rotate transformations
                    419: are not really of much use.
                    420: Normally text is placed above and to the right of the reference point.
                    421: The
                    422: .B 2C
                    423: command centers the text about the reference point.
                    424: .Q1
                    425: .B 9
                    426: .IB name ;
                    427: .br
                    428: .B Name symbol:
                    429: .I name
                    430: is associated with the
                    431: current symbol.
                    432: .Q1
                    433: .B 94
                    434: .I name x
                    435: .IB y ;
                    436: .ti -0.5i
                    437: .br
                    438: .B 94
                    439: .I name x y
                    440: .IB layer ;
                    441: .br
                    442: .B Name point:
                    443: .I name
                    444: is associated with the point
                    445: .RI ( x,
                    446: .IR y ).
                    447: Any mask geometry crossing this point is also associated with
                    448: .IR name .
                    449: If
                    450: .I layer
                    451: is present then just geometry crossing the point
                    452: on that layer is associated with
                    453: .IR name .
                    454: For plotting this command is simialar to text on plot.
                    455: When doing circuit extraction this command is used to
                    456: give an explicit name to a node.
                    457: .I Name
                    458: must not have any spaces in it,
                    459: and it should not be a number.
                    460: .in -1.0i
                    461: .SH FILES
                    462: /usr/public/cifplot
                    463: .SH ALSO SEE
                    464: .I
                    465: A Guide to LSI Implementation
                    466: by Hon and Se\*'quin,
                    467: Second Edition
                    468: (Xerox PARC, 1980)
                    469: for a description of CIF.
                    470: .br
                    471: .I
                    472: Introduction to VLSI Systems
                    473: by Mead and Conway
                    474: (Addison-Wesley,
                    475: 1980)
                    476: .sp
                    477: mkcif (public)
                    478: .br
                    479: vdump (public)
                    480: .SH AUTHOR
                    481: Dan Fitzpatrick

unix.superglobalmegacorp.com

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