Chipndale17.tioga
CHIPNDALE
CHIPNDALE 0.17 — FOR INTERNAL XEROX USE ONLY
Chipndale
An interactive editor for VLSI designs
Release 0.17
Ch. Jacobi, Kim Rachmeler (July 25, 1984)
A relatively incomplete documentation.
Filed on: [Indigo]<Chipndale>Documentation>Chipndale17.tioga

© Copyright 1984 Xerox Corporation. All rights reserved.
Abstract: Chipndale, son of Chipmonk, is an interactive graphic layout tool made to run in Cedar. Chipndale makes use of multiple windows, extensive parallel processing, vast amounts of memory, pop-up menus, and other assorted goodies. When complete, Chipndale will have a DRC and circuit extractor, a fast set of IO and checkplot routines, and modular device extensibility. What's more, everything in Chipndale will be completely technology independent, that is, all the features will be equally at home dealing with PC boards or CMOS chips. This document outlines the current state of development.
XEROXXerox Corporation
Palo Alto Research Center
3333 Coyote Hill Road
Palo Alto, California 94304

For Internal Xerox Use Only
0. Introduction
0.1. Background
Originally called Chipmonk II, Chipndale1 is the Cedar successor to Chipmonk, an interactive layout editor written for the Alto world. But although Chipndale looks a good deal like Chipmonk, there are still distinct dissimilarities. Like Chipmonk, combinations of keyboard and mouse commands allow creation and modification of both primitive (contacts, transistors) and constructed (cells) objects. Multiple views of a design are available on both the color and B&W displays. Chipndale can read in old Chipmonk files and some Chipndale designs can be written out in Chipmonk format. Unlike Chipmonk, Chipndale incorporates the concept of "technology independence", the idea that separate technologies (NMOS, CMOS, PC boards, etc.) do not interfere with the basic Chipndale kernel, nor do they interfere with one another. New technologies may be created with their own definitions of commands and structures, allowing Chipndale to expand to accomodate new methods and applications.
Although the functionality available has for the most part been specified, the access route to those capabilities is not well established. The mapping of commands necessary to invoke specific functions is evolving as the user interface becomes more refined. The moral of the story is:
The ice you are skating on is currently under development; it is apt to be thin in places.
This is not the best of all possible worlds. But don't get mad, get even; that is, if you are miffed at obvious shorcomings, send us mail (ChipndaleImplementors^.pa or ChipndaleDiscussion^.pa). We won't know about it unless you tell us.
The rest of this introduction will provide you with step-by-step information to start Chipndale and read in either Chipndale or Chipmonk design files. The rest of the document is intended as a reference manual; use the "Layers" button to scan the document for the general section you are interested in reading. The amount of descriptive detail increases with the number of visible layers.
1 The name Chipndale comes from neither the fine furniture in England nor the fine figures in LA but from Chip 'n Dale, the two furry characters created by Walt Disney (two chipmunks -- Chipmonk II, get it?).
0.2 Getting Started
Saying Hello
Go find yourself a Dorado running Cedar 5.2 and login. Use the DF Tool to bringover the file:
/indigo/chipndale/5.2/top/cddesign.df
It is usually best to create a separate subdirectory for Chipndale; this allows you to remove it easily when you want to upgrade to a new version. This DF file will equip the machine with all the information it needs to run the NMOS, CMOS, and Chipnsil versions of Chipndale. If you cannot find a Dorado, don't know how to login, or generally have trouble with any of the commands, ask a nearby Dorado-user to help you out. Or you can read the basic documentation available on:
[Indigo]<Cedar5.2>Documentation>HowToUseAPublicCedarMachine.tioga
Becoming Acquainted
To get an existing design up on the screen, start up a session of Chipndale (in the same subdirectory containing its files) with one of the following incantations:
% CDRead <optional name of a Chipndale design file> or
% CDReadCMNMOS <optional name of a Chipmonk NMOS design file> or
% CDReadCMCMOS <optional name of a Chipmonk CMOS design file>
(the latter two stand for:
ChipnDaleReadChipMonkNMOS and ChipnDaleReadChipMonkCMOS)
To start up a fresh design use one of the commands:
% CDNewCMOS or
% CDNewNMOS
All of these commands will call up the Chipndale Terminal monitor (hereafter referred to as "Terminal") and will display the design (or new viewer) on the screen. Terminal keeps a log of all the commands issued concerning Chipndale; it is where you will look to find information about what Chipndale is trying to execute and how that execution is progressing.
When reading Chipmonk files, it is important to know the technology associated with that design so that you use the correct form of the read command. Chipndale design files know their technology, but the code handling that technology must still be loaded before issuing the CDRead command. If no filename was given to the read command, Terminal will respond with the request:
Input file >
Type the file name in at the prompt. The file may either be present locally or on one of the file servers; default extension is either ".dale" or ".chip" depending on the command. For example, you could read in a Chipmonk file either as:
/ivy/monier/aspen
or as:
aspen.chip
if it was already on the local disk. You usually do not need to type in the extension.
If all is going well, the file will be read in and a Chipndale viewer containing the design will be opened on the screen. A control panel will also appear in the lower right of the screen whose buttons are functionally similar to the buttons available at the bottom of the Chipmonk screen.
1. General Definitions and Descriptions
1.1. The Terminal
The Terminal viewer is one of the main communication points between the user and Chipndale. Terminal not only keeps a log of commands executed but also prompts the user for input and displays error messages. There is only one Terminal for any invocation of Chipndale, regardless of the number of designs displayed.
1.2. Technologies
One of Chipndale's main features is its ability to adapt to new technologies without changes to the core of the program. This feature is called "technology independence"; it means that new fabrication techniques or applications can be described in modules and plugged into the existing system. How does this affect the user? Now the user must make sure that the appropriate technology is loaded so that Chipndale can access features unique to that technology.
1.3. The Control Panel
The control panel is a graphical method of changing layout parameters. Every design has a control panel associated with it; the panels are technology dependent.
1.4. Primitive Objects
Primitive objects are the "atoms" if you will of the Chipndale world. The existing primitives are transistors (straight and angle), contacts (buried and butting), and wires. These are the building blocks of the more complex structures used to construct designs.
1.5. Cells
1.6. Tip Tables
1.7. Additional Tools
DRC
PLA generator
Circuit extractor
Circuit simulator
2. Commands
In General
Chipndale commands are grouped such that those most frequently applied use the lefthand side of the keyboard. This grouping allows easy finger placement without having to move your right hand away from the mouse. This speedy access, however, has outweighed mnemonics, which is why "Q" draws a transistor, not "T". Infrequently used commands have been shuffled off to the righthand side of the keyboard. Commands are executed in the Chipndale viewer with the input focus. If the viewer does not have the input focus, the cursor will appear as a fat arrow pointing down. Left click to obtain the proper cursor.
The mouse are ordered such that the middle button controls drawing objects, the left and right buttons control modifications. Drawing only occurs when the middle button is pressed or held down; alterations only occur when the left or right button goes up.
Most commands that affect selected objects can be performed with either the left or the right button; the left button only affects the object pointed to, the right applies all currently selected objects. These commands are indicated in the documentation with the choice {Left or Right}, meaning that the command will be applied to a different set of objects depending on the button used.
The following commands refer to the 7-28-84 version of the default CMOS Chipndale tip table. If you apply any of the commands without receiving the expected result, check the mapping of the tip table you are using.
2.1. Simple Selection
Select Single Object
Left
Point to desired object and hit Left mouse button. All previous selections will be removed. (Note: just the condition of being selected is removed, not the object itself!)
Select Multiple Objects
Right
Selections made with the Right mouse button will be added to the collection of previously selected items.
Select Covered Object
<SHIFT>-Left
Holding down <SHIFT> while hitting the Left button will cause the selection to rotate through the possible objects at that point. This enables you to select objects completely obscured by other overlaying structures.
Deselect Object
<SHIFT>-Right
Point to a selected object, hold down <SHIFT> and hit Right. Selection will be removed.
2.2. More Advanced Selection
Area Select/Deselect
<TAB>-<CTRL>-Left
Select all objects within or touching boundary drawn by moving the mouse
<TAB>-Left
Select only objects contained in the box drawn by moving the mouse
<SHIFT>-<TAB>-<CTRL>-Left
Deselect all objects within or touching boundary drawn by moving the mouse
<SHIFT>-<TAB>-Left
Select only objects contained in the box drawn by moving the mouse
Select/Deselect All
<ESC>-Right, <ESC>-Left
Hold down <ESC>: hitting the Right mouse button selects everything in the current design, hitting the Left mouse button removes all selections.
Note you can also deselect everything by pointing at nothing and hitting the Left button (single select).
Select Entire Layer
<ESC>-<SPACE>-Right
Hold down <ESC> and <SPACE> then hit the Right mouse button; all of the objects belonging to the current layer will be selected.
Select Closest Object
<ESC>-<TAB>-Left
Holding down <ESC> and <TAB> when hitting the Left mouse button will single-select the closest object within a certain radius. All previous selections will be removed. Also known as "proximity selection". 
Change selection
<SPACE>
If you are selecting an object but have not yet let the mouse button up, you can change your choice by keeping the button down, moving the mouse to the new object and hitting <SPACE>. This change in midstream will also work even if you are about to execute a command on the selected object.
For example: Say you want to rotate something. You press R, point to the appropriate object and press the Left mouse button. As soon as you let the button up, the command will be executed. But wait! You really wanted the object just to the right! No problem. Keep the mouse button and the R down, move the cursor to the new object, and hit <SPACE>. The selection will be switched to the new pointed objected. Now when the mouse button is released, the new object will be rotated (either in place of or in addition to the old object, depending upon whether the Left or Right mouse button was used).
2.3. Wires, Transistors and Contacts
Wires
Middle
Pressing the Middle button and moving the mouse draws a wire of the current layer with the current width, releasing the button confirms the position and length of the wire.
The current layer can be changed with either the keyboard or the control panel, the width is set only through the control panel.
<SHIFT>
Hitting <SHIFT> while drawing a wire confirms a wire segment
<SPACE>
Hitting <SPACE> while drawing a wire flips the orientation of the direction the wire bends
B-{Left or Right}
Split wire(s) along its/their width by holding down both the B key and the appropriate button while moving the mouse. Command is executed by lifting the mouse button. (Note the split across the middle in the letter "B" to remember "split wire")
<ESC>
Stops the wire drawing process
Transistors
All draw transistor commands executed by hitting the middle mouse button
Q
Place n-transistor at current cursor location
Q-<SHIFT> or Q-<LOCK>
Place p-transistor at current cursor location
W
Draw angle n-transistor at current cursor location
W-<SHIFT> or W-<LOCK>
Draw angle p-transistor at current cursor location
Contacts
All draw contact commands executed by hitting the middle mouse button
<1>
Draw N-dif contact
<1>-<SHIFT>
Draw P-dif contact
<1>-<2>
Draw N-butting contact
<1>-<2>-<SHIFT>
Draw P-butting contact
<1>-<TAB>
Draw N-buried contact
<1>-<TAB>-<SHIFT>
Also draws N-buried contact -- a P-buried contact does not make much electrical sense in this context
<2>
Draw poly contact
<3>
Draw metal-metal2 contact
2.4. Move and copy, transformations
Move and Copy
Q-{Left or Right}
Move selected objects to current cursor position
If done with the right button, moves entire collection of selected objects relative to the former cursor position as indicated by the vector drawn on the screen when moving the mouse. The left button only moves the single object pointed to and removes all former selections.
Q-<TAB>-{Left or Right} 
Copy selected objects to current cursor position
If done with the right button, copies entire collection of selected objects by choosing an origin with the left mouse button, holding that button down, and moving the cursor to the desired destination. The left button only copies the single selected object.
Q-<SHIFT>-{Left or Right}
Move selected object(s) while maintaining primitive connectivity, also called "Stretchy Move".
Rotate
Note that rotation and mirroring can also be done with the Transform pop-up menu, <SPACE>-T.
R-Right
Rotate the selected object(s) by 90 in a clockwise direction, the bottom left corner remains fixed.
R-Left
Rotate the pointed object by 90 in a clockwise direction, the bottom left corner remains fixed
In order to rotate the design 90 degrees#clockwise, select the entire layout by using the select-all command <ESC>-Right. Now indicate a rotation with R-Right. The design will be rotated keeping the bottom left corner fixed. As long as the design is selected, hitting more R-Right's will continue the rotation. This command sequence is useful in conjuction with the plotter routines.
Mirror
Note: E and T are were selected because they are located next to the "R" (rotate) key and have symmetry appropriate to their function.
T-{Left or Right}
Mirror selected object(s) across the vertical axis
E-{Left or Right}
Mirror selected object(s) across the horizontal axis
Delete/Undelete
D-{Left or Right}
Delete selected object(s)
D-Middle
Undelete last deleted object(s)
Step
Note that the four keys A S W and Z are arranged in the same relative positions as the directions they move the selected object(s). The step commands are identical to the stretch commands save that <CTRL> is not held down.
A-{Left or Right}
Move the selected object(s) one lambda to the left.
S-{Left or Right}
Move the selected object(s) one lambda to the right
W-{Left or Right}
Move the selected object(s) one lambda up
Z-{Left or Right}
Move the selected object(s) one lambda down
Change Layer
Change layer by hitting the associated layer number key. These commands are similar to the contact commands except that the middle button is not held down. The control panel can also be used to change layers; note that the order of the layers associated with the keys is the same as the order listed in the control panel.
<1>
set layer to be N diffusion
<1>-<LOCK>
set layer to be P diffusion
In general, if the <LOCK> key is down, everything is done in the P-diffusion world; <LOCK> up indicates N-diffusion. This doesn't work in all cases but that's the idea. You can change between pdif and ndif just by switching the position of the <LOCK> key without hitting <1>.
<2>
set layer to be poly
<3>
set layer to be metal
<4>
set layer to be N-well contact
<4>-<LOCK>
set layer to be P-well contact
<5>
set layer to be N-well
<6>
set layer to be 2nd layer metal
<TAB>-Middle
Clicking the middle button while holding down <TAB> will set the current layer to be the same as the pointed layer.
2.5. Changing objects
Widen, Narrow
Coming soon
Lengthen, Shorten
Coming soon
Stretch
Note that the four keys A S W and Z are arranged in the same relative positions as the directions they stretch the selected object(s). The stretch commands are identical to the step commands save that <CTRL> is held down.
A-<CTRL>-{Left or Right}
Stretch pointed side of object(s) one lambda to the left
Using the Left button acts on only the object currently pointed to; the Right button acts on all selected objects. You must be pointing to a selected object each time the mouse button is pushed. If object is shrinking (due to having its right side moved over), it will stop moving when its width reached one lambda, regardless of how many times the command is given.
S-<CTRL>-{Left or Right}
Stretch pointed side of object(s) one lambda to the right
W-<CTRL>-{Left or Right}
Stretch pointed side of object(s) one lambda up
Z-<CTRL>-{Left or Right}
Stretch pointed side of object(s) one lambda down
Grow/Shrink
G-{Left or Right}
Stretch pointed side of object(s) one lambda out, i.e. grow object in given direction
F-{Left or Right}
Stretch pointed side of object(s) one lambda in, i.e. shrink object in given direction
2.6. Viewer commands
Change scale
".", ","
Hitting <PERIOD> decreases magnification; hitting <COMMA> increases it. It is easier to remember these commands by looking at the upper case options on the keys, that is, "<" decreases the scale and ">" increases it.
Or, if you want to be visual in remembering the commands, note that the "<" starts small then gets bigger, hence it makes objects appear bigger. In the same way, ">" starts big and ends small, making objects appear smaller.
Change position
<SPACE>-Middle
Moving the mouse while holding down both the <SPACE> key and the middle button draws a vector on the screen. The view of the design will be moved in proportion to that vector when the mouse button is released.
View all
<SPACE>-Middle
Holding down <SPACE> and clicking the Middle button will cause the viewer position and scale to change so that all objects are visible on the screen.
View all selections
<SPACE>—Left
Holding down <SPACE> and clicking the Left button will cause the viewer position and scale to change so that all selected objects are visible on the screen.
2.7. Cells
Note that all of these commands can also be accessed through the cell pop-up menu, <SPACE>-C.
Create cell
X-C-Middle
Create a new cell from the set of all selected objects. Terminal will prompt for a unique cell name.
Draw cell
C-Middle
Draw cell placing origin at current cursor position. Terminal will prompt for name of cell to be drawn.
Push-Pop
Note how the letter "V" both points down and opens up to remember push-pop; it is also located close to the "C"key.
V-Left
Push into cell: the rest of the design will be darkened
V-Middle
Pop out of cell
Cell directory
<SPACE>-D
Directory pop-up menu:
list directory: list contents of directory
clean up: list unused entries, and ask whether they should be removed from the directory.
remove ob: remove a particular entry from directory, (checked, only unused entries can be removed)
rename selected ob: rename selected object in directory
list imports: list names of imported designs
list importee's ob: list referenced object of a particular imported design
CELLS: calls Cells pop-up menu
Although the directory contains mostly cells, there are other object classes stored there as well.
2.8. IO, Imports, and Includes
IO
<SPACE>-O
Use the IO pop-up menu. Default extension is .dale.
Chipmonk IO
<SPACE>-I or <SPACE>-O
The IO pop-up menu allows to create backwards compatible chipmonk output. (.chip file). Not all Chipndale features can be written onto Chipmonk compatible files. This command is restricted to CMOS and NMOS IC designs.
Imports
See this space for future explanations.
Include
See this space for future explanations.
2.9. Repetitions
Description
?
Commands
=-Middle (note the repeated horizontal lines)
Make a repetition of the selected objects
]-{Left or Right} (note that "[" and"]" are just below "=")
Decrement count on selected objects (repetitions)
[-{Left or Right}
Increment count on selected objects (repetitions)
Any repeated object has the possibility to ask what index it has in the repetition.
2.10. Properties, Signal Names
Properties
It is possible to hang arbitrary properties to any application of objects. These properties may or may not affect any program's behaviour, or may only be comments for designers. Programs can protect their properties from designers, so the property mechanism can be used without danger of contention.
<SPACE>-P-Left
Shows all the properties of the selected application
P-Middle
Asks for a property name and allows to replace the value of the property. Properties included interactively cannot make use of all the nice Cedar types, however, a pop-up menu allows you to select the types of the property value in some limited range. Prefered types for properties are Rope.ROPE, ATOM and REF INT. The name of a property is always converted to an ATOM.
Properties using these types are saved while a design is written on a file and read back. However, clientprograms may affect this and force a different behaviour for properties they own. Such properties are usually reserved by the implementor for his/her exclusive use so designers will not be surprised. It may be good to load client programs first, and only thereafter use undocumented properties; they might be disabled by a client program, even if it runs later.
-Need and example here.-
One of the uses of properties is for communication with procedures evaluating conditional objects: these procedure have the possibility to query all their containing applications for arbitrary property values.
Signal Names
$SignalNames are reserved properties. Their value should be a ROPE.
N-Middle:
Enter signal name
N-Left
Display signal name
2.11. Text
Chipnsil Fonts
Text on MOS
2.12. Conditional objects
See this space for future explanations.
2.13. Miscellaneous
Coordinates
<CTRL>-Middle
Draw a vector by holding down <CTRL> and the middle button while moving the mouse. When the mouse button is released, Terminal will display the values of the end coordinates and the distance between them.
3. Output
3.1. Generating CIF files
See this space for future developments
3.2. Plotting on the Color Versatec plotter
Creating The Plot
<QUOTE>-Left
The files necessary to run the plotter are contained in the file
/indigo/chipndale/5.2/top/cddesign.df
Independently whether Chipndale is already running or not, execute the command:
% VersatecCMOS or
% VersatecNMOS
in the same directory where you are running Chipndale to set up the appropriate software and colors.
Now you need to get your design on the screen (if it's not there already). Execute one of the following:
% CDRead <name of Chipndale file> or
% CDReadCMCMOS <name of Chipmonk CMOS file> or
% CDReadCMNMOS <name of Chipmonk NMOS file>
to read in your ".chip" or ".dale" file.
Plot any portion of the design you wish by selecting an area using the left mouse button with 'quote' held down. Terminal will request the number of vertical strips of paper you want the plot plotted on; each strip will be made into a PD file named "plot(i).pd" where i is 0..(#strips -1). The plot will be made as wide as the given number of strips will allow. In each strip, a '.' will be printed for every horizontal band as it is completed. An arrow will travel down the screen indicating portion of the plot under consideration; the phrase "finished plot(s)" indicates that all strips have been done.
Sending To The Color Versatec
% peach belle <name of pd file>
The Versatec must be in "Soliciting Client" mode before it will print your file. If it says "Got a Client" and the LED display indicates disk activity, someone else is probably sending a file and you'll have to wait. If it is not busy and does not say "Soliciting Client," punch the white boot button on the front of the machine (the one next to the red button, above the LED's) and wait for the correct prompt to appear.
To start sending the PD file, give the command:
% peach belle <name of pd file>
and the file will be transferred over the net to Belle, aka the color Versatec. A pie-shaped icon will appear indicating the portion of the file that has been transferred. The Peach software will wait for Belle to be ready before starting to send the file. If you are waiting for the file to start being transferred, it might be a good idea to check whether Belle is really busy or just needs rebooting. Do NOT reboot if the LED indicates disk activity (displays some percentage of CPU utilization less than 100 and greater than 0).
Completed plots are cut off each night and left for pick-up on a table in the Purple Lab. Users are strongly discouraged from cutting off their own plots. (It is fairly difficult to install the paper properly such that the next user gets a good registration on his/her plot.)
Color Selection
Description
?
Example
?
You can easily change the colors assigned to layers by editing the command files VersatecCMOS.cm and VersatecCMOS.cm.
3.3. Plotting on the Black and White Versatec plotter
Creating the Plot
<SHIFT>-<QUOTE>-Left
Run the vplot module by "run vplot" in the user exec, or have it run by the "Chipndale.RunPrograms" userprofile option.
Manipulate the design in the viewer so that you can see the entire amount of information you want to print. Hold down <SHIFT>-<QUOTE> , and with the left button down, draw a rectangle containing that part of the design that you want to come out on paper. When you release the button, Terminal will ask you to select the number of strips you want the design to be printed on (for all you VLSI wallpaper fans). A new viewer will appear, showing the middle of the horizontal stripe currently under consideration. An arrow pointing to the design will show you how far the transfer has progressed. After the transfer is complete, the connection to the Alto will be closed and the Trident file "plot.bits" will be printed on the Versatec. This routine should not break even on large and complex designs.
3.4. Using the Color Display
On and Off
Chipndale also uses the color screen as a viewer. It is best to use your user profile to set up the color display. The general Cedar commands to do so are repeated here for your information. Type the command:
% colordisplay on
to enable the display. The cursor will now move off the side of the display onto the color screen as though the two were contiguous. Use the command:
% colordisplay off
to get rid of the colordisplay and retrieve the left boundary of your screen.
You can set up the color screen for chipndale with your user profile. CDPattern reads in a pattern from a pattern file of chipmonk, specify which file by using the userprofile. CDColorMap reads in a chipmonk colormap.
Moving Between Screens
The viewer bar will contain the extra option "Color" when the color display is enabled; this button will move the viewer from the B&W and to the color screen. The "-->" and "<--" buttons are used to switch the viewer back over from the color display.
Choosing Screen Colors
Color Menu
?
Patterns and Maps
?
4. Chipndale and Chipmonk
4.1. What's really different from Chipmonk
Some few commands...
All the fuss about technology independency. It's more than you would expect.
Large designs, (32 bit numbers)
Easy to use for clients: All usefull commands can also be accessed from calling procedures: Open ended client interfaces.
It's own implementation is based on the client interfaces.
It's list of object types is open ended, including their representation on files.
Multiple viewers per design.
Multiple designs.
Runs on Cedar, gets all the advantages of an integrated environment.
NMOS and CMOS are incompatible, they are implemented as different technologies.
Pop-up menu's.
Terminal viewer for log.
Imports of (References to) other designs
Real repetitions
Conditional objects.
Powerful use of property lists, including saving properties on files.
Checkplots on both color and B&W Versatec plotters.
4.2. What's missing in Chipndale
DRC
Analysis, Extraction,
Some programs which run in Chipmonk
Pla generator, Rom maker, ... its all in progress
CIF generation, EBES mask generation
once worked, but needs to be updated
Feedback from real designers
is really missing
5. Appendix
5.1. User Profile Options and Commands
Control of the pop-up menu
PopUpMenu.FontFamily: "Helvetica"
PopUpMenu.FontSize: 10
PopUpMenu.FontBold: TRUE
PopUpMenu.FontItalic: FALSE
PopUpMenu.LineHeightChange: 0
Chipndale kernel
Chipndale.NewViewerIconic: FALSE
-- controls creation of viewers showing designs
Chipndale.ControlViewerOpenIconic: FALSE
-- controls creation of control panel viewers
Chipndale.CatchLowLevelErrors: TRUE
--set to FALSE to help debugging, usually it is possible to continue
Chipndale.CatchErrorsWhichCauseDeadlock: TRUE
--set carefully FALSE to help debugging, but
--if errors occur, you loose all your work which is not saved onto files
Chipndale.ChipmonkColorMapNum: -1
-- in four bits per pixel mode only
-- <0 use default colormap
-- 0 use default colormap, but read in the colormap file
-- >0 use a colormap from the ChipmonkColorMaps file as in profile
Chipndale.ChipmonkColorMaps: "default.CDColorMaps"
Chipndale.ColorStartLeft: TRUE
Chipndale.ColorBackWhite: FALSE
Chipndale.ColorBackBlack: FALSE
-- random if none, or both, ColorBackBlack and ColorBackWhite are TRUE
Chipndale.ColorStartBits: -1
-- -1 don't touch
-- 0 set up to current bits per pixel mode, if reasonable
-- 4 set up 4 bit per pixel mode
-- 8 set up 8 bit per pixel mode
Chipndale.CursorOnesWhite: TRUE
-- initial color of cursor on colordisplay
Chipndale.RunPrograms: NIL
-- include a list of bcds which should be run whenever
-- Chipndale is started
Chipndale.ChipmonkColorPatterns: "default.CDColorPatterns"
-- NMOS and CMOS only
NMos-specific user profile options
Chipndale.NMos.TIPTable: "ChipndaleNMos.TIP"
Chipndale.NMos.ChipmonkColorPatternNum: 0
CMos-specific user profile options
Chipndale.CMos.TIPTable: "ChipndaleCMos.TIP"
Chipndale.CMos.ChipmonkColorPatternNum: 0
-- currently cmos only
-- <0 use entry from ChipmonkColorPatterns file
--   with positionkey = ABS[ChipmonkColorPatternNum]
--   (to get positionkey -0 use 1)
-- 0 use default colorpatterns
-- 1 use chipmonks default colorpatterns
-- >1 use entry from ChipmonkColorPatterns file
Chipnsil specific user profile options
Chipndale.chipnsil.TIPTable: "chipnsil.tip" -- this is default
-- Fonts do not have defaults
Chipndale.chipnsil.Font0: "TimesRoman14.strike"
Chipndale.chipnsil.AlternateFont0: "/indigo/AltoFonts/TimesRoman14.strike"
Chipndale.chipnsil.ScaleFont0: 32
Chipndale.chipnsil.Font1: "Gates32.strike"
Chipndale.chipnsil.AlternateFont1: "/indigo/AltoFonts/Gates32.strike"
Chipndale.chipnsil.ScaleFont1: 64
.... ChipNSil supports 8 fonts; which are initialized with the user profile. The user profile designates the font used on creation of the text; once a text is created, its font can NOT be changed with the user profile
5.2. List of Commands
Control panel commands
Control panel commands are executed by clicking mouse buttons on top of the text (not the value)
left: increment value
right: decrement value
CTRL-left: double value
CTRL-right: half value
any-SHIFT: set default value
any-CTRL-SHIFT: input value
middle on to of a layer description: selects this layer as default for drawing wires
The control panel can also be scrolled.
Pop-up menus
Global pop-up menu <SPACE>-G
IO: calls the IO popup menu
Viewer: calls the viewer popup menu
Directory: calls the directory popup menu
Cell: calls the cell pop-up menu
programs: allows user to run additional tools
Rename des: Renames the design
Undelete: Undeletes the last deleted object
Select all: Select all applications
Statistic: Displays the number of objects, selected objects. If only one object is selected, shows further information about that object
Viewer pop-up menu <SPACE>-V
Split: Split viewer
Grid: grid spacing
Ticks: ticks
View all: Reset scaling such that the whole design is visible
View selected: adjust scale so that all selected objects are visible
View top lev: adjust scaling to view pushed level
Drawmode: Monitors drawing of design if in a pushed cell;
viewer may optionally ommit drawing the outside cell objects
Simplification: simplification threshold of viewers can be modified to show more or less details.
Directory pop-up menu <SPACE>-D
list directory: list contents of directory
clean up directory: list unused entries, and ask whether they should be removed from the directory.
remove ob: remove a particular entry from directory, (checked, only unused entries can be removed)
rename selected ob: rename selected object in directory
list imports: list names of imported designs
list importee's ob: list referenced object of a particular imported design
Cells: calls Cell pop-up menu
IO pop-up menu <SPACE>-I or <SPACE>-O
Output: Create a .dale file.
Import: Import a design. Objects now may be referenced.
Include: Include a design, all the objects are merged into the design.
reload conditions: ??????
Chipmonk output: Output chipmonk compatible, version 7 .chip file. Restricted to NMOS and CMOS.
list imports: list imported designs
directory: call the directory pop-up menu
Cell pop-up menu <SPACE>-C
create: Create a cell from the selected objects
expand: Take the indicated cell and separate into individual objects
push-in: Push into the indicated cell so that its components are accessible
pop-out: Pop out one level
put down
put down imported
simplification
transform to: Change a repetition into a cell
Directory: call the directory pop-up menu
Program Menu <SPACE>-P
CIF output
Flat CIF output
DRC
DRC & Extract Rose
DRC & Extract Thyme
Route
Place
Cell Route/Place
Transforms Menu <SPACE>-T
mirror x
mirror y
rotate 90
rotate 180
rotate 270
Arbitrary commands (to viewer with input focus)
AAA
Stretching and Moving the selection incrementally left
Left-A-<CTRL> StretchStepLeftS;
Right-A-<CTRL> StretchStepLeftS;
Left-A LambdaLeftS;
Right-A LambdaLeftS;
BBB
Split Wire (do you see how the B is split in the middle?)
Left-B SplitWireS;
Right-B SplitWireS;
CCC
Creation of cell (use X key)
Middle-C X CreateCellSAndName;
Middle-C V PopReplace;
Transform to cell (use V key)
Left-C V TransformToCellS;
Right-C V TransformToCellS;
Create or draw expand a Cell (use X key)
Middle-C DrawCell;
Left-C X ExpandS;
Right-C X ExpandS;
Push and Pop
Left-C PushS;
Right-C PopMenu;
DDD
See also V
Deleting
Middle-D V PopFlush;
Middle-D Undel;
Left-D DeleteS;
Right-D DeleteS;
EEE
Mirror left-right (this key is close to R (otation) )
Left-E MirrorS;
Right-E MirrorS;
FFF
Left-F GrowStepS;
Right-F GrowStepS;
GGG
Left-G ShrinkStepS;
Right-G ShrinkStepS;
NN
Signal or instance Names (Still CRAZXY)
Middle-N EnterNameS;
Left-N DisplayNames;
Right-N DisplayNames;
PPP
Show properties of single-selected object
Left-P ShowPropertiesS;
Right-P ShowPropertiesS;
Put property on single-selected object
Middle-P EnterPropertyS;
QQQ
Move, Copy, Stretch single-selected object
Left-Q-<TAB> CopySpointed;
Left-Q -<CTRL> StretchS;
Left-Q-<SHIFT> StretchyMoveS;
Left-Q MoveSpointed;
Move, Copy, Stretch
Right-Q-<TAB> CopyS;
Right-Q-<SHIFT> StretchyMoveS;
Right-Q -<CTRL> StretchS;
Right-Q MoveS;
Transistors
Middle-Q-<SHIFT> DrawPXstr;
Middle-Q DrawNXstr;
RRR
Rotation and rename of objects
<SPACE>-R Left- [SingleSelect];
Left-R-<TAB> RenameS;
Right-R [Reset];
Right-R-<TAB> RenameS;
Left-R RotSpointed, point to leftside for easy reversalr;
Right-R RotSselected;
SSS
Stretching and Moving incrementally right the selection
Left-S-<CTRL> StretchStepRightS;
Right-S-<CTRL> StretchStepRightS;
Left-S LambdaRightS;
Right-S LambdaRightS;
TTT
Mirror up-down (this key is close to R (otation) )
Left-T MirrorYS;
Right-T MirrorYS;
VVV
See also C,D Keys;
Push and Pop (V: see how it goes up and down ?)
Right-V PushS;
Left-V PushS;
Middle-V X PopNew;
Middle-V PopMenu;
WWW
Stretching and Moving incrementally up the selection
Left-W -<CTRL> StretchStepUpS;
Right-W -<CTRL> StretchStepUpS;
Left-W LambdaUpS;
Right-W LambdaUpS;
Angle transistors
Middle-W-<SHIFT> DrawAnglePXstr;
Middle-W DrawAngleNXstr;
XXX
See also C key if topic is Cell
external (imported) objects
Right-X-<SPACE> SelectADesign; --is textually after expand
Left-X-<SPACE> SelectADesign; --is textually after expand
Middle-X-<SPACE> DrawCorrespondingObject;
Middle-X DrawImported;
ZZZ
Stretching and Moving incrementally down the selection
Left-Z -<CTRL> StretchStepDownS;
Right-Z -<CTRL> StretchStepDownS;
Left-Z LambdaDownS;
Right-Z LambdaDownS;
Zero
Zero [ResetNoTrack]; -- this is used to return version number
One
Buried contact
Middle-One-<TAB> DrawNBurCon;
Butting contacts
Middle-One Two-<SHIFT> DrawPButCon;
Middle-One Two DrawNButCon;
P-diffusion contacts or set P-diffusion
Middle- DrawPDifCon;
One Up SetLayerPDif;
Middle-One-<SHIFT> DrawPDifCon;
N-diffusion contacts or set N-diffusion
Middle- DrawNDifCon;
One Up SetLayerNDif;
Middle-One DrawNDifCon;
Two
Draw with poly
Middle- DrawPolCon;
Two Up SetLayerPol;
Middle-Two DrawPolCon;
Three
Draw with metal
Middle- DrawMm2Con;
Three Up SetLayerMet;
Middle-Three DrawMm2Con;
Four
Draw with contact-diffusion
Middle- DrawNWCntCon;
Four Up SetLayerNWCnt;
Middle-Four-<SHIFT> DrawNWCntCon;
Middle- DrawPWCntCon;
Four Up SetLayerPWCnt;
Middle-Four DrawPWCntCon;
Five
Draw with NWell
Five SetLayerNWell;
Six
Draw with Metal2
Six SetLayerMet2;
Seven
Eight
Arrow
Debug chipndale
Left-Arrow Debug;
Middle-Arrow Debug;
Right-Arrow Debug;
Quote
Prepare plots
Left-Quote ;
Middle-Quote ;
Right-Quote ;
BW Plot
Left-Quote-<SHIFT> VersatecBWPlot;
Middle-Quote-<SHIFT> VersatecBWPlot;
Right-Quote-<SHIFT> VersatecBWPlot;
Color Plot
Left-Quote VersatecColorPlot;
Middle-Quote VersatecColorPlot;
Right-Quote VersatecColorPlot;
LeftBracket
LeftBracket together with RightBracket: Alter
Left-LeftBracket RightBracket AlterS;
Right-LeftBracket RightBracket AlterS;
Increment the repetition (LeftBracket is near the =)
Left-LeftBracket IncCountS;
Right-LeftBracket IncCountS;
RightBracket
Decrement the repetition (RightBracket is near the =)
Left-RightBracket DecCountS;
Right-RightBracket DecCountS;
Equal
Create a Repetition (do you see the repeated horizontal lines?)
Middle-Equal DrawRepetition;
Dash, for the tiler program
Dash-<SHIFT> AddAlignMark;
Dash -<CTRL> AddStretchLine;
Dash-<TAB> RunTiler;
BackSlash
Make an object Conditional
Left-BackSlash DrawConditionS;
Middle-BackSlash DrawConditionS;
Right-BackSlash DrawConditionS;
SemiColon
Pins (EXXPERIMENTAL)
Middle-SemiColon-<SHIFT> RemovePinS;
Middle-SemiColon MakePinS;
LF
DEL
Comma <
Zoom in
Comma ScaleMoreDetail;
Period >
Zoom out
Period ScaleLessDetail;
Slash (but you really see the <?>)
Display hierarchy
Left-Slash DisplayHierarchyS;
Right-Slash DisplayHierarchyS;
Display Foo
Slash-<SHIFT> ShowErrors;
Slash -<CTRL> Statistic
Space
Show Box this viewer; (drag) or select all (click)
Left-<SPACE>-TAB DeSelectS;
Left-<SPACE>- SELECT TRIGGER FROM
Left-BEFORE 200 ResetScaleSel;
ENDCASE ;
Left-<SPACE> ShowRect;
Move viewer (drag) or reset scale (click)
Middle-<SPACE>-TAB ResetScaleAll;
Middle-<SPACE> SELECT TRIGGER FROM
Middle-BEFORE 200 ResetScaleTop;
ENDCASE ;
[MiddleUp]-<SPACE> MoveScreen;
Show Box another viewer; (drag) or show other viewers (click)
Right-<SPACE>-TAB SelectAll;
Right-<SPACE> SELECT TRIGGER FROM
Right-BEFORE 200 DisplayViewers;
ENDCASE ;
Right-<SPACE> ShowRectX;
Commands specific for both, NMOS and CMOS
1-<TAB>-Middle: Buried contact
Q-Middle: Transistor
W-Middle:  Draw angle transistor
<1>: select n-diffusion as current layer
<1>-<LOCK>: select p-diffusion as current layer
<1>-Middle: Contact current diffusion to metal
<2>: select poly as current layer
<2>-Middle: Contact poly to metal
<3>: select metal as current layer
<3>-Middle: Button contact
<6>: select metal-2 as current layer
NMos commands
All these commands are incorrect
<P-middle> Draw pullup
CMos commands
<1>-<SHIFT>-Middle: Buried contact with n-diffusion
Q-<SHIFT>-Middle or Q-<SHIFT>-<LOCK>: Draw transistor with p-diffusion
<1>-<LOCK>: select p-diffusion as current layer
<1>-<SHIFT>-Middle: Contact p-diffusion to metal
ChipnSil commands
All these commands are incorrect
<TAB-CTRL-0> command to handle macros. This allows both, creation of macros using the selected cell, or changing the border of a selected macro.
<T-Draw> Draw text in current font
ComandTool commands
Note that capitalization is not significant when giving the command
CDNewNMOS
Create a new empty NMOS design
CDNewCMOS
Create a new empty CMOS design
CDNewSil
Create a new empty Chipnsil design
CDRead
Read a Chipndale design. (.dale file)
The technology of the design on the file must be loaded.
CDReadCMNMOS
Read a Chipmonk NMOS design (.chip file)
CDReadCMCMOS
Read a Chipmonk CMOS design (.chip file)
CDColor
Shows a color popup menu. Options:
Cedar: resets the colormap to standard cedar values
ReadEntry: calls CDColorMap command
MyColors: Uses Chipndale's default colormap; alternates background color every second call.
Cursor-X: swaps the representation of the cursor
4 bit left: 4 bits per pixel with the color display on the left
4 bit right: 4 bits per pixel with the color display on the right
8 bit left: 8 bits per pixel with the color display on the left
8 bit right: 8 bits per pixel with the color display on the right
The difference between specifying the display on the left or the right has to do with which edge of your B&W display becomes transparent to the cursor. If you want to keep your left edge to make hitting your scrollbar easier, then specify the screen as being on the right. Yes I know your color screen is really on the left but the command will still work anyway. Trust me.
CDColorMap
Ask for a colormap number and sets up the colormap. 0 is default Chipndale, n>0 is an entry from a colormap file.
CDNMOSPattern
Ask for a pattern number, changes NMOS to use this number to represent color patterns. 0 means chipndale's default patterns, 1 means Chipmonk's default patterns, n>1 is the entry on a pattern file.
CDCMOSPattern
Same as CDNMOSPattern
5.3. Useful Things to Know
If output of a design crashes but you want to save it
Look at the commandfile CDDesign.cm
More documentation
See [indigo]<chipndale>5.2>top>CDDoc.df
Distribution-lists on the grapevine
ChipndaleImplementors^.pa 
The pure creatures reading your complaints, uh, suggestions.
ChipndaleUsers^.pa 
The user society. You get release messages, status reports and thereon.
ChipndaleDiscussion^.pa 
Open forum for discussion.
Note: Lists are restricted to Xerox employees, part-time employes and PARC summer students.
5.4. Client interfaces
Interesting modules
CD
CDOps
CDCommands
CDCells
CDDirectory
CDInline
CDApplications
CDValue
CDProperties
Modules of special interest to designers
CDConditions