Statistics on ColorDisplayModeOff Install DAUser _ CedarProcess.SetPriority[background] cdread Arbiter25 _ &design _ CDViewer.FindDesign["Arbiter25"] _ &cx _ Sisyph.Create[&design, NIL] -- Generate whole chip, assuming SC block has been cached on file _ &ct _ Sisyph.ES["Arbiter.sch", &cx] -- this extracts the top-level schematic -- _ CoreIO.ReportSaveCellType[&ct, "ArbSch.core"] -- Generate Layout _ &ob _ PWCore.Layout[&ct] -- creates the CD object and attaches it to the cellType _ PWCore.Store[&ct, TRUE] -- saves the decorated Core under Arbiter.core, the layout under ArbiterLayout.dale, and a view of the public pins under ArbiterShell.dale -- the decorated Core will be read back for future work -- the layout will be DRCed, plotted, and turned into a Mebes file -- the shell will be needed to check the pad position and make the probing and bonding maps JArbCountdown.cm Copyright Σ 1987 by Xerox Corporation. All rights reserved. Louis Monier November 2, 1987 10:39:23 am PST Last Edited by: McCreight November 10, 1987 5:17:21 pm PST Goal This command file captures all the operations necessary to "finish" a circuit before fabrication. It has been tried on BIC, and gathers a lot of relevant information from all over the DA system. Each designer is advised to make a copy and customize it. Disclaimer: Using this command file does not prevent you from reading all about all tools and make any relevant choice of different or extra steps. The file can be broken into separate files chained by RollBackAnd if you run out of resources on your machine (you will). You then have to duplicate some of the steps (read design, ...) Assumptions All libraries have been run through the DRC and Lichen (standard cells, pads, ram) and are frozen until the run goes out. The design is completed, has been simulated at transistor level, and some timing estimation made (Mint, Spice...) For power bus sizing, eyeball and be conservative. You have a df file pertaining to this chip; the df file must verify, so that you can switch between machines rapidly. You keep a daily log of your work on the chip (very useful when testing the wafers). The command file -- Start everything and read in the source design -- you always want to know how long it took -- saves a lot of cycles -- SpiceOps -- and anything else you might need such as FSA, DP, Alps, ..., or any of your private code -- read the CD design -- this creates a context for Sysiph -- Generate SC block, whenever it changes install SCDAUser _ &ctf _ Sisyph.ES["ArbInFrame.sch", &cx] _ CoreIO.ReportSaveCellType[&ctf, "ArbSchInFrame.core"] _ CoreOps.SetCellTypeName[&ctf, "ArbSchInFrame"] _ PWCore.SetLayout[&ctf, $SCRemote] TWVelantia -- or TWPalain or TWTregonsee _ &obf _ PWCore.Layout[&ctf] _ PWCore.Store[&ctf, TRUE] _ PW.Draw[&obf] -- Compare layout and schematics Install PWCoreLichen _ PWCoreLichen.Compare[&ctf] -- compares the cellType with the extracted layout -- Apply Static Install Static _ Static.CountLeafConnections[&ct, Static.CheckCount, CoreFlat.CreateCutSet[labels: LIST["Logic"]]] -- errors can be found found in the terminal -- Apply MintCheck Install Mint _ &circuit _ Mint.CreateCircuit[&ct] _ MintCmds.PrepareCircuit[&circuit, FALSE]; _ Mint.CheckLibrary[&circuit] -- errors can be found found in the terminal -- make a note of this number of transistors, and write home about it -- you also get an estimation of the total capacitance which you can use to derive an upper bound on the average power consumption. -- Simulate as completely as possible, at transistor level (assuming testproc) Source TestArbiter.cm -- If your design is too large and must be done in several VMs, the trick is to produce decorated Core files from schematic for large blocks, and have the corresponding icons read the Core file instead of extracting the schematic. The receipe for making the decorated Core files is described above. The icon should be created by SPACE-O/make cell icon/from code/PWCore.Retrieve["CHIP"]. -- If the construction fits in one VM, it is better to remove intermediate checkpoints for final constructions. _ PW.Draw[&ob] -- Check the connectivity Install ConnectivityChecker CheckConnectivity ArbiterLayout.dale -- signals all disconnected internals; returns a list of disconnected publics -- DRC ArbiterLayout.dale (we need a programming interface) -- Plots CDPlot Sleepy -k ArbiterLayout -- Plot ArbLayout.dale and eyeball it -- Use the shell to produce a bonding map; make sure that all bonding and wiring constraints are satisfied -- Generate the Mebes files source CDMEBESCMOSB01Oct87.load _ %CDMEBES.stripesPerClump _ 5; _ %CDMEBES.wDir _ "///mebes/" _ &layDesign _ PW.OpenDesign["ArbiterLayout"] _ CDProperties.PutDesignProp[&layDesign, $CDMEBESMaskSetName, "ARBNOV87A"] -- 9 chars, alphanum _ CDMEBESMainImpl.StartMEBESMask[NEW[CDSequencer.CommandRec _ [design: &layDesign]]] -- generates a bunch of files of the form ///mebes/ARBNOV87A/ARBNOV87A.dd -- Smodel under /indigo/dragon7.0/Arbiter12Oct87.df and archive immediately -- Visit your travel agent for good prices for Tahiti Κt˜™Icode™žœ™ΓJ™;JšΟn œ‰™“J™ΊJ˜Jš™J™ Jš™J™Jšœ(žœN™yJšœ,Οiœ2™qJšœ2™2J™uJ™TJ˜Jš™J™Jš™J™JšΠbc1™1šœ ˜ Jšœ+™+—šœ˜Jšœ™—Jšœ˜™ JšΟc[™[—Jšœ&˜&šœ˜Jšœ™—Jšœ,˜,šœžœ˜#Jšœ$™$J˜—š‘)™)Jšœ™Jšœžœ™)Jšœ7™7Jšœ0™0Jšœ#™#Jšœ ™ Jšœ™Jšœ™Jšœžœ™Jšœžœ ™š‘ ™ Jšœ™šœ™Jš’2™2——J™—J™š‘A˜Ašœžœ˜%Jšœ(˜(—Jš’2˜2—J˜š‘™Jšœ™šœTžœ ™cJš’,™,——J™š‘™Jšœ ™ Jšœ$™$Kšœ$žœ™+šœ™Jš’,™,Jš’E™EJš’ƒ™ƒ——J™š‘N™NJ™—J™š‘˜˜Jš’8˜8—šœžœ˜Jš’Š˜ŠJš’7˜7Jš’B˜BJš’[˜[——J™š’Κ™ΚJšžœ4™9—Jš’o™oJ™Jšœžœ ™J™š‘™J™šœ$™$Jš’M™M——J˜J™Jš’‘!™;J™š‘™šœ™Jš’%™%——J™Jš’j™jJ™š‘™Jšœ™Jšœžœ™Jšœžœ™Jšœžœ™-šœJ™JJš’™—šœ!žœ0™TJš’3œ ’œ ’™I——J™Jš‘K™KJ™Jš’5™5J˜—…—l*