<> <> <> ChipNDale 2.5 [NOT released] ========================================================================== ==Release message; not yet valid ========================================================================== ChipNDale 2.5 released Lets give it a try! Most other DA tools are ready and will follow soon. [BUT: next weeks run might still be done with cd24] In spite of the original intend to have 2.5 simply be a small release to upgrade to Cedar 7.0, the changed directory invariants make this a major release. But I believe, the bulk of changes are only internal. Clients did usually not depend on ChipNDale's invariants and therefore, need only small adaptations for changed interfaces [Unless the clients want to take explicite advantage of some change]. A little bit of morale: its ok to not depend on ChipNDale's invariants, but its not ok nor is it the same thing to violate those invariants. General changes New release strategy [Needs refinement] I'm no more willing to have to wait for several months until the last tool builder allows me to go ahead with the next release [like it was for cd2.4]. This release might be disabled for tool makers, whenever the next release is ready and the tool makers had 3 (calender) days to keep track. Should that not expedite a future release, the old version will be disabled for all users. Read only designs Read only for designs means: objects will not change their picture on mask; the directory does not change. It does not mean no other state changes like push, pop, or certain commands on top level are made. [Read only doesn't protect the complete data structures; only an abstract concept] Immutable objects Absoluteely required: Immutable composit objects must not have children which are mutable [because editing the children could not propagate up] Immutable objects must never be changed. This feature is orthogonal to the class. Immutable objects and read only designs are different concepts and not linked together at all. The interactive user interface for this feature is not ready. New directory invariants New: Objects do not need be included in directory. As allways: Mutable objects must not be included in more than 1 design. Directory is read back from file as written! NOT cleaned up! These new invariants simplify [correct] implementation of classes like CDRepetitions, CDDynamicObjects, Abuts and RouteChannelObjects. I still do believe clients should not define their own classes [but I don't prevent it either]. In case ChipNDale finds out about an invariant to be broken, ChipNDale might simply call an error instead of trying to fix it. Imports Due to the changed directory invariants, imports can not rely on caching; caching is now a hint only. To really find all imports all instances have to be enumerated. Baah. There is new real code behind the implementation of imports, but the user interface code is not yet completely polished for the new internals. Cached designs are re-used when they have no indirect unbound objects and the same file would be accessed. Indirect imports do not give the user control of the binding [Why should they?]. IO There are two modes of output: Truth / Cache; This allows object class and property implementors to write [cache mode] output procedures without the burden of having to support the files for ever [as in truth mode]. Warning: don't store cache mode files without also storing the truth. If cache mode files can not be read back, there will be no help from me. For truth mode files, the known service on IO problems will remain as ever [Unless non standard features have been used which interfere with the file format]. GFI war Theoretically saved 26 gfi's !! User interface A little more polish As always: This ChipNDale version 2.5 can read in files of all previous ChipNDale versions [0.0 and up], but I can't guarantee that for the next version. The documentation is already updated. Interactive user interface Drawing schematics New chapter in documentation on creation of icons. [Chapter 6. Usage Hints in ChipNDaleDoc.tioga] Font size can be changed In panel: use mouse together with CTRL to scale size. On selection: use , . Control panel has line for texts; used for the text editing commands. "R" is used as a modifier key, to read data into the control panel: read selected text into text field of control panel read font of selection into font field of control panel use layer of selection as current layer read width of selection into width field of current layer use layer and width of selection to set current layer and width Wires [only CD.commentLayer] don't disapear if scaled to small [different rounding] Step move dist "0" will do step moves with the current viewer grid. command has a "move selected to grid" option. double grid. "> half grid. Mode switch between layout mode and schematics mode [CMos-B only] => Schematcs mode => Layout mode Small general command cleanup Better error behaviour in case separately loaded commands fail. Additional loaded commands allow denial to execute [saves gfi's on browse trips] Satellites commands changed to be easier to understand, at cost of sometimes more usage of menu. About 4 menus and 10 commands withdrawn [I believe nobody used those]. Step moves do not feedback in Terminal viewer. Control panel has multiple layer lines; switch by hitting the "current layer" field. Directory commands Rename object (without using mouse): . New command: Search object by name. Push in by name, draw, replace, and search commands do also work with an adress instead of the name of the object; this implicitely allows to replace texts. List, or, prune directory commands can have patterns. Pattern field in panel. Related packages PD-plot and interpress-plot can plot just the selection Tip tables are no more reinstalled on user profile changes but only with the command tool command "CDReInstallTipTables". Font substitution compensates different rope bounding box sizes on flip texts. The debug command can be issued even while the design is locked. Colors New colormaps module offering all Cedar choices, and, swapping cursor representation mode. Colors for splines, polygons and text overlap correctly on 8 bit per pixel displays, at least for the layers not using stipples. Use the command tool commands to put the right colors into a checkpoint. User profile options ChipNDale.OpenEventViewers: FALSE false in case of an error ChipnDale interactively asks whether it should open an event viewer; true in case of an error always opens an event viewer. This property deals only with errors which would NOT wedge the machine ChipNDale.RunPrograms: List of Token _ NIL A possibility to run your favorite package which you always use; e.g. "Install CDStretchCommands" or useful for loading Nectarine... Working directory and searchpaths [clarification] CommandTool commands: use wDir and searchpaths from command tool and process ChipNDale commands: use working directory = working directory of design, searchpath = LIST[wDir of design, wDir of technology, wDir of ChipNDale, "///7.0/Commands/", "///7.0/System/"] wDir and searchpath must be specified explicitely by client when accessing files; they are not inherited from process [processes are light weight !]. (Clients: use CDEnvironment.FindFile or FileNames.FileWithSearchRules) Interface changes CD New procedures Describe, DesignName, DrawOb DrawProc: use ob, instProperties instead of inst Types do explicitely use notation CD.foo; to make it easier to make copies inDirectory -> composed ObjectClass has xDesign flag CDBottomUp better handling for objects crossing design boundaries support for multiple hierarchies [physical versus icon-schematic] CDCacheBase new interface CDCleanUp withdrawn, functionality moved into CDDirectoryOps CDCommandOps re - exports also CommandProc, Command CDDefaultProcs New mechanism to scan convert in device coordinates CDDesignCache New package to share the design caching code for imports and remote CDDirectory New invariants New enumerate design procedure ExpandByDraw more powerfull mechanism, with call back procedure DirectoryOp type changed: Class's DirectoryOp's procedures must not fail Object enumeration procedure has quit return value Use SymTab instead of HashTable ExpandProc and AnotherProc have slightly simpler type Improved comments Renamed EnumerateObjectsProc -> EachObjectProc Renaming Another -> Another1; AnotherComplete -> AnotherRecursed, Expand... Renamed Complete-> Recursed because parameter changed! Renamed foo->foo1 to put emphasis on going only 1 level deep AnotherRecursed, Expand.. has optional client caching parameters CDDirectoryOps more procedures, merged from CDCleanUp RenameNRemove discarded PruneDirectory has pattern New procedure IncludeDescribedObjects CDEnvironment New procedures RegisterCommander, FindFile, GetTechnology CDGenerateRemote Replaces CDRemote No caching; changed names to be able to merge impl with CDGenerateImportsImpl to CDGenerateSomeImpl. CDErrors Problem with read-only objects not yet solved right. Error message now may be outside interest rect area. CDLayers Additional data to store well and interest rect informations CDMarks Withdrawn [this was taff !!] CDImports Almost everything changed. CDIO Truth flag. Writes a 40% less dots to compensate for larger designs. CDOps proc ObjectRope gone ! use CD.Describe some procedures from CDSimpleOps New procedure MakeImmutable New procedure and convention: When a design is created and build, its mutability should be set using SetMutability. CDPanel Detailed with control for fields; since this means lots of new parameters, parameters are grouped in fields. All procedure identifier changed CDProperties Procedure to make sure property is NOT written to file (in any mode). Property registration can specify whether property is not output for cache files. CDRects Can handle wells; new class $WellRect New procedures to querry class CDRemote Replaced by CDGenerateRemote and CDDesignCache CDRoutingObjects New; loaded on demand only. [like previous class in PWObjects, but full implementaion] CDSimpleRules Additional rules parameter for multiple sets of design rules revisions per technology Implementors use new package CDSimpleRulesBackdoor MinSpace <= MinDist CDSimpleOps withdrawn; some procedures moved into CDOps CDSequencer registrationData field for command registration change OpenDialogue -> SetEditable FetchCommand has load optional CDTexts Font has field for pressfont. FlipTexts will be adjusted to the side of their origin, if fontsubstitution changes size of text. CDVArrow needs CDVArrow.install to run CDViewerBackdoor new from CDViewerBase and CDVFurtherPainters CDViewerBase --> CDViewerBackdoor CDVFurtherPainters --> CDViewerBackdoor ColorMaps Small definition and large implementation change. Thanks to Michael Plass for simplifying the Imager and Viewer [BackdoorPrivateExtras...] interfaces needed. Still slow. Moved to CedarChest. CStitching New procedure: TrustedDisposeTesselation; [Giordano figured out that for 30% of the time in some drc was used in allocating border tiles for small tesselations] GraphicsSubset No more used by ChipNDale. I will through this package away unless somebody tells me about a need for it PopUpMenus ReLabel allows changing labels of existing menus Properties Renamed from PropertLists; better module name to avoid confusion which property package is used. New little confusion by using the other packages name is intentionally. New procedure CopyList TerminalIO Use old, loved TOS again instead of silly long name CreateStream [in analogy to IO] TokenIO handle has truth field Further implementation changes GFI war: theoretically saved 26 gfi's !! CDSimpleOps, CDMarks, CDCleanUp, CDOldInterestRects: are withdrawn Ticks, CDVArrow: loaded on demand only CDLayersImpl and CDRectsImpl are replaced by CDRectsAndLayersImpl CDEmergencyHandling: functionality put int CDIOCommands CDVFurtherPainters, CDViewerBase, CDVCursorImpl, CDColorsImpl and CDVScaleImpl are replaced by CDViewerBackdoor CDVSpecialPainters merged into CDVCommands CDVMarksAndModes merged into CDVSomeCursors CDMenuSpecialsImpl: merged into CDPopUpMenusImpl CDMoveCopyCommands merged into CDBasicCommands HashTable: no more used CMos-B: CMosBObsImpl and CMosBObjectsImpl merged; CMosBWellDifImpl removed CDPanelImpl, CDSequencerImpl, CDImportCommands: carefully crafted to each use one slot less (proc's inline) [but I fear that the next small improvement might cause again to have one procedure too much] CDSymbolicObjectsCommands split up and merged into CDExtraCommands and CDCellCommands CDGenerate, CDGenerateBackdoor, CDGenerateRemote, CDGenerateImports and CDGenerateCommands loaded on demand only [3 gfi] Enumerating designs The previously existing 6 different ways of enumerating designs by ChipNDale have been reduced to 4. 4 remaining enumeration techniques: Flat: e.g. mask generation, pd plot Pruning with CDBottomUp: Good for analysis which keeps result over different commands but invalidates result on edits [e.g. Spinifex]. Pruning with RefTab: Good for any simple one shot analysis [now standard technique] Pruning with properties: Used as basis for CDBottomUp and in IO; more usefull for other purposes than for pruning enumerations for clients. 2 withdrawn enumeration techniques: Use directory + 1 level down: [previously the standard enumeration technique] CDMarks: [very fast, but too sensitive in case of broken directory invariants] Viewers Double painting when viewers are created is circumvented [oops]. In spite of what I thought before, this is not a bug in viewers, but a bad dependency in ChipNDale: Some field in the viewer-class is only initialized after [while?] repaint of the viewer, but ChipNDale needs that field to be able to set up the scaling for the first painting... Thats why painting has to be done twice; the second painting can interupt the first painting, but the viewer package did synchronize [not fork ? but then the solution couldn't work!] the paintings, so the flush in the second one had no chance. The solution is: ChipNDale directly flushes the first painting before it calls the viewer package for the second painting. Once we should have a viewer package with complete documentation which field is available at what time! Even if that viewer package might be correct, I don't know how to correctly use it. But it still doesnt work right. Selection is painted first; this requires to go twice through the whole list, but it gives the illusion of painting faster. CDDirectory Improved algorithm to fiddle names; In case of conflict through wrap around, use random number to prevent making longer names. CDDynamicObs Use of cache mode IO CDMakeProc Deals with nested un-named cells Use working directory of design CDSimpleRules An implementation of stitched vias [in CDExtrasA%.df] registers itself with CDSimpleRules CDTexts Font cache is forget-full; [servers will not fill VM with fonts] Fonts caching is faster: Reading Logic should be 8% faster just from this improvement alone. Cif generation Performance-bug fix: Will generate far less empty cells. Generates signal names from CDSatellites. (Works only for satellites of simple enough instances [not p-diffusion]). Setup command files have names starting with CDCifGen...; this is to distinguish them from the Read-Cif command files [until an identical format is defined] Generates CIF from the selected cell only. CMosB The object classes $C2PDifRect and $C2NDifRect are replaced by $WellRect Small victory: CMosB does not implement ANY object class anymore without using inheritance for all CD.Objectclass procedures. [CDAtomicObjects inherit all class procedures; the classes differ in creation procedures which are NOT CD.Objectclass procedures, but exported by CDAtomicObjects] New abstract well contact layers with well surround. DRC's CDIO: io tells when it encounters error messages. CDCifGen: Cif generation tells when it encounters error messages. CDMEBES: mask generation tells when it encounters error messages. Interest rects Well's and error messages do not contribute to the interest rect of cells InterpressPlot Optional plot of selection only. Better dialogue [still not nectarine]. PDPlot Uses new mechanism for scan conversion in device coordinate system. Optional plot of selection only. Better dialogue [still not Nectarine]. CDLabel Gets font and prescale from control panel. Plain simple bug corrections Pop and create new cell inherits border and simplification treshold. Viewer wedge if color device is in wrong bits per pixel mode fixed. Missing UNWIND catch phrase in viewer paint code added. Lost line in background saving code added. Compiler missing UNWIND catch phrase outwit by adding procedure. Pop up menu wedge removed by fixing InputFocusImpl. Writes spaces between dots on IO to speed up typescript. DF files and structure changes CDExtras%.df Split up into CDMore%.df andCDExtrasA%.df CDExtrasA%.df Robust extras used by clients [Bottom up extraction; stitched vias, RoutingObjects] CDExtrasB%.df Extras used by clients and interactively [ticks, arrows on viewers] CDMore%.df For command level utilities and not yet debugged extras CDCounting%.df Discarded; commands moved to CDMore%.df Have fun Christian