Annotation of 40BSD/cmd/cifplot/cifplot.l, revision 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.