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>5.2>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 details 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 "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.
1 © Walt Disney Productions. 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/cddesign17.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 a 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)
These commands will call up the Chipndale Terminal monitor (hereafter referred to as "Terminal") and will display the design 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.
It is important to know what technology the chip was designed for when you are reading Chipmonk files so that you use the correct form of the read command. (The Chipndale design files know their technology, however the code handling that technology must be loaded before issuing the CDRead command). If no filename was given to the 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 is either a ".dale" or a ".chip" file depending on the command. For example, you could read in a 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
1.2. The Control Panel
1.3. Technologies
1.4. Designs
1.5. Primitive Objects
1.6. Cells
1.7. The Cell Directory
1.8. Objects and Applications
1.9. Tip Tables
1.10. 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 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.
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.
These commands refer to the 7-28-84 version of the default Chipndale tip table. If you apply any of these without the expected result, check the mapping of the tip table you are using.
2.0. 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 Closest Object
<ESC>-<TAB>-Left
Holding down <ESC> and <TAB> when hitting the Left mouse button will single-select the closest object. All previous selections will be removed. Appears to be closest object within a certain radius?
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.
Select Multiple Objects
Right
Selections made with the Right mouse button will be added to the collection of previously selected items.
Deselect Object
<SHIFT>-Right
Point to a selected object, hold down <SHIFT> and hit Right. Selection will be removed.
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.
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.
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.1. Drawing wires, move and copy, transformations
Change Level
Change level by hitting the associated level number key. These commands are similar to the contact commands except that the middle button is not held down.
<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
<5>
set layer to be N-well
<6>
set layer to be 2nd level metal
Wires
Middle
Pressing the Middle button and moving the mouse draws a wire, releasing the button confirms the position and length of the wire
<SPACE>
Hitting <SPACE> while drawing a wire flips the orientation of the direction the wire bends
<SHIFT>
Hitting <SHIFT> while drawing a wire confirms a wire segment
<ESC>
Stops the wire drawing process
Move and Copy
Q-Right
Move selected objects to current cursor position
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.
Q-<TAB>-Right 
Copy selected objects to current cursor position
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.
Q-Left
Move pointed object to current cursor position
Identical to Q-Right save that the only object moved is the one pointed to by the cursor and all former selections are removed.
Q-<TAB>-Left
Copy pointed object to current cursor position
Identical to Q-<TAB>-Right save that the only object copied is the one pointed to by the cursor and all former selections are removed
Rotate
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.
Step Left/Step Right
Note that "A" is on the left of "S"
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.
2.2. Transistors and Contacts
Transistors
All 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 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>
Same as <1>-<TAB>
<2>
Draw poly contact
<3>
Draw metal-metal2 contact
2.3. Changing objects
Widen, Narrow
Lengthen, Shorten
Stretch
A-<CTRL>-{Left, Right}
Move 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, Right}
Move pointed side of object(s) one lambda to the rights
2.4. 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.
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 vilsible 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.5. Cells
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
C-Left
Push into cell: the rest of the design will be darkened
C-Right
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:
rename seleced ob:
list imports: list names of imported designs
list importee: list referenced object of a particular imported design
CELLS: calls Cells pop-up menu
Macro's for Chipnsil
See this space for future developments.
2.6. IO, Imports, and Includes
IO
<SPACE>-O
Use the IO pop-up menu. Default extension is .dale. Is there a single command?
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.7. Repetitions
Description
?
Commands
<R-middle>
Make a repetition of the selected objects
<I-CTRL-SHIFT>
Decrement count on selected objects (repetitions)
<I-CTRL>
Increment count on selected objects (repetitions)
Any repeated object has the possibility to ask what index it has in the repetition.
2.8. Properties, SignalNames
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.9. Text
Chipnsil Fonts
Text on MOS
2.10. Conditional objects
See this space for future explanations.
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
You cannot plot on both, the black and white and the color plotter at the same time, since the same command is used.
Bringover the file [indigo]<chipndale>5.2>top>colorvplot16.df with the DF tool. (16 is the current chipndale version, keep this number up to date, independantly of this documentation).
- All of Chipndale will be broughtover if not already present.
- You should bringover to the subdirectory from where you run Chipndale.
Independently whether Chipndale is already running or not, execute the command:
%VersatecCMOS or
%VersatecNMOS
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 plot indicating portion of the plot under consideration; the phrase "finished plot(s)" indicates that all strips have been done.
Sending To The 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 levels by editing the command files VersatecCMOS.cm and VersatecCMOS.cm.
3.3. Plotting on the Black and White Versatec plotter
Creating the Plot
You cannot plot on both, the black and white and the color plotter at the same time, since the same command from the tip table is used.
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 <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. Type the command:
% colordisplay
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 toggle the viewer between the B&W and the color screen. The "-->" and "<--" buttons can also be used to swtich the viewer over from the color display.
Choosing Screen Colors
Color Menu
?
Patterns and Maps
?
4. Chipndale and Chipmonk
4.1. Quick introduction for veteran Chipmonk users
Wires
To draw wires just press the middle button and move the mouse.
<SPACE> while the button is still kept down flips the wire
Releasing the middle button draws the entire wire.
<SHIFT> while the button is stil kept down draws a segment of the wire.
Menus
<G> displays a global menu
<V> displays a viewer menu
Selection
<SPACE>-Mark shows the selected Rect on an this viewer
<SPACE>-Select shows the selected Rect on an OTHER viewer
Viewers
<SPACE>-Draw moves this viewer
< grows the design (see more detail on smaller part)
> shrinks the design (see more in less detail)
/ shows positions of other viewers
All the other commands are analogous to Chipmonk or inherently obvious (cross fingers).
4.2. 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.
Use of property lists.
Checklots on both color and B&W Versatec plotters.
4.3. 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 runned 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
Rename: Renames the design
Select all: Select all applications
Transform: Calls the transform popup menu, works on selected
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
Grid: grid spacing (by popup menu)
Ticks: ticks (by popup menu)
Split: Split viewer
Reset: Reset scaling such that the whole design is visible
Quickgrow: Expand viewer scale by # (4 times as much as a "Grow")
Grow: Expand viewer scale by # —By how much?-
Shrink: Compress the viewer scale by # —By how much?-
Quickshrink: Compress the viewer scale by # (4 times as much as a "Shrink")
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: list unused entries, and ask whether they should be removed from the directory.
remove entry: remove a particular entry from directory, (checked, unly unused entries can be removed)
list imports: list names of imported designs
list importee: list referenced object of a particular imported design
IO: calls IO popup 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.
list imports: list imported designs
directory: calls the directory popup menu
Chipmonk output: Output chipmonk compatible, version 7 .chip file. Restricted to nmos and cmos.
Arbitrary commands (to viewer with input focus)
AAA
Stretching and Moving incrementally left the selection
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[ArrowCursor] SplitWireS;
Right-B[ArrowCursor] 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) )
<SPACE>-E Left- [SingleSelect];
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 (Stil CRAZXY)
<SPACE>-N Left- [SingleSelect];
Middle-N EnterNameS;
Left-N DisplayNames;
Right-N DisplayNames;
PPP
Show properties of single-selected object
<SPACE>-P Left- [SingleSelect];
Left-P ShowPropertiesS;
Right-P ShowPropertiesS;
Put property on single-selected object
Middle-P EnterPropertyS;
QQQ
Move, Copy, Stretch single-selected object
Q Left- [ArrowTracking];
Left-Q [FirstSelect], [ArrowTracking];
<SPACE>-Left-Q [SingleSelect], [ArrowTracking];
Left-Q-<TAB> [ArrowCursor] CopySpointed;
Left-Q -<CTRL> [ArrowCursor] StretchS;
Left-Q-<SHIFT> [ArrowCursor] StretchyMoveS;
Left-Q [ArrowCursor] MoveSpointedq;
Move, Copy, Stretch
Q Right- [ArrowTracking];
Right-Q [ArrowTracking];
<SPACE>-Right-Q [ReselectLast], [ArrowTracking];
Right-Q-<TAB> [ArrowCursor] CopyS;
Right-Q-<SHIFT> [ArrowCursor] StretchyMoveS;
Right-Q -<CTRL> [ArrowCursor] StretchS;
Right-Q [ArrowCursor] MoveSselectedq;
Transistors
Middle-Q [LEFTSH] 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
Right-S [Reset];
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) )
Right-T [Reset];
<SPACE>-T Left- [SingleSelect];
Left-T MirrorYS;
Right-T MirrorYS;
UUU
VVV
See also C,D Keys;
Push and Pop (V: see how it goes up and down ?)
Right-V [Reset];
Right-V PushS;
Left-V PushS;
Middle-V X PopNew;
Middle-V PopMenu;
WWW
Stretching and Moving incrementally up the selection
Right-W [Reset];
Left-W -<CTRL> StretchStepUpS;
Right-W -<CTRL> StretchStepUpS;
Left-W LambdaUpS;
Right-W LambdaUpS;
Angle transistors
Middle-W [LEFTSH] DrawAnglePXstr;
Middle-W DrawAngleNXstr;
XXX
See also C key if topic is Cell
external (imported) objects
Right-X [Reset];
Right-X<SPACE>- SelectADesign; --is textually after expand
Left-X<SPACE>- SelectADesign; --is textually after expand
Middle-X<SPACE>- DrawCorrespondingObject;
Middle-X DrawImported;
YYY
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 [LEFTSH] DrawPButCon;
Middle-One Two DrawNButCon;
P-diffusion contacts or set P-diffusion
One-<TAB> [ResetNoTrack];
One Two [ResetNoTrack];
One [LEFTSH] SELECT TRIGGER FROM
Middle- DrawPDifCon;
One Up SetLayerPDif;
ENDCASE [ResetNoTrack];
Middle-One [LEFTSH] DrawPDifCon;
N-diffusion contacts or set N-diffusion
One SELECT TRIGGER FROM
Middle- DrawNDifCon;
One Up SetLayerNDif;
ENDCASE [ResetNoTrack];
Middle-One DrawNDifCon;
Two
Draw with poly
Two One [ResetNoTrack];
Two SELECT TRIGGER FROM
Middle- DrawPolCon;
Two Up SetLayerPol;
ENDCASE [ResetNoTrack];
Middle-Two DrawPolCon;
Three
Draw with metal
Three SELECT TRIGGER FROM
Middle- DrawMm2Con;
Three Up SetLayerMet;
ENDCASE [ResetNoTrack];
Middle-Three DrawMm2Con;
Four
Draw with contact-diffusion
Four [LEFTSH] SELECT TRIGGER FROM
Middle- DrawNWCntCon;
Four Up SetLayerNWCnt;
ENDCASE [ResetNoTrack];
Middle-Four [LEFTSH] DrawNWCntCon;
Four SELECT TRIGGER FROM
Middle- DrawPWCntCon;
Four Up SetLayerPWCnt;
ENDCASE [ResetNoTrack];
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 [BoxTracking];
Middle-Quote [BoxTracking];
Right-Quote [BoxTracking];
BW Plot
Left-Quote-<SHIFT> [BoxCursor] VersatecBWPlot;
[MiddleUp] Quote-<SHIFT> [BoxCursor] VersatecBWPlot;
Right-Quote-<SHIFT> [BoxCursor] VersatecBWPlot;
Color Plot
Left-Quote [BoxCursor] VersatecColorPlot;
[MiddleUp] Quote [BoxCursor] VersatecColorPlot;
Right-Quote [BoxCursor] VersatecColorPlot;
LeftBracket
Right-LeftBracket [Reset];
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
Right-RightBracket [Reset];
Decrement the repetition (RightBracket is near the =)
Left-RightBracket DecCountS;
Right-RightBracket DecCountS;
Equal
Create a Repetition (do you se the repeated horizontal lines?)
Right-Equal [Reset];
Middle-Equal [ArrowTracking];
[MiddleUp] Equal [ArrowCursor] DrawRepetition;
Dash, for the tiler program
Dash-<SHIFT> AddAlignMark;
Dash -<CTRL> AddStretchLine;
Dash-<TAB> RunTiler;
BackSlash
Make an object Conditional
Right-BackSlash [Reset];
Left-BackSlash DrawConditionS;
[MiddleUp] 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
Right-Slash [Reset];
Left-Slash DisplayHierarchyS;
Right-Slash DisplayHierarchyS;
Display Foo
Slash-<SHIFT> ShowErrors;
Slash -<CTRL> Statistic;
Keyset1
Keyset2
Keyset3
Keyset4
Keyset5
BS
Spare2
Spare3
Space
Show Box this viewer; (drag) or select all (click)
Left-<SPACE>-TAB DeSelectS;
Left-<SPACE>- SELECT TRIGGER FROM
Left-BEFORE 200 ResetScaleSel;
ENDCASE [BoxTracking];
Left-<SPACE>-[BoxCursor] ShowRect;
Move viewer (drag) or reset scale (click)
Middle-<SPACE>-TAB ResetScaleAll;
Middle-<SPACE>- SELECT TRIGGER FROM
[MiddleUp] BEFORE 200 ResetScaleTop;
ENDCASE [ArrowTracking];
[MiddleUp]<SPACE>-[ArrowCursor] 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 [BoxTracking];
Right-<SPACE>-[BoxCursor] ShowRectX;
Commands specific for both, NMos and CMos
<B> middle: Burried contact
<T-CTRL> enter name for selected object
<T-left> enter name for pointed object
<T middle>: Transistor
<Z>  Draw angle transistor
<CTRL-1>: select diffusion as current layer
<1 left>: select diffusion as current layer
<1 middle>: Contact current diffusion to metal
<CTRL-2>: select poly as current layer
<2-left>: select poly as current layer
<2 middle>: Contact poly to metal
<CTRL-3>: select metal as current layer
<3-left>: select metal as current layer
<3 middle>: Button contact
<CTRL-5>: select metal-2 as current layer
<5-left>: select metal-2 as current layer
<5-middle>: draw via
NMos commands
<P-middle> Draw pullup
CMos commands
<B> shift middle: Burried contact with p-diffusion
<P-middle> Draw transistor with p-diffusion
<CTRL-4>: select p-diffusion as current layer
<4 left>: select p-diffusion as current layer
<4 middle>: Contact p-diffusion to metal
ChipnSil commands
<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
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 every second call.
Cursor-X: swaps the representation of the cursor
4 bit left: obvious
4 bit right
8 bit left
8 bit right
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 chipmonks 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>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
Of special interest to designers
CDConditions