chipndale15.tioga
improved Ch. Jacobi May 24, 1984 2:13:24 pm PDT
For Internal Xerox Use Only — DRAFT
 Chipndale -- The Toy
A tentative introduction to the soon-to-be-indispensible tool
Introduction
Chipndale, son of Chipmonk, known as "Chipndale" to its friends, is an interactive graphic layout tool made to run in Cedar. The Cedar environment allows Chipndale to make 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. Such is the dream.
The reality is the substance of this paper. For the nonce, we (the implementors) would like you (the users) to be exposed to the skeletal features of the system -- what a viewer looks like, how to move around in a design, the difference between a terminal monitor and a control panel and so on. We do not, however, expect or even want you to be using Chipndale for new designs; in fact, it is next to impossible to do so right now. The instructions included here will allow you to call up Chipndale, read in old Chipmonk files, scale and rotate the designs, and print them out on the Versatec. You will not be limited by the size or complexity of your designs, but for now they must be in NMOS to be understood. If you are really daring, you can open the file "ChipndaleNmos.tip" and try out some of the commands listed there; the interface has been intentially designed to resemble Chipmonk. But nothing is guaranteed save the commands presented here. The moral of the story is:
The ice you are skating on is currently under development; it is apt to be thin in places.
An example of a thin spot is the fact that as of the moment, text is not read in from old Chipmonk files. So if there are pieces of your file missing, this may be the reason. Don't get mad, get even; that is, if you are miffed at these and other shorcomings, send us mail (ChipndaleImplementors^.pa or ChipndaleDiscussion^.pa). We won't know about it unless you tell us.
Saying Hello
Go find yourself a Dorado running Cedar 5.1 and login. Use the DF Tool to bringover the file
/indigo/chipndale/top/5.1/cddesign.df
Now the machine is equipped with all the information it needs to run the NMOS (CMOS, and ChiPencil) version of Chipndale without the color Versatec plotting routine. 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. They don't usually bite.
Becoming Acquainted
To get a design to play with, start up this session of Chipndale with the incantation:
%CDRead <optional name of a chipndale design file> or
%CDReadCMNMOS <optional name of a chipmonk design file> or
%CDReadCMCMOS <optional name of a chipmonk design file>
(which to the uninitiated means
ChipnDaleReadChipMonkNMOS and ChipnDaleReadChipMonkCMOS.
But its really simple, to read in good chipndale files type only CDRead)
This command will call up the Chipndale Terminal monitor (hereafter referred to as "Terminal") and will initialize the plotting module. 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 in when you are reading Chipmonk files (the Chipndale design files know their technology, however the code handling that technology must be loaded before issuing the command). If no filename was given to the command, Terminal will respond with the request:
Input file >
Type it 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 as:
/ivy/monier/aspen
or as
aspen.chip
if it was already on the local disk. You usually need not 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. You will also notice a control panel appear in the lower right of the screen. Functionally similar to the buttons available at the bottom of the Chipmonk screen, the description of the panel's use is reserved for a more comprehensive manual.
Chipndale and chipmonk
Whats really different from chipmonk
Some few commands...
All the fuss about technology independency. I'ts 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 interfaces.
Multi viewers per design.
Multi 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.
Plots on versatec plotter.
Color plots on versatec plotter.
Whats missing
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 is not maintained
Feedback from real designers
is really missing
Making Friends
Quick and incomplete, or, Main differences to chipmonk
To draw wires just press the middle button and move the mouse.
<Space> while the button is stil 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.
<G> displays a global menu
<V> displays a viewer menu

<space>-mark shows the selected Rect on an this viewer
<space>-select shows the selected Rect on an OTHER viewer
<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 obvious.
Moving Around in the Viewer
There are several methods for moving in the viewer: changing scale and changing position.
Using the commands "<" and ">" allows you to scope in and out of the design quickly. Another way to change scale is to use te viewer pop up menu (<V>-Command).
Once you have the range where you want it, it is time to move the viewer over the portion of the design you are interested in. To use the move command, while holding down the space bar, move the cursor with the middle button down. A line will be continuously traced from the starting cursor position to the current one. When you release the mouse button, the viewer will move in proportion to that vector.
If you can see the general area you want to be in the viewer, draw a rectangle around it with the left button while the space bar is down. The selected portion of the design will replace the current area in the viewer.
Rotating the Design
In order to rotate the design 90#clockwise, select the entire layout with (Space Bar)-A. Now indicate a rotation with CTRL-R. The design will be rotated keeping the upper left corner fixed. As long as the design is selected, hitting more CTRL-R's will continue the rotation. You can remove the selection by holding down "C" and right-clicking the mouse.
This command is useful in conjunction with the plotting routine.
Plotting on the Color Versatec plotter
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>top>colorvplot15.df with the DF tool. (15 is the current chipndale version, keep this number up to date, independantly of this documentation).
Independently whether ChipNDale is already running or not, execute the command
%VersatecCMOS
or
%VersatecNMOS
to set up the appropriate software and colors.
Plot any portion of the design you wish by selecting an area using the left mouse button with 'Y' held down. Terminal will request the number of vertical strips you want the plot divided into; each strip will be made into a pd file named "plot(i).pd" where i is 0..(#strips -1). A '.' will be printed for every band completed; the phrase "finished plot(s)" indicates that all strips have been done.
Sending To The Versatec
Be sure that the versatec is in "Soliciting Client" mode. 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 and wait for the correct prompt to appear.
You have your pd files; you want hard copy. Make sure the versatec is in "Soliciting Client" mode; give the command
%peach belle <name of pd file>
and the file will be transferred over the net to the color versatec (aka belle). An pie-shaped icon will appear indicating the portion of the file that has been transferred. You must wait until the file has completely finished printing (not just finished moving over the net) before sending the next print request.
Completed plots are cut off each night and left for pick-up on a table in the Purple Lab. Users are discouraged from cutting off their own plots. (It is quite difficult to install the paper properly; such that the next user gets a good plot again)
Color Selection
You can easily change the colors assigned to levels by editing the command files VersatecCMOS.cm and VersatecCMOS.cm.
Plotting on the Black and White Versatec plotter
You cannot plot on both, the black and white and the color plotter at the same time, since the same command 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 TAB-V, 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.
Using the Color Display
Chipndale also uses the color screen as a viewer. Type the command
%cdcolor
to enable the display. You can set up the color screen for chipndale with the 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.
User Profile
Control of the popup 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
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 be scrolled.
Pop up menu
Global popup menu
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
The global popup menu appears with the <G> command
Viewer popup menu
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:
grow:
shrink:
quickshrink:
drawmode: Monitors drawing of design if in a pushed cell;
viewer may optionally ommit drawing the outside cell objects
simplification: simplification treshold of viewers can be modified to show more or less details.
The Viewer popup menu appears with the <V> command
Directory popup menu
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 popup menu
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 inputfocus
<A-Space>: select all
<A-left>: Alter pointed object
<A-right>:  Area selection
<TAB-A-right mouse button>:  Area de-selection
<CTRL-A-right mouse button>:  Area add selection
<C-middle> draws a cell
<CTRL-C> create a cell using the selected objects
<C-left> copy selected objects
<C-TAB-CTRL> transform (certain) selected to cell (works for repetitions, busses)
<D-middle> delete pointed object
<D-left> invoke debug popupmenu
<D-TAB> ask for an object and remove it from the directory
<E-left> expand pointed cell
<CTRL-E> expand selected cells
<F-SHIFT> Flush the list of remembered deleted objects
<G>: invokes the global popup menu
<CTRL-H>:  Select this design (as Source for inter-design copy)
<H-middle>: copy selected object from selected design; Actually it does NOT copy, but checks for the name and creates a reference
<I-middle> Draw an imported object
<I-SHIFT-left> Decrement count on pointed object (repetitions)
<I-left> Increment count on pointed object (repetitions)
<I-TAB> Import an design
<I-TAB-CTRL> Include a design
<I-CTRL-SHIFT> Decrement count on selected objects (repetitions)
<I-CTRL> Increment count on selected objects (repetitions)
<J-left> stretchy move
<K>:  Set of simplification treshold value for selected cell.
<L-left> lengthen pointed object
<L-middle> Draw a text (optional command)
<L-CTRL> lengthen selected objects
<M-CTRL> Mirror pointed object
<M-middle> Move selected objects
<TAB-CTRL-N>  renames the selected object
<N-left> narrow pointed object
<N-TAB> rename a design
<N-CTRL> Narrow selected objects
<O-CTRL-TAB> Output the design (.dale file)
<O-SPACE> Output the design (.chip file) THIS COMMAND WILL BE REMOVED
<CTRL-P> Push into selected cell
<P-left> Push into pointed cell
<Q-left> Querry for coordinates
<R-left> Rotate pointed object
<CTRL-R> Rotate selected objects
<TAB-R> Reset scale such that the whole design is displayed in the viewer
<R-middle> Make a repetition of the selected objects
<S-left> Shorten pointed object
<S-CTRL> Shorten selected objects
<S-TAB> Display names
<S-middle> Stretch. Change all selected objects the amount where the mouse is moved; use direction and orientation relative to pointed object.
<CTRL-U> Undelete
<V>: invokes the viewer popup menu
<W-left> Widen pointed object
<W-CTRL> Widen selected objects
<CTRL-X> Transformation of selected objects (Transformation selected by popup menu)
<left-X> Transformation of pointed object (Transformation selected by popup menu)
<Y-left> Plot. Command known only if plotter package is loaded; either black and white or color depending which plot package is loaded.
<Z-CTRL-SHIFT> Display names of imported objects of an imported design
<Z-SHIFT> Display names of imported designs
<Z-CTRL> Display names of objects in directory (cells, ...)
<0-left> Defaulten pointed object
<0-CTRL> Defaulten selected objects
<=>:  move selected to the left
<\>:  move selected to the right
<LF>:  move selected up
<DEL>:  move selected down
<SHIFT-ESC>  interrupts the drawing process; it leaves the screen in unfinished state;
works for Black and white display only; WHY??? chipndale uses the same code for both display types!!! Temporary solution for colordisplay: use a button "CD-stop"; This button works only if there is no command ahead.
<CTRL-[>  show properties of selected object
<CTRL-SHIFT-[>  change property of selected object
"<": Scale to more detailed view
">":  Scale to more general view
<ARROW-CTRL> Pop out of pushed cell
<ARROW-SHIFT> Pop out of pushed cell
<ARROW-TAB> Pop out of pushed cell
<SPACE-middle> Move viewer
<SPACE-left> Show rectangle on this viewer (If area too small, show position without scale change)
<SPACE-right> Show rectangle on other viewer (If area too small, show position without scale change)
<SPACE-middle-while drawing wire> Flip direction of jog in temporary wire
<CTRL—while drawing wire> Draw segment
<"-CTRL> make conditional or change condition procedure
<"-CTRL-SHIFT> check all condional procedures and optionally reload them
<[-CTRL> Show properties of selected application
<[-CTRL-SHIFT> Enter property for selected application
</-SHIFT> Display number of selected object; if only one object is selected, display more information
</> display border of visible area shown in other viewers
<right> deselect all, select pointed object
<right-shift> select pointed object without changing selection of other objects
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
Things to know
For more documentation see [indigo]<chipndale>top>CDDoc.df
Distribution-lists on the grapevine. (Restricted to Xerox employees, part time employes and PARC summer students)
ChipndaleImplementors^.pa The pure creatures reading your complaints.
ChipndaleUsers^.pa The user society. You get release messages, status reports and thereon.
ChipndaleDiscussion^.pa Open forum for discussion.