xic-3.2.12 9/9/2010 Changes and New Features ------------------------ * New native cell file to archive conversion mode. There is a new format conversion mode: all native cell files found in a given directory are translated and concatenated to an archive file. The cells may or may not constitute a design hierarchy. They are translated directly. Supported manipulations are cell name aliasing, layer filtering, and scaling. This mode is available from the Conversion panel from the Convert Menu. The Input Source radio buttons have been replaced by a drop-down menu, with a new Native Cell Directory entry. There is a new script function FromNative() which also exposes this feature. * Cell/hierarchy comparison function enhanced. The cell comparison feature from the Compare Layouts panel and the !compare command was enhanced. 1. Electrical-mode data comparisons are now available. Although recent releases had the interface available for comparing electrical cell data, the feature did not work. In electrical mode, only Per-Cell Object mode comparison is available. The physical/electrical mode choice buttons in the Per-Cell Geometry page of the Compare Layouts panel have been removed. Geometry comparison does not make much sense in electrical mode due to the use of zero-width wires, which can't be zoidified. 2. In Per-Cell Object comparison mode, property comparison is now available. The property lists of cells, instances, and objects may be compared. There is a filtering mechanism available to limit the properties that are compared, which can be used to minimize spurious differences. See "? xic:diff" and "? xic:prpfilt" for complete information about property comparison and filtering. 3. It is now possible to compare different cells in memory. There is a backwards-compatible syntax change in the !compare command argument list (new -f1 and -f2 options). In the Compare Layouts panel, the Source and Cells entries are now drop recievers so that (for example) file names can be dragged/dropped from the File Manager. * Clipboard and selection enhancements. Text in the status line, and the prompt line when not in editing mode, can now be selected. In the status line, clicking on a word will select the word. In both areas, dragging over text selects it. When selected, the text can be exported to other windows. In general, the selection mechanism provides a means of transferring text between windows, which may be owned by different applications (drag and drop is another means). A global audit/update was done to ensure that all Xic text windows participate consistently in the selection mechanism. Unix/Linux Enhancements. Under Unix/Linux, there are two similar data transfer registers: the "primary selection", and the "clipboard". both correspond to system-wide registers, which can accommodate one data item each. When text is selected in any window, that text is automatically copied into the primary selection. The primary selection can be inserted into a window that accepts text by clicking with button 2 (by default, this may differ between window managers). The clipboard is set/used generally only by the GTK text-entry widgets. This includes the single-line entry used in many places, and the multi-line text window used in the text editor, file browser, and some other places including the error and info windows. From these windows, there are key bindings that cut or copy selected text to the clipboard, or paste clipboard text into the window. The cut/paste functions are only available if the window is editable, copy is always available. The clipboard is only available from widgets of this class. See "? textentry" for more information and a list of key bindings. Selected text in the status line or prompt line in non-editing mode becomes the primary selection, and can therefor be copied to other windows. Note that the selection indication disappears or changes color when another window updates the primary selection. The color change indicates that the text still remains selected for purposes of that window, but is not exported. When the prompt line is in editing mode, pressing Ctrl-P will now insert the primary selection at the cursor in the text being edited. Pressing mouse button 2 will do the same thing. Also, pressing Ctrl-V will now insert the clipboard text at the cursor location. The clipboard text is obtained from another text window, using the cut or copy-to-clipboard function, and is different from the primary selection. Pressing mouse button 3 will also perform this function. In all single-line text-entry windows, Ctrl-P will now insert the primary selection at the cursor. This makes this function available to users with a 2-button mouse, which does not have the middle (button 2) mouse button that performs a similar function. The Text Editor has a new "Paste Primary" entry in the Edit menu, that inserts the primary selection into the text at the cursor. This has Alt-P as an accelerator (Ctrl-P is already in use). Microsoft Windows enhancements. Under Windows there is a single "Windows clipboard" that in use is somewhat like the Unix/Linux clipboard. The status line and non-editing prompt line text can be selected as under Unix/Linux. Selected text is copied to the Windows clipboard automatically. These are a special case; in other windows, selected text is not automatically copied to the clipboard. Under Windows, text can be copied to the clipboard by typing Ctrl-C when the window containing selected text has the keyboard focus. In windows that are editable, Ctrl-X will cut (erase) the selected text and copy it to the clipboard, and Ctrl-V will past clipboard text into the window at the insertion point. Clicking with button 3 will generally produce a pop-up menu which will contain cut, copy, and paste options when available (not the case in multi-line text windows). For the prompt line in editing mode, Ctrl-P and Ctrl-V, or mouse buttons 2 or 3, will insert the Windows clipboard text at the cursor. Note that there is no indication when text is copied to the clipboard, the selected text in all windows is unaffected, i.e., it won't change color or disappear. The user must remember which text was most recently copied. * Change to special GUI color setting. Xic has a number of special colors used for highlighting and other purposes in the non-drawing windows of the graphical interface. The internals of this have been reorganized. Previously, the user could set these colors using special variables and the !set command. This is no longer available, the colors are now set with the !setcolor command, and can now also be set from the technology file or through the X resource mechanism. The names and default values of these colors are: "GUIcolorSel", "#e1e1ff", "GUIcolorNo", "red", "GUIcolorYes", "green3", "GUIcolorHl1", "red", "GUIcolorHl2", "darkblue", "GUIcolorHl3", "darkviolet", "GUIcolorHl4", "sienna", "GUIcolorDvBg", "gray90", "GUIcolorDvFg", "black", "GUIcolorDvHl", "blue", "GUIcolorDvSl", "gray80", See "? techfile:attr#color" for more information. * Enhancements to the Text Editor and Script Debugger. The Text Editor and editing part of the Script Debugger have been enhanced: 1. The Script Debugger has new Edit and Options menus. These contain the same entries as the Edit and Options menus of the Text Editor. 2. Both panels now have multi-level Undo/Redo capability, from the respective Edit menus. 3. The File menus have been revised for commonality of labels and accelerators for similar functions. 4. In the Script Debugger while editing, dropping text with the Ctrl key held will insert the text into to window at the insertion point, the same as in the Text Editor. * Enhancement to Cell Placement Control panel. The entered "cell name" for a new cell to place can actually be two space-separated tokens (quoted if necessary if either token contains white space). The first token is is one of - A path to an archive file. - The name of a CHD listed in the Hierarchy Digests panel - A path to a saved CHD file. The second token is a cell name, which must be found through the first token if given, or be a native cell file found in the search path, or already be in memory. If a first token is given, the cell and its hierarchy will be extracted from the specified source and read into memory. If drag drop is initiated from the Contents window from the Hierarchy Digests panel, that cell is extracted and is available for placement. Previously, the CHD functionality was not available. * Empty cell checking enhancement. Empty cells can no longer be removed from Immutable cells. From the operations that remove empty cells, cells that are instantiated in immutable parents will not be deleted, however all instances of these cells will be deleted when possible. The !empties command has a new optional argument: !empties [force_delete_all]" With the literal "force_delete_all" given, all empty cells instantiated in the hierarchy under the current cell will be deleted when possible, no questions asked. The Empty Cells pop-up will not appear. * Enhancement to the !timedbg feature. The !timedbg execution time diagnostic has a new option to limit the levels of timing info printed. !timedbg [y|n [-level] [filename]] The optional level is an integer that sets the maximum sub-time level printed. If 0, only the "top level" timing results are printed. * Random-access mapping for gzipped layout files. Added a random-access mapping capability for Cell Hierarchy Digest (CHD) accesses to gzipped GDSII and CGX files. This will speed up CHD operations that must seek randomly in the input file. This is enabled by setting a (new) variable ChdRandomGzip [1-255] CHDs created while this variable is set will include the mapping structure. The mapping structure provides access points to data within the file, spaced by default about 1Mb of uncompressed data. The map requires about 32Kb per access point. When seeking in the file, one can jump to the closest earlier access point, and read to the desired offset. Without the mapping, one can only read forward from the current location to the desired location, or rewind to the beginning and read to the desired location. The integer is the number of Mb between access points. If 0, it is as if the variable is not set. Setting as a boolean, i.e., to no value, is equivalent to setting to 1. This feature is not available in the Linux2, LinuxRHEL3, and LinuxRHEL3_64 distributions, where the operating system does not provide a compatible zlib. * Notes on archive references from native cell files. The "root" cell produced by the !splwrite command when flattening illustrates a capability of native cell files that was undocumented. This capability has been enhanced to allow such cells to be saved in their original form. Documentation is now provided in "? symfilefmt" (Design Data File Formats) after the "CIF Format Extensions" heading. In native cell files, the "9 cellname;" line used to provide instance master names can be modified with a text editor to provide a full path to an archive file as the cellname. The archive file must contain a single top-level cell. When the cell file is read into the Xic main database, the archive file will also be read, and the instance reference will refer to the top-level cell from the archive. The cellname -> archive file path association is retained, and used to "put back" the file path when the cell is saved as a single native cell. This feature is fairly obscure, but may be useful. * Notes on using Hummingbird Exceed Exceed is a popular PC X-server often used to run X-windows programs on a remote Linux system from a PC. Over the years, various compatibility issues have been reported when running Xic and/or WRspice through Exceed. These include - Extremely slow window updates and mouse cursor motion. Reported when running RHEL5 linux releases, fixed by running Linux2 release. - Color differences from those shown in the layer table from those used in drawing windows. Reported when running from a RHEL5 system, with any release. Fixed by "!set NoLocalImage". - Blue screen of death when starting Xic through Exceed. Reported when running from a RHEL5 system, any release. Fixed by graphics card driver update (ATI). None of these has been traced to any defect or bug in Xic or WRspice. For best results, use the latest Exceed release, and be sure that your graphics card driver in Windows is up-to-date. In my own work, the free Cygwin/X server has worked flawlessly, and may be an alternative to using Exceed. Bugs Fixed ---------- * In direct translation from CIF to other formats, instance rotation angles were not being correctly converted. * When writing a new tech file, the heading "User-Defined Design Rule Tests" was printed without a comment character, causing a (harmless) warning when the tech file was read. * The "root" cell produced by the !splwrite command when flattening could not be read into Xic. * The Windows "stackdump" was broken. Instead of generating a stack trace after a program fault, the program was being restarted. * Selecting electrical mode in the Compare Layouts panel would lead to spurious errors and even program faults, this feature was never completed internally. * If the automatic update feature is enabled, and the update server at wrcad.com is down, there would be a long delay at Xic/WRspice startup waiting for a server response. This wait time has been shortened. * The Linux2 and FreeBDS7 distributions contained an incorrect default theme engine, which would cause a warning message at program startup. * Fixed some issues with drag/drop between certain sources and receivers. * In the GTK-2 releases, dismissing the Print pop-up in the Text Editor (and probably elsewhere) would crash the program. * In the Windows release, the Text Editor and Script Debugger would fail to edit files larger than 32Kb. The files could be loaded in their entirety, but could not be edited to increase file size. This is a hideous Microsoft default that I never noticed and nobody ever reported. The present limit has been extended to 40Mb. Why there is a limit at all is a good question. * Fixed misc. LinuxRHEL3/LinuxRHEK3_64 bugs. These releases use an early version of GTK-2 that has some issues. Work-arounds have been incorporated. - The Font Selection pop-up wasn't working correctly. - GTK warnings from some pop-ups. ------------------------------------------------------------------------------- xic-3.2.11 7/15/2010 Sorry, but your TECHNOLOGY FILE MAY NEED UPDATING for this release, see below. Changes and New Features ------------------------ * New context system for printing. The tech file format has had a major change, requiring modification to the technology file to avoid warning messages on program startup. Previously, many of the display attribute keywords had "Alt" forms, which would specify an alternate value active when in print mode, with any printer driver. Now, a more extensive list of keywords is available on a per-driver basis. The "Alt" keywords are no longer recognized, and there are no common print-mode settings. The new scheme is more flexible, as it is not likely that the same defaults would apply for HPGL and jpeg formats, for example. See "? techfile:obsolete" for information about how to update a legacy technology file. The following keywords are no longer recognized, and should be deleted from your technolofy file. Their appearance will do no harm, but will generate a warning message. color keywords AltBackground AltElecBackground AltPhysBackground AltCoarseGridColor AltElecCoarseGridColor AltPhysCoarseGridColor AltFineGridColor AltElecFineGridColor AltPhysFineGridColor ElecAltXXX and PhysAltXXX aliases of above attribute keywords AltAxes AltGridSpacing AltPhysGridSpacing PhysAltGridSpacing AltElecGridSpacing ElecAltGridSpacing AltShowGrid AltElecShowGrid ElecAltShowGrid AltPhysShowGrid PhysAltShowGrid AltGridOnBottom AltElecGridOnBottom ElecAltGridOnBottom AltPhysGridOnBottom PhysAltGridOnBottom AltGridStyle AltElecGridStyle ElecAltGridStyle AltPhysGridStyle PhysAltGridStyle ElecAltXXX and PhysAltXXX aliases of above layer keywords AltRGB AltFilled AltInvisible print driver keywords NoAlt The per-driver keywords are the same as the normal keywords, (i.e., no "Alt") but when they appear within a driver block, they apply only when that driver is active. When you change a display attribute while in print mode, the new attribute is recorded for the driver currently selected. The keywords that can be specified in a driver block are the following: color keywords Background PhysBackground ElecBackground GhostColor ElecGhostColor PhysGhostColor HighlightingColor ElecHighlightingColor PhysHighlightingColor SelectColor1 ElecSelectColor1 PhysSelectColor1 SelectColor2 ElecSelectColor2 PhysSelectColor2 MarkerColor ElecMarkerColor PhysMarkerColor InstanceBBColor ElecInstanceBBColor PhysInstanceBBColor InstanceNameColor ElecInstanceNameColor PhysInstanceNameColor InstanceSizeColor CoarseGridColor ElecCoarseGridColor PhysCoarseGridColor FineGridColor ElecFineGridColor PhysFineGridColor attribute keywords Axes ShowGrid PhysShowGrid ElecShowGrid GridOnBottom PhysGridOnBottom ElecGridOnBottom GridStyle PhysGridStyle ElecGridStyle Expand PhysExpand ElecExpand DisplayAllText PhysDisplayAllText ElecDisplayAllText ShowPhysProps LabelAllInstances PhysLabelAllInstances ElecLabelAllInstances ShowContext PhysShowContext ElecShowContext ShowTinyBB PhysShowTinyBB ElecShowTinyBB per-layer keywords PhysLayer ElecLayer RGB Filled Invisible The driver block keyword list can contain per-layer blocks as part of the keyword list. These blocks start with PhysLayer for physical layers or ElecLayer for electrical layers. Each block can contain RBG, Filled, and Invisible. The layer block is logically active until the next PhysLayer or ElecLayer, or the end of the driver block. The HPGLfilled and XfigFilled keywords are now recognized only in the HPGL and Xfig driver blocks, respectively. * More technology file keyword changes. 1. There is a new DRC attribute keyword: DrcLevel 0-2 This sets the error recording level for design rule checking. If 0 (the default) only one error is recorded per object. If 1, one error of each type is recorded per object. If 2, all errors found are recorded. 2. The LayerName keyword is deprecated in favor of the new keyword PhysLayer. The LayerName keyword is still recognized as a synonym. 3. The AltDriver and similar keywords are still recognized but deprecated. The new equivalent keywords are DefaultDriver, PhysDefaultDriver, ElecDefaultDriver. (Hmmm, this keyword wasn't documented, it is now.) 4. Xic will no longer attempt to guess a GTK-2 font from a GTK-1 (X-Windows) font name given in a Font1 - Font6 keyword in an old tech file, and vice-versa. The default will be used instead, since the guess can give ugly, wrong sized fonts. Xic will never write the Font1 - Font6 keywords to a new tech file, but rather the appropriate specialization, e.g., Font1X for GTK-1, Font1P for GTK-2 (Pango), or Font1W (Windows). * New techfile update logic. Previously, when a technology file was generated with the Save Tech button in the Attributes Menu, virtually all of the internal keyword values would be saved in the new technology file. This tends to bloat the file, as many settings are likely defaults. Now, by default, only settings that are not program defaults will be written to the technology file, leading to a more compact file. This behavior can be altered with the new variable TechPrintDefaults (tri-state) If set as a boolean, i.e., to an empty value, the keywords lines which correspond to default values will be added to the technology file as comments. If set to any value, the keyword lines which correspond to default values will be added to the technology file as normal lines, as in the older releases. * New pop-up for Save Tech button in Attributes menu. When Save Tech is pressed, a new pop-up appears. The pop-up contains a radio button group for controlling the printing of default values (skip, print as comments, include). This is tied to the TechPrintDefaults variable. An entry area allows the user to set the name of the file to create. A Write File button will actually create the new technology file. * New cross-grid option. The "Dots" grid option draws a single pixel at each grid location. Unfortunately, on high-resolution screens, the dots can be difficult to see. A new option will also draw N pixels on the vertical and horizontal above/below and right/left of the dot, forming a cross. The N value can range from 0 (single pixel only) to 6. A value of 1 is probably not recognizable as a cross, but rather appears as a brighter dot. The Grid Parameters pop-up has a new entry area for the N value, visible when the "Dots" selection is in effect. The GridStyle technology file keyword can contain a second integer value when the first integer value (the style code) is 0. The second integer can be 0-6; [Phys|Elec]GridStyle style_integer [cross_size_integer] The cross_size_integer is ignored unless the style_integer is 0. The style_integer, if not 0 or -1 (solid line) is now written in hexadecimal form when a technology file is written. Similarly, the GridRegN technology file keyword syntax has extended to support this new feature. There are new script functions to support this option: HCsetGridCrossSize SetGridCrossSize GetGridCrossSize * Updates to the coordinate readout window (Unix/Linux). 1. The window now uses a backing pixmap to avoid flashing. 2. Event filtering is used to avoid slowing down the mouse cursor position updates. This should improve appearance and performance with GTK-2, which due to slow rendering of anti-aliased fonts could cause problems not seen in the GTK-1 releases. * Internal change to facilitate huge instance lists. The memory structure that represents a Cell Hierarchy Digest (CHD) has been changed to accommodate extremely long instance lists. Lists are now segmentented, previously a single list could require a huge contiguous allocation that could cause out-of-memory errors. The compression is also done in segments, which avoids transient use of a large memory pool. The new code allows a test file containing a single cell containing 500M instances to be successfully processed, with 2.5G memory use. Previously, this would fail on a machine with 16Gb memory. * FileTool log file name change. In the FileTool mode (using xic -F) the name of the log file now defaults to "filetool.log". Previously, this was named "assemble.log". The name of this file can now be set with a keyword or option: keyword: LogFile option: -log Bugs Fixed ---------- * Saving a Cell Hierarchy Digest to a file representation did not work due to a format error. * Fixed a seg fault problem when using the "-c" option in "filetool" (xic -F) mode. * The "k=" label for mutual inductors in electrical mode was not being deleted when the mutual inductor was deleted. * The precision was not being added to Measure lines in Device blocks when a technology file is written. This will now be added if a non-default precision (default is 2) was specified. * Still some funny behavior in the help viewer, sometimes it comes up with a blank window. This has been fixed, again. * Fixed a potential array overrun in the grid rendering code. This could cause memory corruption. * Fixed an issue in printing: the grid spacing threshold for display was incorrect (or unexpected) if the driver resolution was large compared with the screen resolution. The grid would not be shown on-screen, but would appear in the plot, possibly with very small line spacing to the point where it would obscure features. Now, resolution correction is applied, so that the presence/absence of the grid will better track the on-screen display. * Eliminated the "pathtype 4 converted to pathtype 0" message from the GDSII read log, since this can horribly bloat the log file. * In the Misc Extraction Settings panel, the terminal text size and terminal mark size entries were not being initialized correctly (Unix/Linux). * In SPICE output, mutual inductor definitions are now printed only if both coupled inductors are included in the output. * In the Node Mapping Editor, it is no longer possible to assign a name that duplicates an existing name. * Operations from the Node Mapping Editor were not incrementing the modification count of the current cell. ------------------------------------------------------------------------------- xic-3.2.10 6/4/2010 Changes and New Features ------------------------ * Shared folder support under Windows. Xic can now read and write files from shared folders, and should generally handle shared files and folders transparently. Previous releases could not read these files, and they would not be listed in the File Manager panel. The full path to a shared file is prefixed by the form //machine/sharename/... (with forward or backward slashes). Xic now understands that 1. The initial '//' indicates a shared folder. In particular, it should not be "fixed" by replacing with a single slash, as was the case before. 2. The initial '//machine/sharename' is an indivisible token, like "C:". I.e., there is no "/sharename" directory, though it looks like a path component. This required many small changes throughout the program, where things were assumed about path syntax based on UNIX paths. Please report any functions that do not work correctly with shared folder paths, in case I missed something. When starting in a shared folder, Xic will create the temporary directory it needs, if it hasn't been otherwise specified, in C:/tmp. Previously, it would try to create a tmp directory in the share, which may not be allowed. * Shared memory support in X-Windows (Unix/Linux). The MIT-SHM shared memory extension is now supported in Unix/Linux releases. If the X server supports this extension, and the server is running on the local machine, the extension will be used. This allows image data to be transferred to the X server via shared memory, which is faster than the normal X socket interface. Screen updates may be faster. Giving the option --no-xshm on the command line will prevent use of this extension. * New in-memory image code. When Xic draws a complex layout, it draws the image in local memory, then transfers the image to the screem as a block. Previously, the image had no concept of layer ordering, so that to compose the image, the cell hierarchy would be traversed once for each layer, in bottom-to-top order, so that the image would display layers in the proper visual order. A new "smart" image now prioritizes the layers, requiring only a single traversal of the cell hierarchy. For complex hierarchies, this can be dramatically faster than the old method. * New Image transfer code. The code that transfers the in-memory image to a format required by the display system has been revised. In particular, a method was found that avoids an intermediate copy to a new bitmap, pixel-by-pixel, thus saving time. This applies to Windows as well as Unix/Linux. Under Unix/Linux, there is now an "undocumented" switch, that allows different code blocks to be selected, in case of trouble or for comparison purposes. There are three choices of image transfer code when not using MIT_SHM. These can be set with the environment variable XT_IMAGE_CODE. Possible values are 0 (default) The fastest, avoids allocating a second bitmap and copying, a step formerly taken but appears to be unnecessary. 1 Use the old method, which uses direct X-window system calls and avoids use of GTK for transfer. 2 Use the GTK functions to transfer the image. Probably the slowest method but perhaps the most reliable if the other methods have problems. * New "Objects Shown" menu item. In the main menu, there is a new Attributes/Main Window/Objects Shown entry, which also appears in the sub-window Attributes menu. This brings up a sub-menu containing checkable Boxes, Polys, and Wires entries. Unless checked, the item type will not be shown in the display of the corresponding window. This may be useful on occasion, to show only polygons, for example. Note labels and instance rendering can be suppressed using other buttons in the menu. * Misc. Changes. The context, i.e., the surrounding geometry of the current cell when in a Push (from the Cells Menu) is now darkened in electrical mode as well as physical mode. Attribute colors (bounding boxes, etc.) are now darkened as well. A new unified reference table provides some speed improvement in CHD file processing operation. The About pop-up was updated. The text shown is now compiled into the program and not obtained from a file in the startup directory. Bugs Fixed ---------- * The Print frame rectangle would disappear when showing a layout via the Display button in the Hierarchy Digests panel. * Using empty cell filtering without windowing from the Conversion panel would cause a program crash. * Bug in a general transformation function broke 45-angle support is a few places. This affected flattening of 45-rotated cells from the Conversion panel, and the highlighting display when moving 45-rotated cells (but not the operation itself), and probably other features. * There was a problem with the electrical mode "dots" logic that would cause dots to become "lost" but persistently visible. * After a layout is printed from the Print panel, highlighting in the main window would disappear. This was in part due to an erroneous full redraw that was triggered during hard-copy generation. This no longer occurs. * The location box feature from sub-windows now refreshes from backing store rather than redrawing changes (much faster). ------------------------------------------------------------------------------- xic-3.2.9 5/20/2010 This is an unscheduled bug-fix release. Apologies for the inconvenience to all concerned, and thanks for the reports. Bugs Fixed ---------- * Saving native cells with the Save command in the File Menu and similar pop-ups would fail, accessing a bad pointer that mangled the native cell file path. This could also cause program crashes. Work around: use Save As. * Unix/Linux XicII and Xiv had a bad link and wouldn't run. Changes and New Features ------------------------ * This release contains a new in-memory image composition system, which is used for rendering drawing windows with complex drawings. If greatly sppeds redraws of complex cells. There will be more about this in the next release note. Giving "!set oldimage" will revert to the old imaging system (probably in this release only). You can use !timedbg for timing comparison purposes. ------------------------------------------------------------------------------- xic-3.2.8 5/14/2010 Changes and New Features ------------------------ * Speed enhancememts. 1. Rewrote the setup code for windowed and gridded file translation to enhance speed. There is a dramatic improvement for large, deep files. 2. The comparison function for instance lists (Compare Layouts panel) has been revised and is now much faster for cells containing a large number of instances. 3. The global hash function for long integers has been replaced by a faster function, providing speed improvements in many operations, particularly in 64-bit releases. * Change to Libraries List panel. This window has been simplified. Previously, only "open" libraries were listed, and libraries to open were selected from a list in a separate pop-up. Now, the panel displays all libraries found in the search path, with an icon that indicates whether a library is open or not. There is no longer a separate pop-up for listing libraries found in the search path. * Enhancements to Windows listing pop-ups. Under Windows, the pop-ups from the Hierarchy Digests, Geometry Digests, and Libraries List buttons in the File Menu now use a different listing oomponent that provides adjustable width column headers. This looks better, and better duplicates the appearance of the Unix/Linux widgets. In the Hierarchy Digests listing, an icon is included to indicate the entry currently in use by the Display button. * Revision of finalization logic when saving cells. The undo list is now always retained after a save, previously this was cleared unless saving to a native cell with a different name. The saved undo list items now appropriately increment the modification count if applied. The modification count is always cleared when a cell is saved. The string given as the "file name" has new syntax extensions for more flexibility. See "? xic:save" for details. * Change to "panic" work backup. If the program faults, unsaved work is now saved in a subdirectory, rather than the current directory. The subdirectory is named "panic.pid" where pid is the Xic process id number. If all goes well, this directory will be created, and will contain dumps of the hierarchies or cells that have been modified and not saved. The dumped files no longer contain "panic" in the name. * Change to electrical-mode grid setting. In electrical mode, it is important that connection points not be subject to numerical round-off or other errors, as a connection is detected only if coordinates are identical. To ensure this, in previous releases the snap value in electrical mode was limited to one "micron" multiples in the grid-setting commands. However, it remained possible to set arbitrary grid parameters from the technology file. Worse, the supplied Hypres example technology file set the default electrical snap value to a half micron. The following changes have been made to address this issue: 1. The example Hypres tech file now specifies a 1-micron electrical snap grid. 2. The technology file reader and writer no longer recognize non-micron electrical snap grids. Values read or written will revert to internal default values if an attempt is made to read/write a non-micron electrical snap grid. 3. It is now possible to set the electrical grid in Xic (with the grid command) to less than one micron, in multiples of a tenth micron, in order to "repair" existing files. However, a warning pop-up appears when this is done. Note that snap grid values that are multiples of a tenth micron are safe numerically. However, with a finer grid, one has to be more careful to ensure that contact points actually fall on the same location. * Notes on the HTML viewer ("mozy", used in the Unix/Linux help system) This program displays HTML-3.2 with a few 4.0 extensions. A few years ago, this was sufficient for viewing most web sites, but this is no longer true. Most sites now rely on css styles, javascript, and other features not available in mozy. Some sites are still readable, to varying degrees. Maybe someday a better viewer can be made available, but the present viewer does fine as a help brower so this is not high-priority. In Windows releases, the viewer actually uses exported technology from Internet Explorer, so is able to view modern web pages. * TLINE techfile extraction keyword change. In the technology file TLINE keyword, the dielectric thickness and dielectric constant values are now optional. If not provided or given as 0, they will be obtained from the VIA layer that references the two conductors associated with the TLINE, if such a layer exists. * IsFileInMem script function change. The IsFileInMem function now looks at all native cells, not just top level cells. * New "filetool" variable. When using the "filetool" polymorphism or the -F command line option, one can use the option -set timedbg[=filename] to turn on the "timedbg" execution timing system (similar to !timedbg). Bugs Fixed ---------- * (Unix/Linux) The HTML text display window, used to display the listing of variables from "!set" without arguments and elsewhere, whould generate GTK error messages and possibly fault when dismissed. * Fixed subtle problem rendering filled boxes in electrical mode. * (Unix/Linux) Use of batch mode produced a lot of (apparently harmless) GTK error messages. * Saving per-cell info in a Cell Hierarchy Digest would potentially cause a fault when the CHD is destroyed. * Fixed a problem in the HTML (help) viewer which would potentially prevent images from a remote web site from being loaded if the viewer was opened on a local file that references remote images. * Using the green octagon button in the file selector to load a file in electrical mode, with plot mode active, and if loading caused the merge control pop-up to appear, the program would hang when the merge control pop up was dismissed. * Switched to use of 64-bit integers in places to avoid integer overflow when using Cell Hierarchy Digests to perform operations on very large files. Avoids the "Out of tickets" error. * Fixed a strange bug in the coordinates readout area. This seems to occur only in a FreeBSD build using GTK-2, not in the production releases. The text was not getting refreshed correctly due to an area computation error, which apparently did not matter in other cases. NOTE: GTK-2.18 caused more trouble than just the above. This is the most recent "stable" GTK-2. This is NOT used in, e.g., Red Hat Linux 5, but may well be used in Fedora and elsewhere. This GTK uses a new per-widget clipping context that causes screen updates to fail on the initial display and after a window resize. A work-around has been applied in releases that use GTK-2. * Electrical mode grid snapping could be set to arbitrary values in the tech file, bypassing the controls that attempt to keep all connection points on a one "micron" grid. * Rewrote electrical schematic "dot" code to avoid a fault problem: 1. Display a cell hierarchy in electrical mode showing dots. 2. Using the Place panel, re-read one of the shown cell files from disk, select Override Elec in pop-up. 3. This clears the cell(s), including dots, but left behind bad pointers in the dots database that would cause trouble. Clearing the dots would probably crash the program. The new dots code is not prone to this problem. * Fixed bug, the "ElecSnapping" keyword printed as "PhysGridSpacing" when generating a new tech file. * Trying to do a file traslation using windowing, with a window that has no area, could cause a fault. Other misc small bugs in windowed translation fixed. * The "skip empty cells" option in file translation was not considering "BOX" records in GDSII input files. These records are rarely used for physical data. ------------------------------------------------------------------------------- xic-3.2.7 4/14/2010 This is an unscheduled re-release due to an interface problem. Bugs Fixed ---------- * A change in the previous release made selecting devices and subcells from the Properties Editor by clicking impossible (one would have to drag across the object boundary). ------------------------------------------------------------------------------- xic-3.2.6 4/12/2010 Changes and New Features ------------------------ * Enhancement to terminal placement editor (subct side-menu command). It is now possible to insert new terminals into the numbering sequence anywhere. Previously, new terminals would be assigned the largest number in sequence, i.e., a new terminal would always be "last". Suppose that the cell contains five terminals, and you need to add a sixth, and further you want the new terminal to be the fourth terminal in the sequence. While the subct command is active, type "3" and note that "3" appears in the keypress buffer area. Now click on a circuit location to create a new terminal. The new terminal is given number 3, the previous 3 is now 4, etc. Use the backspace key to clear the keypress buffer, or the next terminal added will also be inserted as number 3. * Wire conditioning added. A function was added that will process wires read into the main database from a file, or created with the wires command. This will 1) remove duplicate and colinear vertices. 2) if the path doubles back on itself, the wire will be split into two segments that don't double back. Thus all wires in the database will be compatible with OpenAccess. * New unified layer database. It is no longer possible to have physical and electrical layers with the same name or long name. A new unified internal layer database now manages all layers. This is required for future OpenAccess support. * Image driver update. Added resolution choices in the Image print driver. This really doesn't change image resolution, but changes the size of the image bitmap in pixels. Previously, the image "resolution" was fixed at 100 pixels per inch, so that selecting a 4x4 inch image size would create a 400x400 pixel image. Note that selecting resolution "200" and size 4x4 would produce the same bitmap size as 100 and 8x8. * New !dumpcds command. This command dumps Cadence Virtuoso-compatible technology and display resource (DRF) files based on the present Xic technology database. The command syntax is !dumpcds [basename] The files produced will be basename.txt and basename.drf. If no basename is given, it defaults to "xic_tech_cds". * New script functions. See the help database or manual for complete descriptions of these new functions. (int) ReadZfile(filename) This will read an ASCII trapezoid list file into the current cell. This allows the trapezoids to be written on layers specified in the file. The following group of four functions is an interface to the "info" that is saved in a Cell Hierarchy Digest. The level of info saved is set from the last argument to CreateCellHierDigest. (int) ChdInfoMode(chd_name) Return the info level, as set in CreateCellHierDigest. (stringlist_handle) ChdInfoLayers(che_name, cellname) Return a list of layers used in the file or in a cell. (stringlist_handle) ChdInfoCells(che_name) Return a list of the cells contained in the source file. (int) ChdInfoCounts(chd_name, cellname, layername, array) Return per-layer, per-cell, or total obejct count statistics in the array. * Misc. Changes. - Non-orthogonal rotations are computed slightly differently, should be a bit faster and more accurate, but be aware that it is impossible to maintain full resolution in these transformations due to integer truncation. - This release includes a protocol for obtaining the "subc_catchar" from WRspice 3.2.4 and later. This is needed in order to successfully plot node voltages in subcircuits in electrical mode. This character was changed from an internally-defined ':' to selectable but defaulting to '_' in WRspice 3.2.4. Bugs Fixed ---------- * CBOCK handling was broken in the OASIS reader, meaning that some OASIS files could not be read. * Fixed %%BoundingBox generation in the Postscript image writer, which is part of the "Image: jpeg..." print driver. The bounding box was wrong. * Fixed a color mapping problem in the Postscript color bitmap print driver(s). * Fixed a logic problem in the computational geometry functions that would occasionally produce errors. * Fixed problem with background color of coordinate box, was not being initialized correctly is some cases. * Fixed a GTK2 warning message that began appearing after a GTK2 update, applies to GTK-2.10 and later, from the Conversion, Compare, and Layer Expression panels when they are dismissed. * Fixed strange bug in wire vertex editor, wires could be munged. Fixed other small bugs as well, zero-width wires are easier to select now. * When the Plot command (or Iplot prompting) is active in electrical mode, and a new file is selected for editing from drag/drop or the green button in the file manager, the command now exits and the new cell is loaded. Previously, the new file path was added to the prompt line text * Fixed bug in help viewer caused by an earlier change to reduce flashing, following a named anchor to another location in the same page would not redraw the screen automatically. ------------------------------------------------------------------------------- xic-3.2.5 2/13/2010 Changes and New Features ------------------------ * Cosmetic change The prompt line, keys box, coordinates readout, and status line now all share the same background color, which can be changed from the Color Selection panel from the Attributes Menu (Prompt/Background). The internal default for this color is now "white smoke" instead of "Antique White". Note that if the PromptBackground color is set in the technology file, this color will be used instead of the new default. * New variable for locating system rgb.txt file There is a new variable RgbTxtPath which can contain the full path to this file, e.g., something like "/usr/share/X11/rgb.txt". This can be set if none of the hard-coded internal paths succeeds in finding this file, which populates the list of colors produced by the Colors button in the Color Selection panel. * New script function (int) IsLayerDefined(layer_name) Returns 1 of the layer exists in the layer table, 0 otherwise. * Internal code update of parts of the printing interface and drivers. This should be invisible, except that the driver which produces jpeg and other image files has been renamed to "image". It used to be named "imlib", after the name of the third party software that was once used for this purpose, but was replaced years ago by another package developed by Whiteley Research and called "imsave". The old "imlib" name is still valid, it is an alias for the "image" driver, so there should be no problems with existing tech files. Bugs Fixed ---------- * The pictorial Device menu wasn't working under Windows, the images were not displaying. * (Windows 7 only) Selecting the current layer in the layer table was strange under Windows 7, the new selection wouldn't show until the mouse pointer entered the main drawing window. * (LinuxRHEL5, LinuxRHEL5_64 only) The "Colors" button in the Color Selection panel was not working in Red Hat Enterprise Linux 5 and probably similar systems. Xic could not locate the system "rgb.txt" file which lives in the X11 support directory. Xic now checks the correct location, and if still not found, an informative message is shown. * The Point() script function description in the help database and manual was wrong. This function only handles button 1 events. * Fixed a problem in the Undo function in electrical mode, the internal connectivity structures could be fouled up after an undo, yet the flag that indicated validity remained set. * Fixed a similar problem with the Undo operation and the extraction validity flags. * When a subcell is flattened in electrical mode, the parameter label, if any, is now deleted, the same as the name label. * The Show Groups/Show Nodes buttons in the Extract menu are now automatically unchecked when the internal information required for display is cleared. Previously, the buttons remained checked, but no information was displayed. * When in the plot command in electrical mode and a device from the menu is selected, the introductory message was being shown in a message box rather than the prompt line. This may have occurred with other commands as well. * Fixed some issues with the Unix/Linux help viewer window: 1) Timing changes to avoid flashing and jittery-ness, which became worse under Xorg 7.4. 2) No longer jumps to the top of the page on window resize. 3) Images were being clipped incorrectly in some unusual cases. * Updated the example "yank" script to 1) fail with an informative message in electrical mode, 2) fail gracefully if the new cell could not be created. * Fixed various bugs in the gzip reader. This would cause reading of gzipped GDSII and CGX files to fail in some cases. * The "helper function" execution in the image print driver was not working. This should be working now, and as the helper functions are already available on most Linux systems, formats like GIF and PDF, and a lot more (all formats supported by the "convert" program that is part of ImageMagick) are readily available on Linux systems. * The PowerPC runtime in the OS-X would fail when the Color Selection pop-up was popping up. The program would exit, with an error message indicating that the machine and compilation byte ordering didn't match. There may have been other features which caused this behavior. This was due to an incompatibility or shortcoming in the GTK-1.2 library compiled in universal mode. The configuration can not individually handle endian differences in the two binary formats (Intel and ppc), the configuration was correct only for Intel. The library was customized to avoid this problem, so OS X releases should now run without this problem on both ppc and Intel. ------------------------------------------------------------------------------- xic-3.2.4 1/30/2010 Changes and New Features ------------------------ * Changes to spatial partitioning when evaluating layer expressions. When evaluating most layer expressions, a grid is usually used to clip the area into computationally efficient regions. The size of this grid is given by the PartitionSize variable. 1) The accepted values for the PartitionSize variable are now 1.0 - 10000.0 or 0. Previously, the range 0-1000.0 was accepted. Thus, there is now a lower limit, and an increased upper limit. A value of 0 indicates no partitioning. If not set, the default partition size is 100.0 microns. 2) In the Evaluate Layer Expression panel from the Edit Menu, the "Partition size" entry has a new "None" button. When None is pressed, no partitioning will be used, and the numeric entry is grayed. The button and text entry area effectively control the value of the PartitionSize variable. * Misc. performance enhancements. 1) Rewrote the polygon-to-trapezoids splitting code. The new code profiles much better. 2) Simplified the via connectivity test, which was very slow for cases like circular vias. Instead of testing over a complex shape, an enclosed rectangular region is tested. Bugs Fixed ---------- * Many small and not-so-small bugs were fixed in the path extraction system, as provided in the Path Selection Control panel from the Extract Menu. This included modification to the basic grouping/extraction functions to ensure that all appropriate metal is added to the paths. - Changing the depth while Quick Path is active no longer crashes the program. - Using an inverted ground plane with extraction no longer generates a pop-up error about modifying an internal layer. * Iteration limits were added to LVS comparision, as it was possible to enter a cyclic state that would continue forever. * (Windows Only) Startup files weren't found automatically if installed on a Windows 7 64-bit system. ------------------------------------------------------------------------------- xic-3.2.3 1/16/2010 Happy New Year! Changes and New Features ------------------------ * Major feature enhancement, NoPhys property. The existing NoPhys property can be applied to electrical devices and subcircuits, causing them to be ignored in the extraction system, notably in LVS. Devices that have no physical representation, such as voltage sources, have this property set by default. By "ignoring" these devices, the device terminals are considered as open circuits. However, there are times when it would be useful to consider these devices as shorted. For example, suppose that one wishes to include parasitic series inductance in a resistor during simulation. However, this inductance would cause LVS to fail, since the series inductor added to the schematic has no explicit physical counterpart. It is now possible to set a flag in the NoPhys property to indicate that when the electrical netlist is generated for use by the extraction system, the flagged NoPhys devices will force all terminals to connect to the same net, i.e., the terminals are effectively shorted together. Thus, the inductor in the example above, if given this property, would disappear properly during LVS. However, when generating a SPICE netlist for simulation, these devices will be included in the netlist. To support this feature, a number of changes were required: 1) The cached internal electrical netlist can be in one of two states, respecting shorted NoPhys or not. If there are no shorted NoPhys devices, both representations are the same. Functions that require one representation or another will invisibly rebuild this when needed. 2) All operations in the extraction system, including the Extract Menu functions and extraction script functions, will respect the shorted NoPhys property. This includes the SPICE format listings from electrical data in the Extract Menu. The run, deck, and other similar functions in the side menu that relate to SPICE simulation will never respect the NoPhys property, these devices will be treated as other devices. 3) In electrical mode, NoPhys devices are now shown in a different color on-screen (yellow by default, the "Terminal Color"). 4) The Property Editor will now query the user whether to set the shorted option when a NoPhys property is added. 5) There is a new button in the Node Name Mapping editor from the side menu. This button selects whether or not to respect shorted NoPhys devices in the node listings. Shorted devices can obviously change the node numbering. 6) This feature required a new internal cell flag, so there is one less "user" flag now available (through obscure script functions and commands that nobody uses). 7) The string stored in the NoPhys property can either be "nophys" or "shorted". Xic sets these values, in actuality it can be any non-empty string not starting with s or S, or any string starting with s or S, for the two cases. 8) There is a new IncludeNoPhys script function which can be used with the existing electrical netlist access functions to provide the NoPhys recognition state desired. * Node Name Mapping Editor changes As mentioned above, there is a new "Use NoPhys" button. If active, the nodes are numbered as when shorted NoPhys devices are being used (SPICE simulation mode). Otherwise, the node numbering represents the case where these devices are shorted (LVS mode). With the editor visible, using a command that changes the state of the electrical netlist will change the state of this button, and the display. If the nodes on both sides of a shorted NoPhys device are given an assigned name, one of the two names is arbitrarily chosen to name the combined net when the device is shorted. There is also a new "Deselect" button, that will deselect all window selections, and deselect the selected flashing net in the drawing window. * Major new feature: Electrical bus terminals, wires, and connectors. In electrical mode, it is now possible to work with "bus" connections, which are multi-conductor connectors. There is a new "vbus" terminal device in the supplied device.lib file. This device can be copied into your custom device.lib file to provide the bus terminal device. The subct command in the electrical side menu can be used to define "bus connectors" which can mate with bus terminals. Either can be attached to a wire, which will propagate the multiple connections. There is provision for making scalar connections to the bus connected to a bus terminal. The number of conductors in bus terminals and connectors can be specified on creation, or changed later. See "? busterm" for complete information. There are new "busterm.gds" and "buswire.gds" examples in the examples directory. If you require backwards compatibility with older Xic releases, this feature should not be used. * New pseudo-property XprpXY (value 7215) This new feature set was inspired by a customer report noting that is was impossible to obtain the anchor coordinate of labels via script functions. Pseudo-properties can be used to obtain information or change physical characteristics of objects in physical mode. The new pseudo-property has a "value" that is an x,y coordinate. The interpretation of this coordinate depends on the type of object. For boxes, it is the lower-left corner. For polygons and wires, it is the first vertex in the vertex list. For labels, it is the text anchor point, and for subcells it is the placement coordinate. Using the Properties Editor or equivalent, applying this pseudo-property will simply change the object location. There are two new script functions that provide the same functionality. GetObjectXY() will return the "XY" value of an object. SetObjectXY() will set the "XY" value of an object. The "XY" value is a coordinate, as for the pseudo-property. * Misc tweeks 1) When an electrical cell is opened and at some other times, property labels that are too far from their object will be moved closer automatically. 2) In electrical mode when editing a schematic, entering the wire command will now automatically switch the current layer to the SCED layer. The current layer can be changed if necessary, but as it was it was too easy to create wires on another layer, sometimes difficult to visually differentiate, that will not be electrically active in the schematic causing the circuit to not work. 3) The EnableNodeMap script function was removed. It has been a no-op since node name mapping was made permanently enabled in the 3.1 branch. 4) The header line for library files can now contain white space between the opening '(' and the keyword "library". The keyword is case insensitive. 5) When using HTML forms, the value="string" construct fails if string contains quote (") characters. HTML '&' escapes are now expanded in these strings, so " can be replaced with """. Bugs Fixed ---------- * The "hidden" box of property labels would almost disappear if the text was top-justified. * Windows Only The Node Map Editor could enter an infinite loop when being updated, causing the program to hang. * Switching between symbolic and non-symbolic views could corrupt the undo list, causing 1) object could be undone or redone into the wrong reprsentation, 2) newly created objects would disappear, but were being placed in the wrong representation. The corruption could cause program crashes. * Fixed minor issue: in the subct command (electrical side menu), saving a cell would omit cached changes that aren't actually made until the subct command is exited. Saving a cell now exits any command in force before writing. * Fixed bug: in electrical mode with dots displayed, there were cases when deselecting a selected subcell would not entirely erase the selection highlighting. * Writing a GDSII file of an electrical top-level cell with no physical cell would crash the program. * In No Top Symbolic mode in the main window, changing the symbolic state in side menu now prints a sensible message. The contact indication now works when in this mode. * In the plot command, the space before a defunct plot point reference is now also removed internally. Previously, the white space was retained, and would accumulate. * Moving unexpanded electrical subcells would leave junk on-screen caused by terminal indicators that extend outside of the subcell bounding box. * The preferences script was broken if any of the search paths contain the quote (") character. Quote characters are included by default in the Windows release, in order to handle file/directory names that contain white space (e.g., "Program Files"). The script has been updated to fix this. Previously, under Windows, using the preferences script could mangle all of the search paths, causing big trouble. * The opening line for library files "(Library ..." had to be exact or reading through the library would fail. In ".scm" menu files, if the header was not in this form (note the capitalization) but the keyword still matched "library" case insensitive, the menus would display correctly in the User Menu, but pressing the sub-menu buttons would do nothing. * The search path (Path variable) was not being properly reset after a native cell read, which transiently modifies the path. Extra white space would sometimes be added, in addition. * The SPICE Run pop-up was not staying on top of the main window. ------------------------------------------------------------------------------- xic-3.2.2 12/9/2009 Changes and New Features ------------------------ * New feature: Hide/Show electrical property labels. The property labels displayed in electrical schematics can be arbitrarily long, and may obscure other features. However, labels longer than a certain length, controlled by the MaxPrpLabelLen variable (can be set from the Window Attributes panel from the Attributes Menu) would not be shown, and a small box would be shown instead. This feature is now more powerful. Shift-clicking on a property label or the small box will toggle the label display between full text display, or "hidden" (small box). The MaxPrpLabelLen will set the initial state of new labels. This operation is persistent when the cell is saved in any format, however changing the display status of a label does not change the modified state of a cell, thus this can be done in IMMUTABLE cells. Notes: 1) The "real" bounding box of a label, which is used to compute cell boundaries, is the bounding box of the full text. 2) This capability applies only to the property labels used in electrical mode. The persistence of these flags required some subtle changes to the file readers. The persistence is available with default settings, however in some cases it is possible to set write modes where the information will not be available. GDSII The Xic label property (number 7180) added to labels in GDSII output can now contain the keywords "show" or "hide" at the end. If this property is not written, the flags will not be available. OASIS The label transform property written with labels contains the flag bits. If this property is not written, the flags will not be available. CIF, native The label transform written as part of the Xic label extension syntax contains the flag bits. If another CIF label extension format is used, the flags will not be available. CGX The flags are hidden in a byte that follows a null byte following the label text. There should be no compatibility problems with older Xic releases. If the flags are unavailable, it simply means that the visibility status of the labels will revert to the default. * New feature: User Marks It is now possible to decorate layouts with open boxes, triangles, lines, and other figures for illustration and highlighting purposes. These figures are not part of the design database and are not saved in output. They do appear in plots. Marks can be saved to and read from a ".marks" file. The interface is the new !mark command. See the help ("?!mark") for more information. * OASIS format tweek. The OASIS format does not allow non-printing characters in label text. Thus, multi-line labels, including "long text" were broken in OASIS, they would cause warning messages and the newlines would be replaced with spaces. To support multi-line labels in OASIS, when an OASIS file is written, the following substitutions will be made in label text: "\n" "\r" "\t" In addition, a file property named "XIC_SOURCE" is now written in OASIS output, as a marker. The OASIS reader, if it finds the XIC_SOURCE property, will perform reverse conversions of these character sequences in label text. * Program logic change The state is now set to "editable" if the current cell does not exist. Initiating most commands will create the cell if necessary (invisible to the user). Previously, the state was set to "read only" which was confusing. * Terminal labels now recognized in extraction. From some tools, cell terminals may be indicated by the presence of a label on a conducting layer, positioned such that the label reference point touches an object on the same layer. Xic does not generate such labels, and previously would ignore them. Now, by default, these labels will be used if found when extracting a schematic from the physical layout, but only in the top-level cell of the hierarchy to identify terminals. There are several new switches that control this capability. New ExsetNoLabels (boolean) variable. If set, by default terminal labels will be ignored when extracting electrical data from the physical layout, as in previous releases. New "ignore labels" check box in Extract Physical pop-up. If checked, terminal labels will be ignored during extraction. New n/N flag in ExtractAndSet script Function. If given, terminal labels will be ignored during extraction. New PnetNoLabels (boolean) variable. If set, by default terminal labels will be ignored when generating a netlist from the physical layout, as in previous releases. New "ignore labels" check box in List Physical pop-up. If checked, terminal labels will be ignored during netlist creation. New _ignore_labels preset format script variable Allows the check state to be queried in format scripts. New l/L flag in DumpPhysNetlist Function. If given, terminal labels will be ignored during netlist generation. In SPICE-format netlists from the Extract Menu, from either physical or electrical mode, a .subckt line will now be present if the cell has terminals defined. * Functions removed: !source, !exset These commands duplicate functionality available through the graphical interface, and have been removed since they don't serve a useful purpose. * New script functions PushSet(name, value) PopSet(name) These functions can be used in the same manner as Set. PushSet will set a variable named in the first argument, or clear the variable if the second argument is a null string or zero. However, the previous state is remembered, and can be returned to with PopSet called with the same variable name. When the script terminates for any reason, all of the PushSet calls are unwound, so variables will be returned to the values in force before the script was executed. ListLabelTerms() ListTermLabels() These two function provide access to a listing of the physical cell terminals indicated by label placements. MakeSymbolic() This function will create a very simple symbolic representation of the current electrical cell, consisting of a box with a name label, and wire stubs containing the terminals. This will overwrite any existing symbolic representation, but the operation can be undone. DumpMarks() ReadMarks() Dump user marks to a file, or read marks from a file. Modifided script function: AddMark() There are now more mark types available. Modifided script function: GrArc An additional argument for elliptical arcs. * File reader log file format change. The warning message format in the file reader (other than CIF) logs has changed a bit. Each warning now contains a generic message, followed be detais enclosed in square brackets. The details may include the containing cell name, an x,y location, a layer name, and the file offset. Not all of these may appear, depending on the context. This actually gives more information than before, in a more compact form. Bugs Fixed ---------- * Fixed additional situations when a spurious pop-up appears when entering text in the prompt line. * Fixed bug: The first time electrical symbolic mode is entered for a cell (from side menu button) the window dimensions were far too large, i.e., the window was zoomed out to near "infinity". * The following script functions were broken due to internal argument processing errors: ToXic DumpPhysNetlist DumpElecNetlist ListPhysDevs CgdChangeName StreamSource ManhattanizeZ Manhattanize GetObjectsOdb GRdefineLinestyle GRdefineFillpattern * Fixed bug: The ExtractAndSet script function would fail if an electrical view was not previously created. * Empty cell checking bugs fixed: A spurious message would appear if cell is IMMUTABLE. A crash might occur if the current cell doesn't exist. * In the subct command in the electrical side menu, Shift-double-click for renaming terminals didn't work. * When extracting electrical data from the physical layout or a SPICE file, the cell terminals could be placed off-grid, making them unreachable when the cell is instantiated. * Fixed subtle label size issue in OASIS and CGX file readers. This affected only multi-line "long text" labels. * The OASIS reader was incorrectly preventing LAYERNAME type 11 and 12 records from existing in the same file. * GTK-2 releases (OS X, FreeBSD, Linux2) only. Fixed a very subtle problem which would occasionally cause parts of lines to not be redrawn on-screen. * Windows Only The licensing system would fail under 64-bit Windows. This has been fixed. Please note that the programs have not been tested under 64-bit Windows. They should work, but... ------------------------------------------------------------------------------- xic-3.2.1 11/19/2009 Changes and New Features ------------------------ * The bloat flags numerical values have changed. - There are now three bits to specify the corner fill-in mode, and a new "extend" mode that skips clipping of the extended corner. - There is a new bit to turn off a rather expensive test. - It is now noted in the documentation that the "scaling fix" will give better results when all angles are multiples of 45 degrees, but is of no value for other angles. If more accuracy is required, use a larger DatabaseResolution value. * Cells Listing panel changes. - There is no longer an All Cells listing mode. The listed cells are either physical or electrical. - The button sensitivity now tracks program modes more effectively. * New Enable Editing button in the Edit Menu. When this button is active, all editing features are active. When inactive, the side menu is hidden, and editing features are desensiitized. This button tracks the state of the IMMUTABLE flag of the current cell. Changing the state will change the flag status. * Full library support in native hierarchies. Missing cells in native-cell hierarchies can now be resolved through libraries. Previously, only inline library cells could resolve in native hierarchies. * New script/layer expression capability. It is now possible to obtain geometry from among the selected objects, rather than the complete cell, in layer expressions and in general scripts. In layer expressions, there is a new function: sqz(expr) This takes a layer expression as an argument and returns the geometry. However, the geometry is obtained from the selection queue. Some examples (using the !layer command): !layer new = sqz(CPG-CAA) Create a layer "new" that will contain the selected objects on CPG clipped around selected objects on CAA. !layer new = VIA & sqz(M2) Create a layer "new" that will contain the areas of VIA that overlap selected objects on M2. !layer CPG = CPG - sqz(temp) Clip out the selected objects on layer temp from CPG. In normal scripts there is a new function (zoidlist) GetSqZlist(layername) This returns a trapezoid list obtained from selected objects on layername. Bugs Fixed ---------- * Fixed drop handling in entry widgets in GTK-2 (Red Hat Linux, Debian) releases. These have their own drop handler which was interfering with the program's drop handler, causing the text to become corrupted. * Fixed the CIF reader, which would hang on certain old dialect files with electrical info. * When placing cells in electrical mode, using the Smash feature, the ghost drawing now shows the devices rather than the device bounding boxes. * In the Cells Listing pop-up, the buttons now have correct sensitivity status after a Copy or Rename operation. They became insensitive until a new cell name was selected. * Fixed bug: flattening an electrical cell with mutual inductors would foul up the k-factor labels. * Info window recursive selection now works in electrical mode. * Fixed bug: the auto-merging of objects that have an internal extraction property (target object for a terminal) would crash the program. * Fixed instability associated with Global mode in the Properties Editor. * The size of the last label created no longer affects label placement for new devices in electrical mode. * Selected devices are now deselected when the Device Selections panel is dismissed. * Fixed bug: If the consistency repair features kick in for electrical mode data, such as if the device.lib file is changed, the undo list would become corrupted and bad things would happen. * Tweeks to the bloat code to avoid numerical anomalies. * Moving a terminal in a symbolic subcell master was not properly invalidating extraction in the parent cells. * (Windows Only) The Xic and XicII menus had a couple of entries that were supposed to have been invisible. * Moving/Copying objects with no translation and only Mirror-Y set would be erroneously disallowed. * The Ctrl-E (coordinate entering) feature was not working properly in some commands, notably box and erase in the side menu. A spurious pop-up would appear, containing command info. ------------------------------------------------------------------------------- xic-3.2.0 10/30/2009 Welcome to the first PRODUCTION release of Xic Generation 3! Below are the changes and fixes applied to the final beta release. Changes and New Features ------------------------ * Prompt line edit mode enhancement. The main window "keys-pressed" area is now replaced by R (Recall) and S (Save) buttons when the prompt line is in editing mode. These provide access to 6 storage registers for text. Register 0 always saves the last text entered, others are read/write. Thus, text (including hypertext) can be saved in a register for later use. This may be particularly useful when composing plot strings in electrical mode. The L (long text mode) button will also appear when appropriate. The L button now stays visible, but is enabled only when the cursor is in column 1. Previously, the keys-pressed area displayed a red "INPUT" label while in prompt line editing mode. * Improved computational geometry accuracy. A thorough audit and optimization was applied to the trapezoid clipping, bloating, and joining code. This eliminates a lot of the inaccuracy that was seen when processing non-Manhattan data. There is a vast improvement over previous releases in handling complex, non-Manhattan geometry. The default limiting of trapezoid group and queue sizes has been disabled. These limits can cause unexpected ungliness in trapezoids after bloating, etc. They can be set by the user to possibly improve speed when needed. * Improved wire rendering. Wire database objects have the property that their geometric shape is not unambiguously specified. Every tool contains code that generates a polygon from the wire vertex list, which can be displayed and further processed. The details of how corners are handled, and how the "rounded" end style is handled, can vary slightly between tools. Some wires are difficult to represent as a polygon, and in fact may cause failure with some tools and not others. The wire-to-polygon code in Xic has been greatly improved, to better represent wires that would previously cause problems. The reprresentation of outside corners of highly acute angles is slightly different from before, and better. * New diagnostics for wires. As noted above, wires can pose rendering and other problems. Although wires sensibly created by hand would rarely if ever cause trouble, wires generated by format converters or some other program may cause faiures, such as when "fracturing" the layout file during mask generation. Even wires that look reasonable on-screen may not be renderable on other tools, thus some tests are now applied to flag potential problems. Wires can be "questionable" or "bad". Bad wires can not be rendered, and will never be included in the Xic database. These wires were previously and are still flagged as errors. Wires that are "questionable" have vertices that are closely spaced compared to the wire width, and trigger an edge-clipping fixup in the wire-to-polygon function. Such wires may cause rendering difficulty in other tools. In addition, wires whose polygon representation requires more than 600 vertices are also flagged as questionable. When reading a layout file, questionable wires will now be reported as warnings in the log file. There is a new !wirecheck command, which is similar to the existing !polycheck command. Questionable wires can be identified and selected with this command. The Info command will also now report potential wire problems. * Tweeks to the bloat operation. The "extend" corner fill mode now limits the projection for acute angles (sort of like the "clip" mode). Small angles will now use the "flat" corner fill mode to avoid adding unnecessary vertices. This applies to both the "clip" and "extend" corner fill modes. There is a new corner fill mode with value 3. Previously, mode 3 indicated "no corner fill" which is no longer available (as it was useless). The mode is similar to the extend mode, but truncates the projection of acute angles in a different way. * Error logging updated. The error logging system has been updated. Messages are now assigned as either "errors" or "warnings". The AddLogMessage script function now has a second argument to indicate whether the message is an error or a warning. Errors generated when reading the technology file now go to a pop-up window rather than to the console window. More device initialization errors from the extraction system are now reported. * New FileTool utility available. The filetool is a command-line program that can perform various manipulations and diagnostics on layout files. It is very useful for quickie operations and in scripts. The filetool is now available as a polymorph of the xic, xicii, or xiv programs. If these binaries are linked or copied to the name "filetool", the program will behave as a filetool when called. There is also a new -F option to these programs, which if given first on the command line will cause the program to execute as the filetool. See ?filetool for complete information. * New bach-mode argument passing capability. It is now possible to pass arguments to the built-in batch operations. The file conversion operations are of less value now that the filetool is available, however the DRC operation remains useful. As a side effect, under Windows background DRC jobs will now check only the area specified instead of the entire file. * Main state copy logic change. When using the basic mouse operations to copy objects (not the Copy command in the Modify Menu), the object now remains "attached" to the mouse pointer after a copy is made, so one can create multiple copies by simply clicking. This seems much more convenient than the old logic, which required "picking up" the object to copy after every copy was made. Bugs Fixed ---------- * Menus used as pop-ups from buttons are now explicitly released, this was a core leak (Unix/Linux only). * Increased wire to poly buffer size to avoid seg faults with bad wires. * Fixed a memory bug in the !layer command. * Fixed a polygon rendering problem at very high magnifications, edge lines and the fill pattern would not match. * Fixed a clipping bug in the "join break clean" mode of the join operation. * In wire creation and other commands that use Shift/Ctrl to affect ghost drawing (such as for the 45 constraint), if Ctrl-g or Ctrl-e were used, which switches to prompt line editing mode, the Ctrl/Shift up event would be lost, and the ghost display would remain in the button down state even after the editor exits. * The empty cell filtering mode would prevent reading OASIS input. * Removed the Tab characters in the opamp model of the example model.lib file, which broke the model when running WRspice from Xic. The WRspice IPC channel was filtering Tab characters. WRspice 3.2.x will be immune to this problem. * The "parallel" write mode of the ChdWriteSplit fuction wouldn't work with OASIS input. * (OS X Power-PC Only) Fixed an endian problem when reading OASIS reals. This broke OASIS on Power-PC. * (Windows Only) Fixed a bug in the Add function in the Properties Editor in physical mode, prompting for the property number was skipped. * Eliminated a bunch of spurious warnings from the help system when starting Xic in batch mode. * Fixed bug: changing grid resolution would possibly leave coordinate marker boxes around. * The -m and -p options to the !splwrite command weren't documented in previous releases. * Under Windows, background DRC jobs would ignore the checking area and always check the entire file. * The database Search function in help windows was broken. * In the Misc. Extraction Settings pop-up, the terminal size entries were not being initialized to correct values (GTK-2 only).