CHIPNDALE 0.18
FOR INTERNAL XEROX USE ONLY
Chipndale
An interactive editor for VLSI designs
MOS Designer's introduction
Release 0.18
Ch. Jacobi, Kim Rachmeler (Dec. 8, 1984)
Filed on: [Indigo]<Chipndale>Documentation>NewChipndale18.tioga
© Copyright 1983 Xerox Corporation. All rights reserved.
Abstract: Chipndale is an interactive graphic layout tool made to run in Cedar. This document is an introductory reference for users creating or editing VLSI designs; there will be other documentation describing additional utilities like creating checkplots, masks, or CIF output, and doing design rule checking. Programmers who want to access Chipndale from a program should read the additional documentation available for these purposes.
XEROX   Xerox Corporation
    Palo Alto Research Center
    3333 Coyote Hill Road
    Palo Alto, California 94304

For Internal Xerox Use Only
0. Introduction
0.1. History
Chipndale1 is the the ultimate interactive VLSI layout editor written in Cedar. It is normally used interactively, but all it's operations can be accessed by other programs.
In early design stages called Chipmonk II, Chipndale 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 quite 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.
There are three main sections to the Chipndale documentation. The first is the user's manual, the file you are currently reading. The second is a guide to the additional tools that can be loaded along with Chipndale; this document can be found in the file ChipndaleTools18.tioga. The third section is a set of hints for programmers of Chipndale clients; this file can be found under ChipndalePrograms.tioga.
The rest of this introduction will provide you with step-by-step information to start Chipndale and read in design files. The rest of the document is intended as a reference manual; use the "Levels" 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 levels. The notes in small print at the deepest nested level are usually examples or explanations that the inexperienced user might need. The "Find" button can also be useful if you are searching for a particular topic.
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?) Subnote: "Chipmonk II" also referred to the split between a technology independent kernel and all the add-ons, technologies and commands.
0.2 Saying Hello a First Time
Go find yourself a Dorado running Cedar 5.2 and login. Use the DF Tool to bringover the file:
/indigo/chipndale/5.2/top/cddesign18.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
To get an existing design up on the screen, start up a session of Chipndale (in the same subdirectory containing its files) with the following incantation:
% CDRead <optional name of a Chipndale design file>
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 to type a file name in. The file may either be present locally or on one of the file servers; default extension is ".dale". You do not need to type in the extension.
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. But this capability also means that the user must make sure that the appropriate technology is loaded so that Chipndale can access features unique to that technology. For MOS designs, Chipndale distinguishes between the NMOS and the CMOS technology.
1.3. Design
A design is what a designer creates; it is the unit used to be stored in files, and also the unit used in the synchronization. Every design is in a particular technology and consists of some geometry and a directory.
1.4. 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.
Composite objects are cells, repetitions or imports. These are the building blocks of the more complex structures used to construct designs. All the composite objects must be listed in the designs directory. Cells are the most basic building blocks.
The types of objects which can be included in a design are specified by the technology. However some types of objects, cells and rectangles, exist in all technologies.
1.5. Additional Tools
Chipndale makes it easy to write additional tools, causing a large variety of extra utilities to spring up around the core program. It is not possible to describe all additional tools in this document; you can find that description in ChipndaleTools18.tioga. The list of additional tools starts with "design rule checking", "making checkplots", "cif generation", "mask generation"...
1.6. Tip Tables
Often used as the real truth of the user interface, users are invited to browse the tip table. The tiptable is alphabetically sorted and it has comments.
2. Commands
2.0. 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. Click any mouse button to obtain the proper cursor.
The mouse buttons 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 default CMOS or NMOS 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. The Pop-up menus and the control panel
Pop up menus
Chipndale has real many commands, more than you are willing to remember. Pop up menus allow you to call commands, without having to know lots of exotic key combinations. There are many pop up menus available, and the menus can get additional entries when more programs are loaded. You can always try what commands a pop up menu has; mouse clicking outside of it discards the menu. To get a pop up menu, push the space key together with its letter key.
<G>-<Space> the global menu; mainly allows call of other menus
<C->-<Space> the cell menu; creation etc of cell
<D->-<Space> the directory menu; get an object, clean the directory...
<I or O>-
<Space> the IO menu
<P>-<Space> the program menu; call of additional programs.
<P>-<SHIFT>-
Middle another program menu; programs executed on a rectangular area
<T>-<Space> the transformation menu; mirror and rotate
<N>-<Space> the names and properties menu
<V>-<Space> the viewer menu
<B>-<Space>  the color display menu
<S>-<Space> the special commands menu
need to augment list
Control panel commands
The control panel is a graphical method of changing layout parameters. Every design has a control panel associated with it; The control panel allows the designer to select default values, mainly the layer in which he wants to draw, but also some other modes. The panels also have some technology dependant entries.
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
Middle:  (when done over a layer description)
  selects this layer as default for drawing wires
<SHIFT>-
<mouse key>: shows a pop up menu, allows entry of arbitrary values.

The control panel can also be scrolled.
Need to complete description
2.1. Simple Selection
Select Single Object
Left Point to desired object and hit the Left mouse button. All previous selections will be removed and this object will be selected. (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.
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.2. More Advanced Selection <<***>>
Area Select/Deselect
<TAB>-Left Select all objects contained in the box drawn by moving the mouse.
<TAB>-<CTRL>-Left Select all objects within or touching boundary drawn by moving the mouse
<SHIFT>-<TAB>-Left Select all 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 all 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".
2.3. Drawing objects
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.
<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
<ESC> Stops the wire drawing process
Note: The current layer can be changed with either the keyboard or the control panel, the width can be set only through the control panel.
Choosing a layer
<TAB>-Middle Clicking the middle button while holding down <TAB> will set the current layer to be the same as the layer of a pointed object, if it has a unique layer.
Change layer by hitting the associated layer number key. 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.
CMOS
<1> diffusion:
  default N+, with <SHIFT> P+
<2> poly
<3> metal
<4> diffusion contact:
  default P+ to N-well, with <SHIFT> N+ to P-well
<5> N-well
<6> 2nd layer metal
In general, if the <SHIFT> or <LOCK> key is down, everything is done in the P-diffusion world; <LOCK> up indicates N-diffusion. You can change between pdif and ndif just by switching the position of the <LOCK> key without hitting <1>.
Note: NMOS uses <4> for 2nd layer metal, it has no wells or well contacts.
Transistors
Q-middle Draw a n-transistor (with SHIFT or LOCK: a p-transistor)
W-middle Draw an angle n-transistor(with SHIFT or LOCK: an angle p-transistor)
Contacts
Contact commands use the same keyboard keys as the layer commands plus the middle mouse button; the contact is made between the indicated layer and metal. The command is executed by holding down the appropriate numeric keys while hitting the middle button.
Middle mouse button while:
<1> N+ to metal, with <SHIFT>: N- to metal
<2> poly to metal
<3> Butting P+ to poly and metal; with <SHIFT>: N+
<4> P+ to substrate, with <SHIFT>: N+ to N-well
<6> metal to metal 2
<1>-<2> Buried N+ to poly; (There are no P+ buried contacts)
<1>-<2>-<3> Butting P+ to poly and metal; with <SHIFT>: N+
This command is supposed to remind you of the three layers used in a butting contact; everybody will probably use the simpler <3>-Middle command though. I know I would.
Note: NMOS uses <4> for 2nd layer metal, therefore <4> for a metal to metal 2 contact; there are no substrate contacts.
Drawing objects by name (from the directory)
C-Middle Draw object, placing origin at current cursor position. Terminal will prompt for name of the object to be drawn.
2.4. Simple transformations
Move by a vector
Q-{Left or Right} Move selected object(s).
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 reselect a single object and moves only this object.
Move an incremental step
A-{Left or Right} to the left.
S-{Left or Right} to the right
W-{Left or Right} up
Z-{Left or Right} down
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 size of the step can be set by the control panel.
Copy
Q-<TAB>-{Left or Right} Copy selected objects positioned according to the drawn vector; the simple copy is similar to a move save for an additional <TAB> -- however, the step moves do not have a corresponding copy version; they would not make sense.
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.
Rotate and mirror
R-{Left or Right} Rotate selected object(s) by 90 in a clockwise direction, the bottom left corner remains fixed.
T-{Left or Right} Mirror selected object(s) across the vertical axis
E-{Left or Right} Mirror selected object(s) across the horizontal axis
Note that rotation and mirroring can also be done with the Transform pop-up menu, <SPACE>-T.
Rotation is the R command; for mirroring E and T were selected because they are located next to the "R" (rotate) key and have symmetries appropriate to their function.
Delete/Undelete
D-{Left or Right} Delete selected object(s)
D-Middle Undelete last deleted object(s)
2.5. Stretching objects
Stretch
{A, S, W, Z or Q}-<CTRL>-{Left or Right} Note that stretching is very similar to the moves; instead of moving the object, only the pointed border is moved, the object is stretched. Therefore, the stretch commands are identical to the move commands except, that a modifier key, <CTRL> is used. The letter A, S, W, Z or Q specify the direction and the amount, as in the moves.
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.
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.3. Some exotic but useful or necessary commands <<***>>
Stretchy move
{A, S, W, Z or Q}-<SHIFT>-{Left or Right} Stretchy move is a special special move which maintaining primitive connectivity; The commands are exactly the same as the moves, except the SHIFT modifier is used.
Stretchy move is implemented in a strictly geometric way and does not understand the electrical behaviour... be gentle on imperfection.
Measuring distance, counting objects, information about an object
<CTRL>-Middle
-- Click the middle key quick when <CTRL> is down: you get information about the selected objects.
-- 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.
Yes, these two commands use the same keys, only the time scale is different.
Split a wire
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")
Interrupt the drawing
<ESC>-<LF> Hold down a few seconds! Interrupts the drawing, of all viewers, immediately after the command is accepted
Abort a command
<ESC>-<DEL> Aborts the curent command; works at least if the implementation of the current command is kosher and asks for the abort flag... . Of course, short commands do not ask the flag, but the abort command at least flushes the command queue.
An analogue is using <DEL> to abort an input on Terminal.
2.6. Viewer commands
Change scale
"<", ">" Hitting <<> decreases magnification; hitting <>> increases it. It is easier to remember these commands by looking at the upper case options on the keys, but of course the real keys are <.> and <,>.
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.
Show a particular area
<SPACE>-Left, <SPACE>-Right Drag a box to define an area. The view of the design will be scaled and moved such that this box will be displaayed. The left mouse button displays the area on the same viewer; the right mouse button choses another viewer.
View all <<***>>
<SPACE>-Middle Holding down <SPACE> and fast 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 fast 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 these commands can also be accessed through the cell pop-up menu, <SPACE>-C. Drawing cells is not a special command but like putting down any named object which is in the directory: use the C-Middle command.
Create cell
X-C-Middle Create a new cell from the set of all selected objects. Terminal will prompt for a unique cell name.
Expand (Flatten) cell
X-C-{Left or Right} Changes a cell back into just a group of objects; this is the opposit of creating a cell.
Push-Pop
V-Left Push into cell: the rest of the design will be greyed.
V-Middle Pop out of cell
Note how the letter "V" both points down and opens up to remember push-pop; it is also located close to the "C"key.
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
The IO menu allows operations on designs which already have a viewer; use the CommandTool commands to read in the files originally.
<SPACE>-I or <SPACE>-O
Use the IO pop-up menu. Default extension is .dale.
Chipmonk compatible files:
The IO pop-up menu allows to create backwards compatible chipmonk output. (.chip file). This command is restricted to CMOS and NMOS IC designs. Try to avoid switching between the chipmonk and chipndale worlds frequently; on every transfer you may loose some information. Not all Chipndale features can be written onto Chipmonk compatible files. Not all Chipmonk representation of objects can be represented in chipndale, mainly those which can not be fabricated savely are excluded.
Imports
X-Middle Draw an imported object. The command querries for the design, and then for the object. A reference to this object is drawn.
To import a design means to make references to objects from the imported design. The imported objects are not included in the new design but only referenced. If objects are changed in the original design and then re-imported, the changes made are propagated to the new design. To draw imported objects it is first necessary to import the design using the IO menu. Once the design is imported, we can import any of its objects.
There is a easier way to draw imports: Open a viewer on the design which is used as source; make this design the selected design X-<SPACE>-Right (don't intermix selected design with selection). Select an object in the source design. To draw this object in your design, use X-<SPACE>-Middle.
Once a reference to an imported object is made, it is possible to really include that object in the current cell directory. It is than no longer referenced but a part of the new design: use the "merge in" entry in the directory menu.
Include
To include a design means to make all objects of that directory local. Use the IO menu to do includes, but usually one would prefer to import a design.
2.9. Repetitions
Description
A repetition is a set of objects placed at regular intervals along a given vector a given number of times. This feature allows the designer to create uniform structures quickly and easily. Any group of objects can be used as the basis for a repetition, even repetitions themselves.
Commands
=-Middle (note the repeated horizontal lines)
Make a repetition of the selected objects
Select the objects you want to form the basic unit of the repetition. Hold down "=" and draw a vector with the middle button. The vector indicates the spacing of the units. The vector is pointing to the position of the origin of the next unit, where the origin of any unit is defined by the tail of the vector. After the middle button is lifted, Terminal will prompt for the number of units you want in the repetition.
[-{Left or Right}
Increment count on selected objects (repetitions)
]-{Left or Right} (note that "[" and"]" are just below "=")
Decrement count on selected objects (repetitions)
=-<Shift>-Middle
Change the repetition vector of the selected repetion.
Any repeated object has the possibility to ask what index it has in the repetition. It is possible to change a repeated object into a cell; however there is no way back.
2.10. Properties, Signal Names
Names and Properties Menu
It is possible to hang arbitrary properties to any application of objects. These properties may or may not affect any program's behavior, 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.
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.
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 "$SignalName". 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 separate documentation. Until now conditional objects can not be design rule checked or put on hierarchical cif file; However generating EBES masks or flat CIF files works. There is still danger of committing error 33.
2.13. Using the Color Display
Chipndale also uses the color screen as a viewer. It is best to use your user profile to set up the color display. You can also set up the color display interactively. <Space>-B will show the color display pop up menu. There are some separate programs to influence the Cedar settings; most of these additional commands are included in the color display pop-up menu.
Patterns and Maps
To describe colors we need to specify both, a color map and color patterns. The colormap is a setting of the device, and is valid for all viewers on the device; Color patterns are initialized for every technology; on code level it could be even specified for every viewer. To make color appearing correct, it is necessary that the color map and the color patterns fit together;
For now, Chipndale is able to read the color map description and the color pattern description files of Chipmonk, if a 4-bit per pixel device is used:
CDPattern reads in a pattern from a pattern file of chipmonk, specify which file by using the userprofile.
CDColorMap reads in a chipmonk colormap.
CDPattern and CDColorMap are described in the section on commander commands
2.14. Useful Things to Know
If output of a design crashes but you want to save it
Look at /indigo/chipndale/temp/......
Did you try SHIFT-SHIFT-SWAT? (hold it down for a couple of seconds).
3. ComandTool commands
Note that capitalization is not significant when giving the commands
3.1 Creating new viewers
CDNewNMOS, CDNewCMOS, CDNewSil
Create a new empty design in the appropriate technology.
3.2 Reading in designs
CDRead {optional filname}
Read a Chipndale design. (.dale file)
The technology of the design on the file must be loaded. If the filename is not specified, chipndale will querry for one.
CDReadCMNMOS, CDReadCMCMOS {optional filname}
Read a Chipmonk design (.chip file); it is necessary to specify the technology, since chipndale differs between nmos and cmos. If the filename is not specified, chipndale will querry for one.
(The crazy names stand for
ChipnDaleReadChipMonkNMOS and
ChipnDaleReadChipMonkCMOS)
3.3 Color Options
CDColor {optional 4|8} {optional L|R}
If no parameters are on the command lines, a popup menu is shown.
Cedar: resets the colormap to standard cedar values
Cursor-black: sets the representation of the cursor
Cursor-white: sets the representation of the cursor
4 bit left: 4 bits per pixel on lefthand display
4 bit right: 4 bits per pixel on righthand display
8 bit left: 8 bits per pixel on lefthand display
8 bit right: 8 bits per pixel on righthand display
CDColorMap {optional filname} {optional number}
This command allows to set up Chipmonk compatible colors. Ask for a colormap number and sets up the colormap. n>0 is an entry from a colormap file. A filename allows to read another colormap file. If no parameter appears on the commandline, chipndale will query you for a number.
CDPatterns {optional filname} {optional number}
This command allows to set up Chipmonk compatible colors. Ask for a pattern number, changes NMOS and CMOS to use this number to represent color patterns. 1 means Chipmonk's default patterns, n>1 is the entry on a pattern file. A filename allows to read another color pattern file. If no parameter appears on the commandline, Chipndale will query you for a number.
4. User Profile Options and Commands
It is usually good to specify full path names for filenames mentioned in the user profile; user profile readings are processed with different working directories.
4.1. Control of the pop-up menu
PopUpMenu.FontFamily: "Helvetica"
PopUpMenu.FontSize: 10
PopUpMenu.FontBold: TRUE
PopUpMenu.FontItalic: FALSE
PopUpMenu.LineHeightChange: 0
4.2. 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.ColorStartLeft: 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.RunPrograms: NIL
-- include a list of bcds which should be run whenever
-- Chipndale is started
4.3. NMOS and CMOS-specific user profile options
Chipndale.NMos.TIPTable: "ChipndaleNMos.TIP"
Chipndale.CMos.TIPTable: "ChipndaleCMos.TIP"
Chipndale.ChipmonkColorMaps: "default.CDColorMaps"
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.ChipmonkColorPatterns: "default.CDColorPatterns"
-- NMOS and CMOS only
Chipndale.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
4.4. 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. The Outside World
5.1. Necessary system
Dorado with Cedar 5.2
5.2. DF files
"©" stands for the current chipndale version number, right now 18 (meaning 0.18) but the zero is seldom written.
"©©" stands for the Cedar release used for the chipndale version, (for Chipndale 0.18 use 5.2, since Chipndale 0.18 is programmed in Cedar 5.2.
DF files for designers
/indigo/chipndale/©©/top/cddesign©.df
/indigo/chipndale/©©/top/fooTool©.df where fooTool is the actual tool
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. You should run chipndale from the same subdirectory where you store it, so you get the correct default fonts, icons, colortables... (Chipndale does not use servers as a default because they might be down.)
DF files for programmers
/indigo/chipndale/©©/top/cd©.df
/indigo/chipndale/©©/top/cmos©.df
/indigo/chipndale/©©/top/nmos©.df
DF files for documentation
/indigo/chipndale/©©/top/CDDoc.df
Contains documentations how to use some further tools, how to program extensions to Chipndale and lots of history.
5.3. Distribution-lists on the Grapevine
ChipndaleImplementors^.pa 
The pure creatures reading your complaints, uh, suggestions; actually we really like to get 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.
6. Chipndale and Chipmonk
6.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.
Its own implementation is based on the client interfaces.
Its 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.