NectarineDoc.Tioga
Copyright Ó 1988 by Xerox Corporation. All rights reserved.
Giordano Bruno Beretta, April 11, 1986 7:57:41 pm PST
gbb September 21, 1988 5:16:00 pm PDT
Nectarine
CEDAR 7.0 — FOR INTERNAL XEROX USE ONLY
Nectarine
Fuzzless and sweeter than peaches
Giordano Beretta
© Copyright 1986, 1987, 1988 Xerox Corporation. All rights reserved.
Abstract: The ultimate layout and schematics documentation and printing system. Creates Interpress masters and does with them anything you might dream of: stuffs into Tioga documents, prints on Interpress servers and Peach servers, in black and white or in colour, expanding on the printer server or on a special expansion server. Once three buttons are bugged to answer three orthogonal questions (what, where, how often), all the magic happens with the single press of a button. The Interpress masters can be further manipulated with Gargoyle.
Created by: Giordano Bruno Beretta
Maintained by: DAToolsImplementors^.pa
Keywords: ChipNDale, ChipNSil, Design Automation Tools, Documentation, Document Processing, Graph Display, Illustration, Imaging, Interpress, Layout Printing, PD Files, Peach Expansion, Peach Printing, Printing, Schematics Printing, Technology Independence, Tioga Illustration
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. Brief Manual
The easiest way to print a ChipNDale image is to produce an Interpress master, which can be printed on a variety of devices. To this purpose the control panel contains a line of Interpress buttons on the bottom (you may have to scroll it up). The framed button, labelled "Nectarine", causes an Interpress master to be created. The contents and end are controlled by three sets of buttons on the same line. They are labelled "What", "Where", and "Copies". For the first two you can scroll through the options by bugging the button, while the last one can be filled in by editing the value.
Those of the first set ("What") are labelled "Design", "Wysiwyg" and "Selection". If you bug "Design", Nectarine creates an Interpress master containing your full design. If you bug "Wysiwyg", Nectarine will put in the Interpress master only what you see in the viewer (what you see is what you get). Similarly, "Selection" will cause only the selected cells to be included in the Interpress master. Watch for the file name in the terminal viewer (it may be different from what you expect).
The buttons of the second set ("Where") are labelled after the printers currently supported (i.e. the Interpress and the Peach printers) and a Tioga document. Some printers have a fast mode for black and white drawings (e.g., schematics). Complex layout for the color Versatec should be sent to the Peach Expand server, from where they are automatically printed (see section 4 on how to do back-of-the-envelope calculations). See section 5 for the default names.
Figures in Tioga documents are scaled so that when printed they are fitted to be flush to the margin of the sibling text node. If you want to include a figure consisting of a cell and you want it as large as possible, do the following:
— flip "What" to "Selection"
— select the cell
— select the Tioga node where you want to insert the figure
— bug Nectarine
If you want to include a set of figures, all in the same scale, proceed as follows:
— flip "What" to "Wysiwyg"
— adjust the ChipNDale viewer so that it looks exactly how you want the figure to look
— select the Tioga node where you want to insert the figure
— bug Nectarine
The tools in "InterpressTools" and Gargoyle can be used to further process the master.
To print it on a Hornet like Stinger, use the goal Raven384. To send the drawing to Stinger, use the TSetter program (select the name in the Terminal viewer and bug the Get and Print buttons in the TSetter viewer).
If you do not have a Nectarine button in the control panels, type "NectarineLayout" in the Command Tool viewer. If you are working only on schematics, Nectarine will run faster, if you type "NectarineSchematics" instead. If you are working on a hybrid technology, type "NectarineHybrid". Similarly there is "NectarineBoard" for printed circuit boards. You can get Nectarine from the directory in which this document is.
Sometimes you may need to print at a given scale, i.e., you want to specify the value of l in millimetres. If you move the ChipNDale control panel on the left or the color column, which usually is wider than the right viewer column, you will notice that after the menu button for the number of copies there is another one. This menu button is labelled "l in mm", and its default value is "0.0". If you overwrite the value with a different real number, Nectarine will scale the data in such a way that in the Interpress master l will have this value. Note that if NectarineImpl.layoutOnly ← FALSE, Nectarine may adjust features, see section 2.
To scale to fit the page set "l in mm" to "0.0".
If the "what" button is on "Design", the "where" button is one of "IP only", "Raven300" or "Raven384", and "l in mm" is different than "0.0" then Nectarine will break the design in pages. The pages will be ordered in the Interpress master from top to bottom and from left to right. Each page has a margin of 1 cm to glue them together. Since Interpress masters are precise, there is no overlap between pages.
Perharps you whish to assemble a multi-page Interpress master from different scattered cells, where this cells may be in different ChipNDale design or all in the saem design. In this case your goal parameter is "hold." If you select this option, only the algorithmic part of Nectarine is executed and the result is stored in a buffer. Subsequentely triggering Nectarine will append the new results to the previously calculated result. As soon as Nectarine is triggered with a goal different than `hold', an Interpress master is created into which the contents of the buffer is prepended. Each trigger action will also generate a page break in the Interpress master. To be able to assemble a multi-page Interpress master from multiple ChipNDale designs, I store the needed state information in a global variable, so you should know what you are doing.
When you are printing pad bonding specifications using your original layout, or if you print large, e.g., high voltage devices, it is more convenient to print the different layers as separations that can be overlaid as transparencies. Nectarine allows you to print just one layer, and because of the second application it will be printed in the ChipNDale color. To print only one layer, make it the current layer by middle clicking this layer in the ChipNDale control panel (e.g. "ovg" for pads); then scroll up the control panel to unveil a line that reads "Print only current layer: No". Click the mouse over the prompt to flip through the answers.
2. Advanced Usage
Nectarine registers some commands with the Command Tool in which it is executed.
NCount. Counts the corner stitching tiles currently allocated. If the input is large (in terms of l units) Nectarine processes it in bands. The size of the bands is estimated from the input dimension in order to use maximal buffer sizes. On the other hand, Nectarine must be able to process the worst case input (very dense layout) without crashing. Therefore the band size estimation is very conservative. The user with sparse inputs can affect this estimation by increasing a variable called risk using the interpreter. It is suggested, however, to make use of the special load files NectarineSchematics.Load, NectarineHybrid.Load, and NectarineBoard.Load since they are tuned from time to time.
NRedo. Redoes the last Nectarine Print command on the same Interpress master but with the newly specified goal. The goal must be one of those specified in the <where> field of the Nectarine line in the ChipNDale control panel. Default: the same as the last time around. Like the remainder of Nectarine, this is a very user friendly command, meaning that it has a little tolerance in the printer specification, but not enough to let you do things you do not expect. If the goal cannot be figured out, the documentation is printed. All user output is printed in the Command Tool viewer, because this is where you attention is focused when you issue a redo.
Redoing the action of copying from a ChipNDale viewer into a Tioga viewer presents a slight difficulty. The standard method is to copy into the current selection. However, to issue the redo command, the selection is in the Command Tool, which is not where you intend to copy. The adopted solution is to create a new iconic blinking unnamed Tioga viewer and to stuff into it the image. You can select it from there and copy it into the intended Tioga document in the usual way and dispose of the viewer.
For Peach printers, redo creates a new printer dependent file, so be very careful with file name conflicts due to racing conditions (redo is an advanced command)! Use Chat to submit again a PD file to the same printer for which it was created.
You may complain that although the implementation is reentrant, Nectarine cannot be called twice. I wanted to avoid two print commands on the same design, because this would force me to implement a file name manager and to place on the user the burden of descrying it. What I really wanted to do was to prevent multiple calls on the same design, but to allow parallel calls on different designs. Unfortunately, currently there are no provisions for this in ChipNDale: resources are global to ChipNDale and there are none local to designs (at least as long as you imperatively need a lightweight abort capability). Surely I could implement a hack, but there are no hacks in Nectarine.
NQuery. Explains which color is used for a layer and why.
NWriteColors. Writes the color blends in an extended color map for processing with MetaPalette.
NReadColors. Reads the color blends from an extended color map.
NOldColors. Enables to use old or imposed colors.
PrintDesignOnVersatec. Reads a ChipNDale file, images it into an Interpress master, converts the latter into a PD file, and print it on the color Versatec. A number of columns may be specified after the file name. Typical times at background priority: [indigo]<Dragon7.0>BIC2>BICLayout.dale ← Interpress: 03:01:00; Interpress ← PD: 10:04:44; printing time: 17h. Typical file sizes: BICLayout.dale: 0.27 MB, Interpress: 28 MB, PD: 30 MB. Note, that unlike it is the case with CDPDPlotnn, the time does not depend on the size of the plot, but solrly on the number of rectangles in the design.
Nectarine (Program switches).
-a layoutOnly = TRUE. The lower left corner of rectangles is not aligned to pixels, thus the white strikes that appear among tiles disappear.
-b outline regions. An outline is drawn around regions. Switch values: -1 no outline 0 one pixel outline; 1 unit width outline. Price example for outlines: the flip-flop from the standard cell library takes 12 (21) seconds to image into an Interpress master without (with) outlines; the Interpress master is converted into a PD file in 1:25 (4:02) minutes; on the Panasonic thermal transfer printer it is completed in 8:43 (11:56) minutes.
-c reveal tesselation. For private use only.
-d risk. Controls the height of the bands used to create the Interpress master. See section 4.
-e color inferences. If this switch is present, the inferences are traced in the terminal viewer.
-f annotation. If this switch is present, the ChipNDale procedures are NOT used to image the annotation (i.e., text).
-g ignore annotation. If this switch is present, only rectangles are imaged.
NectarineField. Explicitly set the field to perform image ganging.
NSetMaxField <printer name>. Gets the status of the named printer and sets Nectarine's field size to its medium size. However, for Tim's Toy, the constants in the server code as of September 21, 1988 4:13:37 pm PDT are set. This command is implemented only for XNS printers. See also the command NectarineField.
NectarineSignal. Controls the rendering of signal names. If no parameter is specified, they will rendered with a 5 CMOS-l font. If a positive value is specified with the -a switch, this values is used as the font size, otherwise the rendering of signal names is disabled. Signal names are displayed in the lower left corner of instances. If switch -b is not specified or positive, the names are centered, otherwise they start at the origin. Side-effect: Nectarine's -f switch is set.
Color Substitution. By default Nectarine takes the colors as they are declared to be seen on the screen. A user profile option can be set to substitute colors. If this option is turned on, named colors are put in the Interpress master. The rules for color substitution are:
Inference engine [registry-1 = Imager, registry-2 = ChipNDale]:
Rule 1: if registry-1/cmos-b defines named colour then Decide [rule 6, registered colour], else Decide [rule 2, named colour].
Rule 2: if registry-1/ChipNDale defines named colour then Decide [rule 7, registered colour], else Decide [rule 5, named colour].
Rule 3: if registry-1/cmos-b defines named colour then Decide [rule 10, registered colour], else Decide [rule 4, named colour].
Rule 4: if registry-1/ChipNDale defines named colour then Decide [rule 10, registered colour], else Decide [NIL, BLACK].
Rule 5: if registry-2 defines named colour then Decide [rule 8, registered colour], else Decide [rule 11, name].
Rule 6: if named colour can inherit a constant color then Decide [NIL, constant color] else Decide [rule 2, registered colour].
Rule 7: if named colour can inherit a constant color then Decide [NIL, constant color] else Decide [rule 5, registered colour].
Rule 8: if named colour can inherit a constant color then Decide [NIL, constant color] else Decide [rule 11, registered colour].
Rule 9: if colour has an escape value the Decide [NIL, escape color] else Decide [Rule 1, registered colour].
Rule 10: if named colour can inherit a constant color then Decide [NIL, constant color] else Decide [NIL, BLACK].
Rule 11: Decide [NIL, undefined colour].
Rule 12: if layer is in the extended color map or was previously determined then Decide [NIL, this color] else Decide [Rule 9, any colour].
3. Client Interface
Example of usage:
Nectarine.Print [Nectarine.DoInterpress [fooDesign, CDCommandOps.BoundingBox [fooDesign], FALSE, FALSE, NIL].masterName, $NColor400, 1, NIL]
4. Useful Hints
How long does it take? On the chip PermuyJun86Part3 — whose size is 3.390 10.217 mm and which contains 1'156'260 rectangles — it takes 2 hours, 12 minutes, and 2 seconds to produce the Interpress master. If the job is long, Nectarine after a while prints an estimated termination date and time. This estimation is repeated when half of the job is done. If you want an intermediate progress report, look at the number displayed just after the very first dot; this is the total number — 1 of groups of three dots that will be displayed.
The raster-scan conversion of the Interpress master takes a long time (49 minutes and 58 seconds for the above chip). The reason is, that for sake of generality the Imager cannot do any assumptions on the input. Hence, it will clip the entire Interpress master on every window consistiting of a band of 64 scan lines, and this for every band. Also it must assume arbitrary overlaps. In the future it might be possible to include hints into the Interpress master. Therefore, Nectarine eliminates all overlaps in rectangles (they are trivial anyway) and sorts the rectangles into bands. These bands are sorted by decreasing slow coordinate. Inside each band the rectangles are sorted lexicographically by slow and fast coordinate. Care has been taken to make the Interpress master as short as possible,
During the creation of an Interpress master and its subsequent raster-scan conversion, a fair amount of disk I/O occurs (which can be aggravated by paging when your machine is running some other big guy). It is annoying when you encounter a fatal disk error. The following is what you can do depending on the phase in which it happens.
— Writing the Interpress master: you lose; restart from the beginning.
— Doing the raster-scan conversion: you can execute it again in the event viewer. Pop up in the stack until you get to NectarineImpl. It will be sitting at the call of PrintFileConvert.InterpressToPD. Simply copy the statement into the event viewer. You can also call manually InterpressToPD from a command tool (see InterpressToolsDoc for the details) and then send it to the server with Chat.
— Sending the file: Look up the name of the PD file in the terminal viewer and send it manually to the printer server.
You'll gonna need lotsa space gal. Before attempting to ship to the color Versatec a whole chip, you should do a little back of the envelope calculations. Both the Interpress master and the PD file are flat. The 1'156'260 rectangles of the above chip will yield an Interpress master of 35'125'206 bytes. Since there are 500 bytes in a page, the free disk figure you see in the Watch viewer will decrease by 70'250. The size of a PD file for the Versatec (which is 64'057'308 bytes for the above chip) can be estimated by the size of the bitmap: (40"200)2"(4"2) bits, which is 128'000 pages (in reality the PD file does not contain a bitmap, but runs, which in the case of dense plots can be very short , so that the PD file is long). Use the program PigsInSpace to find space on your disk.
Why does the transmission to the printer server take such a long time? An idea of how to asses the size of the PD file has been given above. The transmission rate is 256 KBits per second (which makes 1954" = 32', 34" for the above chip). On the Peach printer each packet is taken and the runs are expanded to a piece of bitmap which is written to disk. The total amount of time spent into expansion on for the above chip is a little more than a day. The actual printing is fast, because the bitmap just has to be shuffled from the disk to the printer.
In summary the approximate total time for a design with 1'156'260 rectangles is 2 hours for the Interpress master, 50 minutes for the PD file, 30 minutes for the transmission, and a little more than 24 hours for the expansion. The expansion will be much faster when the Dicentras will be replaced by Dragons. This will also eliminate the PD file creation and save disk space. In the meantime there is a hack which allows you to obtain a time factor of about 8 in the expansion (if I am not used also as a Summoner server). As the printer where to print select PeachExpand, and power on the machine in office 2110 (Kearsarge). PeachExpand will send the image to the printer specified in the ExpandedPeach user profile entry for printing. Please delete the file from my disk after you have printed it. The size of the expanded PD file will be 322'520 bytes per cm, with a maximum size of 11"4.705883"800"1024 bytes = 42'405'650 bytes. The above chip was expanded into a file of 6'357'760 bytes, i.e., a tenth the original size, which prints in 8 minutes. (This is a temporary hack.)
Landscape or portrait format? Nectarine tries to scale to use the full paper width; paper waste is controlled by limiting the length of Versatec plots to 279.4"4.705883 mm H 1.315 m. If the above chip is printed in portrait format, the sizes of the PD files increase to 75'930'208 bytes unexpanded and 9'182'936 bytes expanded (the size of the Interpress master depends only upon the number of rectangles).
If you attempt to process an extraordinarily dense chip, it might happen that when you walk back to your machine, the screen is completely white with the exception of the cursor, which will not react to the mouse. The machine will even not let swat itself. Some resource in the microcoded allocator has come to short. The error has not yet been identified. Temporary fix: enter Nectarine -a -d 0 and retry.
5. User Profile Options
This section defines and documents the entries in the user profile. Each entry is presented as though it were a Mesa declaration, although of course it is not. Comments following the entry explain the effect of that entry.
In all cases, if the corresponding entry does not appear in your personalized user profile (or the default user profile), the value of the corresponding parameter is the indicated default. If you want to specify some value other than this default, or want to include the corresponding entry along with its default in your profile just so that you can see at a glance what settings are in effect, simply include it in your own profile. Changing or adding an entry is "noticed" as soon as it is used by Nectarine.
Nectarine.Versatec: ROPE ← "Sleepy"
Black & white Versatec printer.
Nectarine.ColorVersatec: ROPE ← "Sleepy"
Colour Versatec printer.
Nectarine.Bw400: ROPE ← "MtFuji"
Black & white thermal transfer printer.
Nectarine.Color400: ROPE ← "MtFuji"
Colour thermal transfer printer.
Nectarine.Raven300: ROPE ← "Quoth"
Black & white Interpress printer.
Nectarine.C2700: ROPE ← "TimsToy"
Color Interpress printer.
Nectarine.PeachExpand: ROPE ← "Kearsarge"
Expand the PD file on the PeachExpand server and send it to ColorVersatec.
Nectarine.SubstituteColors: BOOLFALSE
See explanation in section 2, Advanced Usage.
Nectarine.GreyBalance: BOOLFALSE
Balance greys on PD printers such as ColorVersatec and Color400.
Nectarine.ColorCorrection: BOOLFALSE
Use the color correction algorithms on PD printers such as ColorVersatec and Color400.
Nectarine.PlatemakerSeparations: ROPENIL
The place where the bits for Erie print requests shall be stored.
Nectarine.SprayHalftone: BOOLTRUE
Graceful degradation on sub-dot artwork and faster than conventional halftone screen. Disadvantage: colors look smeary, so do not use them in publications.
Nectarine.ContinuousTone: BOOLFALSE
Set to TRUE when separations are created by an electronic color scanner or by photographic halftoning.
Nectarine.LineArt: BOOLFALSE
See appendix 1.
Nectarine.ProcessColors: BOOLTRUE
See appendix 1.
Nectarine.Palette: ROPE ← "[DATools]<DATools7.0>Nectarine>Discriminable.ColorMap"
Sets palette loaded at initialisation time. Use NReadColors to change the palette later. The default palette images gates in yellow. Use the palette ConstantPoly.ColorMap from the same directory for red gates, or use the Meta-Palette to create your own palette.
Nectarine.CSLPublicationStyle: BOOLTRUE
By default the CSL Publication Style is used to paste ChipNDale pictures in Tioga documents. If the value is set to false, the Bland style is used instead.
Note that there is no entry for Raven384, since you have to use the Print command to print on such a device.
Appendix 1: Line Art
To turn it on, set the user profile option
Nectarine.LineArt: TRUE
IF Nectarine.ProcessColors THEN {
Rectangles on layer $met will print in color 1
Rectangles on layer $met2 will print in color 2
Rectangles on layers $ndif, $pdif will print in colors 1 and 3
Rectangles on layer $pol will print in colors 2 and 3
Rectangles on layers $cut, $cut2 will print in color 4
Everything else is ignored. The default specifications for the colors are:
color 1: cyan
color 2: magenta
color 3: yellow
color 4: black}
IF NOT Nectarine.ProcessColors THEN {
Rectangles on layer $met will print in color 1
Rectangles on layer $met2 will print in color 2
Rectangles on layers $ndif, $pdif will print in color 3
Rectangles on layer $pol will print in color 4
Rectangles on layers $cut, $cut2 will print in colors 1, 3, 4
Everything else is ignored. The default specifications for the colors are:
color 1: C28 blue
color 2: M35/2 magenta
color 3: GT4 green
color 4: RT6 red
Note that these are custom colors. On the Versatec and Panasonic printers, you can use only the supplied process colors, hence you cannot use them for printing line art.}
This selection is based on the inks we have on stock in sufficient quantities. You should select the final inks with a skilled printer.
When bargaining with the printer, note that if there is random layout in your image, you will need so-called ``quality inks'' to prevent the random layout from becoming a grey blob. You will also have to bargain for being allowed to have 400% ink, where the usual maximum is around 250%. If you lose on the bargaining table, you will have to reduce the ink photographically using masking; you can not do it digitally on a tiny Dorado. Do not give the OK for print unless you are 100% satisfied with machine made proofs.
The maximum resolution you can get on Erie using line art generated by Nectarine is 2 pixels, i.e., l = 42 mm. Do not discard the PD files until you have examined the separations under a microscope, since you might have to have them redone.
Unless you are experimenting with new printing devices, the user profile option Nectarine.ContinuousTone must be FALSE (default).
This is not a recommendation to use line art or a claim on the quality of line art, but just an announcement of the ability of doing it.
Appendix 2: Offset Printing
You have four options for producing offset plates:
1. Black and white. If you use the default discriminable colors, you get a good spread of the grey values, which makes layout recognizable already in blak and white. Prepare camera ready copies on Erie by producing an Interpress master and having it printed with a 100 lines per inch screen.
2. Cheap color. Select Erie for where. You will get a color page for every figure. For each page you will pay approximately $30 for stripping. If you want more than one picture per page, use the NectarineField command for easy ganging.
3. Standard quality color. Set the user profile option Nectarine.ContinuousTone ← TRUE. Select IP only for where. Convert the Interpress master to the Ais format and print it on the Optronix color scanner at 300 lines per inch. Send the slide to Kedie/Orent and get a separation at a 150 line screen. For each figure you will pay approximately $100 for the separation and $30 for stripping.
4. Best quality color. Select IP only for where. Use Maureen's software to produce a tape for the Crosfield color scanner. Send the tape to Kedie/Orent and get a separation. For each figure you will pay approximately $100 for the printing and $30 for stripping.
Common errors, which are all rather expensive to fix:
1. Organize your separations.
2. Check whether your lithographer or printer needs the emulsion up or down.
3. Decide on the binding; make a comp for the form layout.
4. Do not strip off the stuff Nectarine puts in the margin of the searations.
5. Check that the halftone dots are not too veiled.
Appendix 99: Flames
Date: 17 Feb 88 14:29:29 PST
From: Gasbarro.pa
To: DAToolsUsers^.pa
Subject: Schmatics printing folklore
Reply-To: Gasbarro
If you have b&w only schematics and you want to print them, the fastest way to do so is to use CDPDPlot (H-Middle) and select "b&w interpress". Once the interpress is written do:
% iptopd ///temp/temp.IP versatec
Send the pd file to Sleepy using Peachprint. This method is probably around eight times faster than using the "PD Color Versatec" menu item since the interpress and pd files are b&w only. I don't know what the speedup is relative to Nectarine but I suspect it is even larger. There is an added benefit too: the interpress generation is very fast, so your design is only locked up for a short time.
-------------
Date: 19 Feb 88 08:26:14 PST
From: Gasbarro.pa
To: Beretta
Subject: printing
Reply-To: Gasbarro
I tried them both here are the results:
Nectarine  CDPDPlot
To ip: 1 min.  1 min.
To pd: 3.5 min.  4 min.
Ip size: 275K  451
Pd size: 451K  509
GFI:  —  23
So you were right, Nectarine is a little faster and significantly more efficient in file size. The only advantage of CDPDplot is that it uses fewer GFIs.