Xic New Features Summary

This file contains highlights of the new features added to Xic in recent releases. Please see the actual release notes for complete information.
xic-2.5.56 Release notes, 5/15/05

* Modified script function, "undoable: argument added.

  Layer(string, depth, flat, undoable)

* New script function:

  (object_handle) FindPath(x, y, depth, use_extract)

* New "transformation stream" data storage used when flattening
  archives while reading, greatly reduces memory use.

xic-2.5.55 Release notes, 4/30/05

* If system memory allocation fails, Xic will now wait five seconds
  and try again, rather than exiting immediately.

* The block hashing code in the second-level memory manager was
  rewritten to improve performance.

* The internal data structure representing labels was modified to
  reduce memory consumption in physical mode.

* New script functions:

  AddMark(type, arguments...)

    This function will add a "user mark" to a display list, which is
    rendered as highlighting in the current cell.  These can be used
    for illustrative purposes.

  (int) EraseMark(id)

* Modifications to computational geometry functions to reduce
  execution time.

* A new methodology is employed when reading and flattening a file in
  a single operation, such as from the Conversion panel.  This
  requires fewer accesses and should in general be much faster.

* A new qsort function was hard coded, replacing the pathetic glibc
  qsort in Linux releases.

xic-2.5.54 Release notes, 4/05/05

* Revised interrupt handling during long operations.

* New environment variable: XT_LICENSE_PATH

* Windows Print Pop-Up change

  In the Print pop-up, the single-line printers list that had to be
  stepped through has been replaced with a drop-down menu.

* There is now a log file produced when the !assemble command is run. 
  This is named "assemble.log" and is written in the current
  directory.

* The Tree pop-up has been enhanced a bit.  The entries are now sorted
  alphabetically.  There is a new label area that provides progress
  feedback when there is long processing time building the internal
  tree, and in the end shows the total number of "nodes" (selectable
  lines) and the hierarchy depth.

* New script function:

  (int) CxOpenFlat(cx_handle, scale, cellname, array, clip)

* The internal data structure for the archive context has been modified
  to reduce memory consumption.  It now provides its own local memory
  management.

* Re-engineered trapezoid clipping functions.  The internal trapezoid
  data structure no longer has slopes cached, reducing memory use
  considerably.

* Revised the "virtual terminal" capability.

  Virtual terminals of the top-level cell are now rendered as a
  beer-barrel shape rather than as a square, for visual
  differentiation.

  The cell bounding box will now include all virtual (as well as
  regular) terminals.

  All terminal centers are now "hot spots" which can be clicked on for
  node hypertext, such as when in the plot/iplot mode, or when
  creating labels.  Previously, only locations on objects were
  sensitive, so virtual terminals were insensitive.

xic-2.5.53 Release notes, 3/13/05

* Major overhaul of the code for reading native hierarchies and
  archives.  Some operations that were deferred to the end of the read
  are now done during reading, which should be more efficient.  Many
  of the changes below were implemented during this change.

* The cell name change (aliasing) code has been centralized and the
  scope for changes made more general.

  The following variables are gone:
    GdsInToLower, GdsOutToUpper, GdsUseAlias, CellNamePrefix, CellNameSuffix

  The functionality has been replaced through use of the following
  new variables:

    InToLower, InToUpper, InUseAlias, InCellNamePrefix, InCellNameSuffix
    OutToLower, OutToUpper, OutUseAlias, OutCellNamePrefix, OutCellNameSuffix,

  In particular, case conversions can now be applied to any archive
  file type, and there is separate control for reading and writing.

* New technology file keywords

  InToLower [y/n]
  OutToUpper [y/n]

* Script function changes

  The following functions are gone:
    (int) SetMapGDSoutToUpper(state)
    (int) SetMapGDSinToLower(state)

  The following new functions are the replacements:

  (int) SetMapToUpper(state, rw)
  (int) SetMapToLower(state, rw)

* The !assemble command has been updated, and supports a number of new
  features.  See "!help !assemble" for more information.

* The layer mapping that is employed while reading archive files has
  been cenralized and enhanced (see "!help layername").

* The Conversion - Import and Conversion panels have a new module for
  layer operations.

* Open libraries are now listed in order.  Earlier names will
  supersede later ones for cell name resolution.

* Two more new variables

  NumToTxtCells (integer)
  GdsMunit (real)

* Text search in help windows

    The Find Text command enables searching for text in the window.

* New ".xicinit" startup file.

    Unlike the .xicstart file, this is read before any of the search
    paths are used, so can be used to set the paths.  See "!help
    initfiles" for more information.

* New feature in Save As command.
    When responding to the prompt for the Save As command, giving a
    directory name will now allow saving the entire current cell
    hierarchy as native cell files in that directory.  In particular,
    giving "." will allow saving in the current directory.

* The scale factor in the Conversion - Import panel now applies when
  reading native cell files.  Native input was not scaled in previous
  releases.

* Redeclaration of an array in scripts to a size larger than the
  current array size is no longer an error.  The array will be resized
  to the new size.

xic-2.5.52 Release notes, 2/2/05

* The Contents list, as produced from the Files Listing pop-up when
  Contents is selected and an archive file name is highlighted, is now
  a drag source for the cell.  If an entry from the Contents list is
  dragged and dropped into a drawing window, that cell and its
  descendents will be extracted from the archive and displayed in that
  window.

* The Font Selection pop-up from the Attributes menu (and elsewhere)
  now contains a drop-down menu of different target fonts to change.

* There have been cosmetic changes to the pictorial Device Menu, to
  improve appearance and legibility. 

* New command line option: -Ggeometry_spec

  New environment variable: XIC_GEOMETRY

  If the geometry has been specified, Xic will use it to position and
  size the main window (if the window manager permits this).

* The assembly stream functionality has been revised.

  The following script functions have been removed:
    StreamWrite
    StreamCxWrite
    StreamFinish

  The idiom is now to save the names and other parameters of the
  archives to be streamed, and do the writing as a final step.

  New and modified functions:

  (int) StreamSource(stream_handle, file_or_context, scale, layer_list,
    use_layer_list, layer_aliases, cname_prefix, cname_suffix)

  (int) StreamInstance(stream_handle, cellname, x, y, my, ang, magn,
    onecell, flatten, array, clip)

  (int) StreamRun(stream_handle)

* In extraction, vias are now recognized at all levels of the
  hierarchy, instead of only in the cell and its subcells.  This means
  that patches of via material not related to any conductor can
  establish connections in or between subcells.

xic-2.5.51 Release notes, 12/5/04

* New script functions

  (int) WriteArchiveContext(cx_handle, filename)
  (cx_handle) ReadArchiveContext(filename)

* New polygon-to-zoidlist function, should be a little faster.

* New local memory management for the join function, should be a
  little faster.

xic-2.5.50 Release notes, 11/1/04

* Changes to the archive context script functions.

  (int) CxWrite(cx_handle, scale, cellname, array, clip, all, flatten,
    outfile)
  (int) CxSetSkipFlag(cx_handle, cellname, skip)
  (int) CxSetSkipEmpties(cx_handle, cellname)
  (int) CxClearSkipFlags(cx_handle)

* New Script Functions

  (int) StartTiming(array)
  (int) StopTiming(array)

* Spatial gridding in the !layer command

  The !layer command, when using boolean operations, now uses gridding
  to improve efficiency for large data sets.

  New Variable: LayerPartSize (floating-point number)

* New zoidlist functions

  (int) ZtoFile(filename, zoidlist)
  (zoidlist) ZfromFile(filename)
  (zoidlist) GetZref()
  (int) AdvanceZref(clear)
  (zoidlist) Zhead(zoidlist)
  (int) Zvalues(zoidlist, array)
  (int) Zlength(zoidlist)
  (zoidlist) GetZlist(layername, depth)
  (zoidlist) CxGetZlist(cx_handle, cellname, scale, array, clip, all)

* Internal changes to data structures to reduce memory use, should be
  invisible to user.

xic-2.5.49 Release notes, 10/3/04

* The Unix/Linux releases now use the new smaller side-menu icons, and
  other minor cosmetic changes were made to the user interface.

* A much faster polygon area function was added (affects the
  GetObjectArea script function).

* There are new, faster bloating algorithms available, in addition to
  the previous algorithm.
  
  New script functions:

  (zoidlist) EdgesZ(dimen, zoid_list)
  (object_handle) EdgeObjects(object_handle, dimen, lname, all)

* Licensing enhancements (Unix/Linux only)

  1) It is now possible to run Xic and WRspice without a license
  server, and to run XicII from a license server.  The status is set
  with a new environment variable

      XT_AUTH_MODE = "Server" or "Local"

* Geometry function tweeks

  - Improvements to polygon area function to increase speed and
    accuracy.
  - Faster wire area function.
  - Slightly faster Poly/Point intersect function.

* There is now limited provision for changing cell names while
  processing archive files with the Convert menu panels and elsewhere.

  New variables:
    CellNamePrefix  (string)
    CellNameSuffix  (string)

* New functions

  (int) StreamCxWrite(stream_handle, cx_handle, cellname, scale)
  (int) CxEdit(cx_handle, cellname)

xic-2.5.48 Release notes, 9/13/04

* There is a new internal data structure for saving information from a
  cell hierarchy in compact form.  This is accessible from a new set
  of script functions.

  This capability applies to physical data only, and the following new
  script functions expose the implementation.  Note that there is a
  new handle type to support this data structure.

  (cx_handle) GetArchiveContext(filename, scale)
  (int) SaveArchiveContext(cx_handle, name)
  (cx_handle) RecallArchiveContext(name, remove)
  (string) CxFileName(cx_handle)
  (string) CxFileType(cx_handle)
  (stringlist_handle) CxTopCells(cx_handle)
  (stringlist_handle) CxLayers(cx_handle)
  (string) CxEstSkelSize(cx_handle)
  (int) CxCellBB(cx_handle, cellname, array)
  (int) CxSetArea(cx_handle, cellname, l, b, r, t, perm)
  (int) CxClearArea(cx_handle)
  (int) CxSetupSkeleton(cx_handle, cellname, l, b, r, t, clear)
  (string) CxInfo(cx_handle, handle_or_filename, flags)
  (string) FileInfo(filename, handle_or_filename, flags)

* The !fileinfo command, like the FileInfo function, now uses the new
  context structure and a complely different set of flags.

* New variable: AutoRename (boolean)

  When set, when reading archive files and a cell is encountered with
  the same name as a cell already in memory, the new cell name is
  automatically changed to avoid a clash.

* The Conversion - Import panel now includes "Auto Rename" in the
  choice menu that controls how to treat cell name clashes.

* In the Conversion panel, The Input File Type menu no longer has
  separate choices for CIF, GDSII, etc., but rather a single entry for
  "archive".  Xic can determine the file type, so there is no need to
  specify.

  The Output File Type menu contains an entry "text" which now works
  for CGX and OASIS, as well as GDSII (as before).  Only the GDSII
  text representation can be back-converted to GDSII, and the other
  text format outputs are at this point rather incomplete.

* New file conversion function

  (int) FromArchive(archive_file, destination)

    This function will read an archive (GDSII, CIF, CGX, or OASIS)
    file and translate the contents to another format.

  The FromCGX, FromCIF, FromGDS, and FromOASIS functions remain as
  aliases for FromArchive, but the documentation is now gone as
  these are deprecated.

* Modified function, now takes CGX and OASIS as well as GDSII.

  (int) ToTxt(archive_file, text_file)

* New layer alias table

  There is now provision for a layer aliasing mechanism which is
  applied when a data file is read.

  (int) DumpLayerAliases(handle_or_filename)
  (int) ClearLayerAliases()
  (int) AddLayerAlias(lname, new_lname)
  (int) RemoveLayerAlias(lname)
  (string) LayerAlias(lname)

  New command: !lal keyword [arguments]

  This command allows manipulation of the layer alias table.

* New "assembly stream" data type and functions

  These implement a functionality similar to the !assemble command. 

  (stream_handle) StreamOpen(outfile)
  (int) StreamTopCell(stream_handle, cellname)
  (int) StreamInstance(stream_handle, cellname, x, y, my, rot, magn)
  (int) StreamWrite(stream_handle, infile, scale)
  (int) StreamFinish(stream_handle)

* Changes to skeleton mode

  It is now possible to have arbitrarily many skeleton-mode hierarchies
  in the database at once.

xic-2.5.47 Release notes, 8/23/04

This release contains A LOT of internal changes, some to core functions.
The objective is to reduce memory usage.

* New memory management layer for frequently-used structures. 
  Statistics can be abtained with "!mmstat".

* Streamlining of transform stack function applied in many places,
  should improve speed slightly.

* The Cells Listing and Tree pop-ups are now drag sources for cell
  names.  The cell names can be dropped in a window to display or edit
  that cell.

* New script functions

  (real) GetObjectArea(object_handle)
  (real) GetObjectPerim(object_handle)
  (string) Strchr(string, char)
  (string) Strrchr(string, char)
  (string) Strstr(string, substring)
  (string) Strpath(string)
  JoinLimits(flag)

xic-2.5.46 Release notes, 7/7/04

* There have been major internal changes to allow viewing of cells
  other than the current cell in subwindows (as produced by the
  Viewport command).  In the present release, only the current cell
  shown in the main window can be edited, other cells in the
  subwindows can be viewed only.

  If a cell shown in a subwindow is the cell shown in the main
  window, with the same mode (physical or electrical), then all
  editing operations will work in the subwindow as well as the main
  window.  The subwindow will display all highlighting, terminals,
  and other special markings.  If the subwindow shows a different
  cell, then in that window selections and editing are not possible,
  and no higlighting or special markings are shown.

  The subwindows are sensitive as drop-receivers from the file
  manager and other listing pop-ups.  File or cell names can be
  dragged from the listing pop-up and dropped in a subwindow, which
  will cause that cell/file to be opened and displayed in the window.

* New '!' command:  !cc [name] [cellname]

    This command will change the cell displayed in the drawing window
    that had the keyboard focus when this command was initiated.  If
    the focus was the main window, this command is similar to the Edit
    command, and will open a new cell or file for editing.  Otherwise,
    the given file/cell is opened and displayed in the window.

* new '!' command: !sw

    This command must be initiated when a subwindow (as created with
    the Viewport command) has the keyboard focus.  It will swap the
    cells, display modes, and views between the subwindow and the main
    window, thus making the cell displayed in the subwindow the
    current cell, allowing it to be modified.

* new '!' command: !svq [regnum]

    This will save the current selections into a "register" which can
    be recalled later.  There are ten registers corresponding to given
    digits 0-9, or if no number is given 0 is understood.

    The registers are actually just dummy cells in memory, which will
    appear in listings as "$$$$REG0" through "$$$$REG9".  These should
    not be edited directly or instantiated.

* new '!' command: !rcq [regnum]

    This will recall the contents of the register whose index 0-9 is
    given, attaching the objects to the mouse pointer where they can
    be placed by clicking in an active drawing window.  The register
    must have been defined previously with the !svq command.  If no
    number is given, 0 is understood.

* new '!' command: !sqdump cellpath

    This will save the current contents of the selection list to a
    native file named in cellpath.  Unlike the Create Symbol
    command in the Edit Menu, no cell is created in memory.

* new '!' command: !cont cellpath

    The cellpath is a path to a native symbol file, or the name of a
    cell in memory.  The cell will be read if necessary, and the
    contents of the cell will be ghost-drawn and "attached" to the
    mouse pointer.  The objects will be placed in the current drawing
    where the user clicks.  This is equivalent to placing the cell
    and flattening.

* Updates to the OASIS capability

  The functionality associated with the OasWriteRep variable, used
  when writing OASIS output from cell hierarchies in memory, has been
  greatly enhanced.  See release note for details.

* There is a new "barcode" script available on the web site in the
  "misc" distribution directory.  This uses the GNU barcode program
  to generate barcode geometry that can be placed in a layout.

xic-2.5.45 Release notes, 6/12/04

* New '!' command: !togrid
  This will move all vertices in selected boxes, polygons, and wires
  to the nearest snap point, using the grid/snap defined for the main
  window.  There is no effect on subcells or labels.  If the new
  object can not be created due to it having zero area, the old object
  is untouched.  Duplicate vertices are removed from the new objects.
  Objects with vertices that are off-grid can change size and position
  due to this function.

xic-2.5.44 Release notes, 5/8/04

* Windows only
  - Programs are now built with gcc-3.3.3 compiler.
  - Switched to inno-4.2.1 installation program.

* Added undo nodes for state change of symbolic mode.  Previously,
  the only action recorded was the initial transition to symbolic
  mode, which would create a property.  This led to strange behavior
  when switching to/from symbolic mode in undo/redo

* Minor enhancements to make the node mapping (nodmp) property and
  pop-up work more cleanly, particularly with symbolic mode.

* The button 2 bindings have been mostly duplicated with button 1/3 plus
  Shift/Ctrl combinations.  This makes it much easier to get by without
  a three-button pointing device.

  1) Holding Shift or Ctrl while pressing button 3 in a drawing window
     is now the same as pressing button 2, i.e., a pan operation is
     started.

  2) Clicking with Shift-button1 or Ctrl-button1 in the layer menu
     acts the same as button 2, i.e., changes layer visibility.  This
     will be helpful for users with a 2-button pointing device, which
     does not have button 2.

  3) The mouse button bindings for the pixel editor in the Fill Pattern
     Editor panel have changed.

        Button  Figure       none    Shift  Ctrl
        1       solid rect   toggle  set    unset
        2       open rect    toggle  set    unset
        3       line         toggle  set    unset

     If Shift or Ctrl is held *before* button 1 is pressed, the action
     will be as for button 2.

* The server interface was further updated, see "!help xic:server" for
  complete information.

  new command keywords:
    clear         clear all cells from the database
    keepall       on close keep all state as-is
    nokeepall     undo effect of keepall
    dieonerror    server will exit on comm error
    nodieonerror  undo effect of dieonerror

xic-2.5.43 Release notes, 4/17/04

* New command:  !fxcell [cellname]
    This command will create a cell from the contents of the
    FastCap/FastHenry interface, and make it the current cell.

* New command:  !manh min_box_size
    This command applies to selected polygons, on the current layer
    only if layer-specific mode is in effect, and will convert each
    polygon to a Manhattan approximation.

* New command:  !polymanh [arg]
    Without an argument, this command will deselect all polygons, and
    then select only those that are Manhattan, on the current layer
    only if in layer-specific mode.  If there is an argument, which
    can be text token, the non-Manhattan polygons will be selected
    instead.

* Modified command:  !polynum [arg]
    This function activates a mode where the vertex numbers of
    selected polygons are shown on-screen.  If no argument is given,
    the display mode is toggled.  If the argument is "y", "1", "on",
    etc., the display mode is enabled.  If the argument is "n", "0",
    "off", etc., the display mode is disabled.
  
* New function:
  (object_handle) BloatObjects(object_handle, dimen, lname)

    This function returns a handle to a list of object copies which
    are bloated versions of the objects referenced by the handle
    argument, similar to the !bloat command.

* New function:
  (object_handle) ManhattanizeObjects(object_handle, dimen, lname)

    This function will convert the objects pointed to by the handle
    argument into a list of copies, which is referenced by the
    returned handle.  The supplied objects and handle are not
    affected.  Each new object is a Manhattan approximation of the
    original object.

* New function
  (int) Manhattanize(dimen)

    Each selected non-Manhattan polygon or wire is converted to a
    Manhattan polygon or box approximation, similar to the !manh
    command.

* New function:
  (zoidlist) ManhattanizeZ(dimen, zoid_list)

    This function returns a new zoidlist which is a Manhattan
    approximation of the zoidlist passed as an argument (similar to
    the !manh command).

  This function is available in layer expressions as manhattanize().

* New math function:  int(x)
  This returns the truncated integer value of the argument.

* New function:
  (string) NewCellName()

    This function returns a string which is a valid cell name that
    does not conflict with any cell in the current symbol table.

* New function:
  (int) ClearCell(undoable, layer_list)

    This function will clear the content of the present mode
    (electrical or physical) part of the current cell.

xic-2.5.42 Release notes, 4/4/04

* The "Extract RLC" FastCap/FastHenry interface has been completely
  revised.

  There are numerous changes, see the documentation for details:
    !help fxinterf
    !help fxpanel

  Among other things, it is now possible to save and recall a data
  set.

xic-2.5.41 Release notes, 3/6/04

* It is now legal to have ordinary statements in the script library
  file.  These will be executed once only, when the library file is  
  read.  This can be useful for library initialization.

* Changes to WRspice interface:
 1) more informative error message if remote spice server operation fails.
 2) after connection failure, the user can try again (after fixing things).
    Previously, the interface was locked out after a serious error, so
    Xic would have to be restarted.
  
* New bit-manipulation script functions
  
  (unsigned int) ShiftBits(bits, val)
  (unsigned int) AndBits(bits1, bits2)
  (unsigned int) OrBits(bits1, bits2)
  (unsigned int) XorBits(bits1, bits2)
  (unsigned int) NotBits(bits)

* New feature: a fancy pop-up to facilitate saving devices.

  Devices in the device library can be edited, while in electrical
  mode, by simply giving the device name to the Edit command or
  equivalent.  When saving, with either Save or Save As, the Library
  Device Parameters pop-up will appear.  This allows various defaults
  and parameters to be specified for the device, and allows it to be
  saved in a device library file or in a native cell file.

* Minor changes to the script debugger
  -  The debugger now handles backslash-continued lines correctly.
  -  Quitting with the window manager "X" button in the title bar is
     now the same as using the Quit button.

xic-2.5.40 Release notes, 2/12/04

* Added the following two script functions, and added example
  formatting to the xic_format_lib file for electrical netlists.

  New function:
  (int) GetNumberNodes()

    Return the size of the internal node map.  The internal node
    numbers range from 0 up to but not including this value.  The
    return value is 0 on error or if the cell is empty.

  New function:
  (terminal_handle) ListNodeTerminals(node)

    Return a handle to the list of terminals connected to the internal
    node number supplied as the argument.

* There is a new "S" button to the left of the layer menu, which
  controls layer-specific mode.  The box icon at the right of the
  layer table can also be used to set layer-specific mode, and the
  Layer Specific button in the Selection Control Panel from the layer
  button in the side menu is yet another way to set layer-specific
  mode.

  The S button, along with the up/down arrow buttons that control
  layer table scrolling, respond to keyboard accelerators, and have
  "tooltips".  The keywords are

    S button  : lspec
    up arrow  : ltup
    down arrow: ltdn

* Giving "!set ?" now pops up a help window rather than generating its
  own listing window.

* The listing of variables provided by "!set" with no arguments has a
  more legible font for the value string, and will not lose the '<'
  character due to HTML formatting.

xic-2.5.39 Release notes, 1/5/04

* Support for OASIS files:

  - The parser now handles XGEOMETRY and XELEMENT records, but the
    contents of these records is ignored.

  - When reading, all repetitions are now handled.  If the repetition
    applied to a cell can be converted to a cell array, it is done,
    otherwise individual instances are placed.

  - The parser now handles the case where offset table data is
    enclosed in a CBLOCK record.

* The Tiny Boxes button in the Attributes Menu works slightly
  differently now.  When set, cells that are smaller than a minimum
  size are shown as a bounding box only (as before).  When not set,
  these cells are not displayed at all.  The size threshold can now
  be changed with the CellThreshold variable.

* New Variable:  CellThreshold (integer >= 0)

  This sets the size threshold in pixels for subcells to be shown in
  the display.  If not set, the value is effectively 4.

xic-2.5.38 Release notes, 12/9/03

This release has MAJOR changes:

1) OCT and EDIF-200 support have been removed.

2) The BDNET format, a format option for physical and electrical
  netlist output, is part of OCT and is no longer available.

3) Netlist output is now programmable.  Since there is no one standard
 format, an attempt is being made to provide a user-generated format
 capability through the scripting language.

4) This release contains prototype support for the OASIS (Open Artwork
  System Interchange Standard), the new standard from the SEMI
  organization.

Changes and New Features
------------------------

* Removed support for EDIF-200 and OCT/bdnet, as per note above.

* Added support for OASIS files.  In general, this can be considered
  as just another archive file format, along with GDSII, CIF, and CGX.
  Conversions to/from are available.  The advantage is reduced file
  size.

  See http://www.wrcad.com/oasis/ for more information.

* Script function changes related to file i/o:

  These functions are gone:
    FromEDIF()
    ToEDIF()
    FromOCT
    ToOCT

  New functions:
  (int) FromOASIS(oas_file, destination)
  (int) ToOASIS(oas_name)

* The KeepBadCif and KeepBadGds "!set" variables are no longer
  used.  Instead, there is a

    New variable: KeepBadArchive (boolean)

* There is no longer an internal limit on the size of a polygon or
  wire.  Previously, these objects were limited to 8000 vertices.

  The JoinMaxPolyVerts variable can now be set to 0, in which case
  there is no limit on the number of vertices of polygons created when
  joining objects.

* New variable:  JoinBreakClean (boolean)

  In the !join command and similar functions, when building up the
  polygons and the vertex limit (JoinMaxPolyVerts) is reached,
  ordinarily the present polygon is output, and a new one is started
  immediately.  This generally produces a set of polygons with
  complicated and seemingly arbitrary borders.  If this variable is
  set, then the polygons are initially built ignoring the vertex
  limit, and polygons that exceed the vertex limit are split into
  pieces along Manhattan bisectors, so that no piece exceeds the
  vertex count.  This gives a much nicer looking layout, but is more
  compute intensive.

* More new functions

  (int) GroupObjects(object_handle, array)
  (int) CheckObjectsConnected(object_handle)
  (int) CheckForHoles(object_handle, all)

* Holding Shift while pressing the arrow keys now causes "fine"
  panning.

* New script function:

  (string) FileInfo(filename, flags)

* New '!' function: !fileinfo filename [flags]

  This will print to the console window information about the archive
  file given as the first argument.

* The Dump Phys Netlist and Dump Elec Netlist commands have changed.
  The bdnet format, which was used in OCT, is gone.  Instead, the
  commands provide the built-in and SPICE formats as before, and in
  addition zero or more user-defined formats.  The user-defined formats
  are generated by scripts, which are kept in a library file.  Scripts
  found in the library have names that will appear as selection buttons
  in the command pop-ups.

* New script functions:

  (int) GetNumberGroups()
  (string) GetGroupName(group)
  (string) GetGroupNetName(group)
  (real) GetGroupCapacitance(group)
  (terminal_handle) ListgroupTerminalNames()
  (string) GetTerminalName(terminal_handle)
  (int) GetTerminalType(terminal_handle)
  (int) GetTerminalFlags(terminal_handle)
  (int) GetTerminalLocation(terminal_handle, array)
  (object_handle) GetTerminalInstance(terminal_handle)
  (int) IsTerminalFormal(terminal_handle)
  (object_handle) GetTerminalObject(terminal_handle)
  (int) GetTerminalVgroup(terminal_handle)
  (string) GetTerminalLayer(terminal_handle)
  (string) GetPdevContactDevName(dev_contact_handle)
  (int) GetPdevContactDevIndex(dev_contact_handle)
  (string) GetPscContactSubcName(subc_contact_handle)
  (int) GetPscContactSubcIndex(subc_contact_handle)
  (string) GetPscContactName(subc_contact_handle)
  (int) IsPscContactIgnorable(subc_contact_handle)

* The zlib interface (.gz file support) was rewritten.  The new
  interface provides 64-bit support without the need for a special
  hacked version of the library.

* Properties Editor changes:

  If the Name property is set, the property text is now highlighted.
  Since this property is always in the listing, it would otherwise be
  impossible to tell if the values has been set, if the value is in
  the same form as an internally assigned name.

  The dotted marker boxes for the Properties Editor and Property Info
  Windoe no longer destroy one another.

* The XIC_SYSTEM_MALLOC environment variable name has been changed to
  XT_SYSTEM_MALLOC.  When set, Xic and WRspice (next release) will use
  the system memory allocator and not the one supplied in Xic/WRspice.

xic-2.5.37 Release notes, 10/31/03

* (Unix/Linux Only)
  Improved the drag/drop in the Fillpattern Editor, much less flicker
  now.

* The Dump Defs button in the Fillpattern Editor now pops up an
  information message, previously there was no feedback.

* New math functions for scripts:

  floor(x)
    Returns the largest integer value less than or equal to x.
  ceil(x)
    Returns the smallest integer value greater than or equal to x.
  rint(x)
    Returns the the integer nearest to x.

xic-2.5.36 Release notes, 10/26/03

Changes to ALL TOOLS
--------------------

* The format of the FreeBSD and Solaris distribution files has changed.
  These distributions are now provided in the "native" format for the
  operating system, avoiding the need to install the rpm program.

  The reasons for making this change are
  1)  This should simplify the installation process.
  2)  Portability of the rpm program itself and distributions created 
      with it have become issues.

  See the installation instructions on the web site for more
  information.

  All distributions have been released in the new format.

  The wr_update script, provided in the accessories distribution, has
  been updated to handle the new file formats.  It has also been
  enhanced in other ways, for example it now automatically knows if
  the releases are installed in a non-standard location.

* There is a new wr_install script supplied with the distribution
  files on the web site.  This facilitates the unpacking and
  installation of the files.  The install a distribution, as root give

    wr_install distfile ...

  where the arguments are downloaded distribution files (but don't
  change the distribution file names!).

* All of the XicTools programs now respond to the XT_PREFIX
  environment variable.  When the tools are installed in a
  non-standard location, i.e., other than /usr/local, this can be set 
  to the directory prefix which effectively replaces "/usr/local", and
  the programs should be able to access the installation library files
  without further directives.  The XIC_LIB_PATH, etc.  variables still
  work, and have precedence.


Changes and New Features
------------------------

* Changes to the script parser

  Keyword recognition now uses a hash table, should speed up the
  parse.

  Line breaks are no longer necessary in most cases, facilitating
  macros.

* It is now possible to change the layer of objects during a move/copy
  operation.  This applies to the basic pointer operations, the Move
  and Copy menu commands, and the placement part of the spin (side
  menu) command.

  During the time that objects are ghost drawn and attached to the
  mouse pointer, if the current layer is changed, the objects that are
  attached will be placed on the new layer.  Subcells are not
  affected.

* Modified '!' commands: !mo (move) and !co (copy)

    !mo dx [dy [layer_name]]
    !co dx [dy [layer_name]]

  The third argument, if given, will allow a layer change during the
  move or copy.

* New '!' command: !ro (rotate)

    !ro x y angle [layer_name]

  This command will rotate all selected objects about x,y (given in
  microns) by angle (given in degrees) counter-clockwise.  The
  optional layer_name works similar to that in !mo/!co.

* New script functions

  (int) CopyToLayer(fromx, fromy, tox, toy, oldlayer, newlayer)
  (int) MoveToLayer(fromx, fromy, tox, toy, oldlayer, newlayer)
  (int) RotateToLayer(x, y, ang, oldlayer, newlayer)
  (int) ObjectMoveToLayer(object_handle, refx, refy, x, y, all,
      oldlayer, newlayer)
  (int) ObjectCopyToLayer(object_handle, refx, refy, x, y, all,
      oldlayer, newlayer)

xic-2.5.35 Release notes, 10/12/03

* New script functions:
 
  Unset(name)
  (int) DeleteEmpties(recurse)
 
* New '!' command:  !assemble specfile
 
  This command implements a feature whereby several archives can be
  merged into a larger archive, on-the-fly so as to avoid memory
  limitations.

* A new error reporting structure was implemented.  This provides a
  lot more capability in error reporting, and is used by most
  functions in Xic.  Over time, more detailed error messages will be
  added.

* New script functions for error reporting interface:

  (string) GetError()
  AddError(string)
  (int) GetLogNumber()
  (string) GetLogMessage(message_num)
  (int) AddLogMessage(string)

* New property for electrical devices and subcircuits: NoPhys

  When this property is applied to an electrical device or subcircuit,
  that device or subcircuit is assumed to have no physical
  implementation and is ignored in LVS testing.

xic-2.5.34 Release notes, 9/28/03

* In the Extraction Parameter Editor, the Apply button is gone. 
  Changes are now in effect when they are visible in the listing
  window. 

* In the Conversion Parameter Editor, the Apply button is gone.
  Changes are now in effect when they are visible in the listing
  window.

* New substitution escape in Device block format statements:

    %p lname pnum%

  lname is the name of a layer, space after the 'p' is optional.  The
  pnum is a non-negative integer.  The token is replaced with a
  propertu string corresponding to pnum.

* New variable:  RulerSnapToGrid (boolean)

  When set, when entering the Rulers command the snap-to-grid mode
  will be initially set.

* New Variable:  ShowDots (boolean or 'a')

  This sets the drawing of connection indications in electrical mode,
  similar to the dots button in the side menu (which internally sets  
  this variable).

* New script function
  (int) RenameCell(oldname, newname)

* New '!' commands:

  gzip infile [outfile]

    The will compress the file given as infile using the gzip method.

  gunzip infile [outfile]

    This will uncompress the file given as infile, which was
    previously compressed with gzip, and has a ".gz" extension.

* The Add menu of the Cell Properties Editor has changed slightly.  It
  is now possible to add "Other" properties to cells in electrical
  mode.  These have no meaning to Xic, but might be of use to the
  user.  Any number of these properties can be added.

* It is now possible to add Other properties to subcircits.  This was
  disabled previously.

xic-2.5.33 Release notes, 9/21/03

* Modifications to source tree organization and code to support a new
  Sparc64 full 64-bit distribution (coming soon!).

* New script functions:

  (int) SaveCellAsNative(cellname, directory)
  (int) HCshowAxes(style)
  (int) HCshowGrid(show, mode)
  (real) HCsetGridInterval(spacing, mode)
  (int) HCsetGridStyle(linemod, mode)
  (int) HCsetGridOnTop(on_top, mode)

xic-2.5.32 Release notes, 9/15/03

* More pointer consistency tests added to memory dallocation function.
  This should produce memory allocation error messages instead of core
  dumps if memory gets corrupted.

* New variable: NoPopUpLog (boolean)

  When set, the File Browser loaded with the log file which appears if
  there were errors or warnings when reading an input file or writing
  output will not appear.  This applies to the Edit command and
  equivalent, and the file input/output operations in the Convert
  Menu.  It is not recommended to set this in general, but the browser
  popping up does become annoying at times, so this variable can be
  set when the user knows what to expect in the file.

* Help system changes

  o  In !!HEADER test, the literal token %TITLE% is replaced by the
     !!TITLE text of the current topic when displayed.

  o  Additions to the help text:
      A Quick Tour of the Xic Menus
      A Quick Tour of Xic Capabilities

xic-2.5.31 Release notes, 8/7/03

* New script functions:

  (int) IsCellInMem(cellname)
  (int) IsFileInMem(filename)
  (int) NumCellsInMem()
  (stringlist_handle) ListCellsInMem()
  (stringlist_handle) ListTopCellsInMem()
  (stringlist_handle) ListModCellsInMem()
  (stringlist_handle) ListTopFilesInMem()

* All conversion scaling and object magnification factors can now be
  in the range 0.001 through 1000.0.  The previous range was more
  limited.

* When reading a design file, there is now a warning message printed
  in the conversion log file if a cell bounding box extends beyond
  "infinity".

xic-2.5.30 Release notes, 8/5/03

* New command line option: -Lserverhost

  This supplies the host name of the machine running the license
  server.  Note that there is no space after -L.  If given, this will
  override the server host supplied by other means.

xic-2.5.29 Release notes, 7/23/03

* New selection behavior
  If something is selected, clicking in a drawing window in an empty  
  area will deselect the the head of the selection list, which is the
  last object selected.

* Changes to Ruler command (View Menu)

  - Rulers are now disabled in Electrical mode.

  - The rulers are now saved for each cell, so that if the editing
    context changes, the rulers will still be there when the original
    cell is edited again (the rulers will disappear if a cell in
    memory is overwritten, however).

* New '!' command: !dr [arg]
    
  This will delete currently displayed rulers.  If no arg is given, 
  the most recently generated ruler is deleted.  The arg can be an 
  integer, or 'a'.  if 'a' is given, all rulers are deleted.  If a
  number is given, that ruler, counting backward from the most
  recently generated, will be deleted, i.e., 0 erases the most recent
  ruler, 1 erases the one before that, etc.
    
* Enhancements to the geometry manipulation functions for speed
    
  - New trapezoid clipping functions, may be a little faster.
    
  - Special case added to function that builds polygons from zoid 
    lists for groups containing only one zoid.
    
  - New polygon vertex checking function is more efficient.

  - Misc. tweeks for efficiency.
* There is a new provision for converting an archive into a collection
xic-2.5.28 Release notes, 6/29/03

* There is a new provision for converting an archive into a collection
  of flat cells that tile all or part of the archive.  This is
  available through two new script functions.

  new script function:
  (int) SkelWriteGeomSplit(basename, x0, y0, wid, hei, border)

    This function will split the hierarchy under the current cell,
    which must have been read in skeleton mode, and write the
    flattened geometry to a set of output files.

  new script function:
  WriteGeomSplit(fname, cname, basename, l, b, r, t, x0, y0, w, h, bw)

    This function will read the CGX, CIF, or GDSII file fname, and
    split to geometry in cname into a collection of flat files
    covering a grid, in the manner of the SkelWriteGeomSplit()
    function.

xic-2.5.27 Release notes, 5/31/03

* Property Editor re-engineered

  Due to some subtle bugs and other things not good about the Property
  Editor and Cell Property Editor, these were rewritten.

  There is a new Property Info popup.  Properties can be dragged
  between windows.  See "!help xic:prpty" for complete information.
   
* In the plot and iplot commands, multiple trace indicators can now
  be attached to the same node, as long as they are spatially
  distinct.

* New capability when reading or translating archive files:  layer
  filtering.

  New variable:  LayerList (string)

  This can be set to a space-separated list of layer names.  These
  layers can be used for filtering when an archive file is being
  read or translated.

  New Variable: UseLayerList (boolean or string)

  This variable deterines how and if the LayerList string is used
  when input is being read from an archive file.

* The Conversion - Import and Conversion panels how have an editable
  field for a list of layers, and check boxes for whether to use
  only the listed layers or skip the listed layers.  These control
  (and are controlled by) the values of the LayerList and the
  UseLayerList variables.

* Help system changes

  o  The CGX file format is now documented in "!help cgxformat".
 
  o  Fairly extensive revisions to the text.

  o  New capabilities: redirection, headers, footers.  See the
     documentation for more information.

xic-2.5.26 Release notes, 5/5/03

* Minor change to the script debugger pop-up:

  New accelerator keys when in execute mode (Unix/Linux only)
   t,       single step
   r               run
   e, Backspace    reset

  These are hard coded, and are in addition to the accelerators in the
  menu (which can be changed).  The problem with the menu accelerators
  is that they require the Ctrl key to be pressed, which may fool
  scripts that are sensitive to the Ctrl key.

* In the Edit Terminals command, clicking on a terminal now brings up
  the terminal properties editor, Shift-clicking will allow the
  terminal to be moved.  The Shift key has reverse logic from earlier
  releases.

  The ghost-drawn terminals are now shown as a box, which is easier to
  see than the previous cross.

xic-2.5.25 Release notes, 4/29/03

* The object database, which is the core of Xic, has been replaced. 
  The previous database, based on spatially-binned skip-lists, was
  inefficient for spatially filtered area retrieval.  The new database
  does away with spatial binning and uses an R-tree-like mechanism for
  spatial filtering, while retaining the ordering property of the
  skiplist approach.  The new database outperforms the old on all
  tests, sometimes very substantially (for example, the
  "merge-boxes-on-read" feature has much lower overhead now).  The
  memory consumption overhead is about the same.

* The !bincnt diagnostic is a little different now.

    !bincnt [layername [level]]

  This command prints some database statistics on the console window. 

* Work was done to make clipping functions faster, particularly when
  the clipping region is a simple rectangle.  In particular, the
  ClipToAll() and ClipToAllCopy() script functions are now special
  cased when the clip region is a single rectangle.

xic-2.5.24 Release notes, 4/15/03

* Major rewrite of the computational geometry functions to improve
  speed.  The logical operations, clipping, joining, etc should be
  faster.

* Some work on DRC for efficiency and numerical robustness.

* New script functions

  (int) SkelWriteDigest(digest_file)

    This function writes a digest file for the skeleton hierarchy
    rooted at the current cell.  A digest file is a simplified
    representation of the cell hierarchy, containing only the
    information needed to access the cell data in the archive file. 

  (int) SkelReadDigest(digest_file, archive_file)

    This function reads a digest file created previously with
    SkelWriteDigest(), which applies to the CGX/CIF/GDSII archive file
    given in the second argument.

* New variable:  JoinMaxPolyGroup (integer >= 0, default 100)
* New variable:  JoinMaxPolyQueue (integer >= 0, default 1000)

   For fine-tuning the !join command.

* New '!' command: !time

    This prints the elapsed real time in milliseconds since the
    session was started on the console window.  The granularity
    is 200ms.

xic-2.5.23 Release notes, 3/26/03

* All of the screen marks and selections now use the backing store to
  redraw when deleted.  This is hugely more efficient.

* Unix/Linux Only (except for "Solaris")
  The FreeBSD, Linux, Linux2, and Solaris8 distributions now support
  64-bit file offsets for CIF/GDSII/CGX files.  This means it is now
  possible to read and write files larger than the 2Gb limit imposed
  by 32 bits.  The 32-bit limit still applies under Windows, and the
  old Solaris distribution.

* CIF files now work in skeleton mode, the same as GDSII and CGX
  files.

* The functions that read and write data files have been completely
  rewritten into a new class hierarchy.  The new modularity allows
  new translation capability that is reflected in the Conversion
  pop-up window.  The controls in this window are much different
  than in previous releases.

  It is now possible, from this panel, to convert a GDSII/CIF/CGX file
  directly to another of these formats, in addition to native Xic
  files.  These are direct conversions, i.e., the data are converted
  directly and do not enter the database.  This means that there are
  no memory limitations, and as 64-bit file offsets are used,
  arbitrarily large files can be translated.  It is also possible to
  perform scaling, data windowing or clipping, and hierarchy flattening
  while translating.

* New and modified script functions

  (Modified function)
  (int) FromCGX(cgx_file, destination)

    The FromCGX function will read a CGX file cgx_file and translate
    the contents to another format.

  (Modified functions)
  (int) FromCIF(cif_file, destination)
  (int) FromGDS(gds, destination)

    These now operate analogously to FromCGX.

  (New function)
  (int) SetConvertFlags(use_window, clip, flatten)

    This function sets the status of flags used in format conversions. 

  (New function)
  (int) SetConvertArea(l, b, r, t)

    This function sets the rectangular area used to filter or clip
    objects during format conversions.

  (New function)
  (int) SkelWriteGeom(depth, filename, flat, clip)

    This function will write the cells and objects that have nonzero
    area overlap with the current skeleton window to a file.

xic-2.5.22 Release notes, 2/24/03

== Enhancements to the GDSII File Reader

  The GDSII reader has been extensively revised, mostly to improve
  speed, but also to provide support for the latest format release.

  * GDSII Format Release 7 support

  The GDSII reader can now accept polygons and wires with up to
  8000 vertices.  Previously this was limited to 600 vertices for
  polygons, 200 vertices for wires.

  The Export Control pop-up from the Convert Menu has a new option
  menu for effectively setting the GdsOutLevel variable.

  * Revised Property Handling

  * Less extensive revision to the other converter modules, to improve
    efficiency.

== New Archive File Format Available

  * Computer Graphics eXchange (CGX) Format

  A new file format for input/output has been added.  This is a binary
  file format similar to GDSII.  It has simplified record structure,
  but extensions in data flexibility.  If is more compact than GDSII
  and is more efficient to read and write.  This file format was
  developed by Whiteley Research Inc., but will be placed in the
  public domain with no or minimal restrictions.

  The advantages of CGX over GDSII are smaller files and faster
  read/write.

== New and Modified "!set" Variables

  * Whenever the ScriptPath is changed, the script files and libraries
    are re-read and the User Menu rebuilt, as if the Rehash button was
    pressed.

  The names of these variables have been changed for consistency. 

  * New Variable:  CifLayerMode (integer 0-2)

  This variable determines how Xic interprets layer directives while
  reading CIF files.

  * New Variable:  GdsOutLevel  (integer 0-2)

  This was described in the section above detailing changes to the
  GDSII reader.

  * New Variable:  JoinMaxPolyVerts  (integer 20-8000)

  This sets an upper bound on the number of vertices in polygons
  created with the !join command and similar operations.  The previous
  limit, and the current default, is 600 vertices.

  * EraseBehindTerms changed

  The EraseBehindTerms variable will cause erasure behind all terminals
  if set to "all".  If set to anything else, only the formal terminals
  are erased behind (the previous behavior).

== Script Reader Changes

  * Handles Automatically Closed When Out of Scope

  * New Script Function
  (int) ToCGX(cgx_name)

    This function will write the current cell hierarchy to a CGX
    format file on disk.

  * New Script Function
  (int) FromCGX(cgx_file, destination_dir)

    The FromCGX function will convert a CGX file cgx_file to Xic
    symbol files.

== Technology File Keyword Changes

  * Resolution Now Set in Driver Blocks

  There is a new keyword which can appear in printer driver blocks in
  the tehcnology file:

    HardCopyDefResol (integer)

== Changes to Menu Commands

  * Enhanced the Set Grid Pop-Up

  Reworked the Set Grid pop-up.  Operation is now hopefully more
  straightforward.

  * Enhancements to spin Command

  The spin command (in the physical side menu) has been enhanced.  The
  operation now supports all object types, however if a subcell or
  label is selected, the rotation angle is constrained to be a
  multiple of 45 degrees. 

  * Info Window Mouse Wheel Support

  * ABORT Button in Modified Cells Pop-Up

  * The Converion - Import Panel, Open Cell With Scaling

  The Converion - Import pop-up from the Convert Menu now has an entry
  area for a scale factor and a Read File button.

  * The Conversion - Export Panel, GDSII Format Level

  The Conversion - Export pop-up from the Convert Menu has a new
  option menu for effectively setting the GdsOutLevel variable.

== New and modified '!' commands

  * New '!' command:  !rehash

  This command re-reads the script files and libraries along the
  script search path, and rebuilds the User Menu (the same as the
  Rehash button in the User Menu).

  * New '!' command:  !helpreset

  This will clear the internal cache used by the help system.

  * New '!' command: !summary [-v] [filename]

  This prints summary information (similar to the Info command) for
  each cell in the hierarchy rooted in the current cell to a file.

  * New '!' command:  !lisp filename [args...]

  This is an interface to the Lisp/Skill parser that is under
  development.  For more information, see the help (!help !lisp).

== Internal Enhancements

  * Replaced Linked-Lists With Hash Tables

  Reworked some of the core database structures to be more efficient. 
  This should fix performance issues for the following two cases:
  1) A cell contains a huge number of different subcells.
  2) The hierarchy contains a huge number of different cells, each
     containing an instance of one type of cell.

  * Skeleton Mode Efficiency Improvements

  Internal changes to the skeleton mode implementation to improve speed.

  * Display Control System Revised

  Revised the display control functions.  Much more use is made of
  in-memory display backup, which greatly reduces the time needed to
  refreseh the window after exposure events.

xic-2.5.21 Release notes, 1/21/03

* The first shot at a Cadence compatibility package is now available,
  through a new technology file keyword:

    ReadCds filename

  This can appear anywhere in the technology file, and will cause Xic
  to read information from the Cadence technology file given in
  filename.

* New and modified script functions

  New:
  (zoidlist) GetZlist(layername, depth)

    This function returns a zoidlist from the layer given in the first
    argument, which has the form layername[.cellname].

* There are two new directives in the server protocol:

  longform
    When given, the server will be placed in a mode where data from
    the current expression will be returned after each command.

  shortform
    When given, the server will be placed in a mode where only the
    data type is returned from each command.  This is the default.

* The xclient.cc example client has been extended to cover the new
  datatypes and features.

* The tkdemo.tk and xclient.cc files are now supplied in the
  distributions, and are installed in the examples directory.

xic-2.5.20 Release notes, 1/12/03

* The core of the DRC system was extensively revised.  Should not be
  visible to the user.

* A new bloating algorithm is used in the !bloat command and elsewhere
  for bloat operations.  Unlike the previous algorithm, this one works
  with non-manhattan geometry.

* New '!' command:

   !errlayer layer_name [prpty_num]

  This command will create polygons on layer_name corresponding to the
  error regions currently stored in the list of design rule errors. 

* For all script functions that take a zoidlist argument, that
  argument can be

    a zoidlist  (obviously)
    0           (implies the reference zoidlist)
    a string    (the string is parsed as a layer expression, which is
                 evaluated, and the result returned)
    a layerexpr (evaluate layer expression, return result)

* New script functions

  (int) ZtoTempLayer(longname, zoidlist, join)

    This function creates a temporary layer using longname, and adds
    the content of the zoidlist to the new layer,

  (int) ClearTempLayer(longname)

    This function will clear all of the objects in the current cell
    from the given layer, without saving them in the undo list.

  (zoidlist) geomAnd(zoids1 [,zoids2])
  (zoidlist) geomAndNot(zoids1, zoids2)
  (zoidlist) geomCat(zoids1, ...)
  (zoidlist) geomNot(zoids)
  (zoidlist) geomOr(zoids, ...)
  (zoidlist) geomXor(zlods1 [,zoids2])

    Geometry manipulation functions.

* In user-defined design rules, there are several new test functions.
  These can be used in conditionals, and in the expression that sets
  the Fail flag.

xic-2.5.19 Release notes, 12/15/02

* In the file selection pop-up family, double-clicking on a file name
  is now the same as pressing the green "Go" button.

* Xic will now compute the capacitance of all wire nets during
  extraction.  The capacitance, along with some other information,
  will be printed in the physical netlist output, if "net" is   
  selected.

* Windows Only
  Lots more colors are now available by name from the Set Color
  pop-up.  In particular, all of the names from the X-window system
  are recognized.  Previously, only a subset of these colors was
  available.

* Windows Only
  The font used in the main window for the prompt line and coordinate
  readout can now be specified.

xic-2.5.18 Release notes, 11/24/02

* Revised the code that handles layers.  There is now no internal
  limit on the number of layers that Xic can create internally.
  Previously, these had hard limits due to fixed-size arrays (128
  physical, 16 electrical).

* GDS reader changes
  If a new layer is created while reading GDSII, the name will be in a
  new form.  This is to more gracefully handle three-digit layer
  numbers and data types in the four character name field.  The name
  will be different depending on whether the NoMapDatatypes variable
  is set.

* Xic layers now have an optional associated "long name" which can be
  used to identify the layer.  The long name can be just about any
  string, but it should not match the regular name or long name of
  another layer.  The commands and functions that accept layer names
  can generally take either a long name or a regular name.

* The Conversion Parameter Editor pop-up now allows editing of the
  LongName and Description fields of the layers.  The label on the
  button in the Convert Menu that brings up the editor has been
  renamed from Edit GDSII Keys to Edit Parameters.

* Several new and modified script functions.

* When reading/writing files, inability to open a log file is no
  longer a fatal error.  You just won't have a log file.

* When Xic scans its memory and prompts the user whether to save
  modified cells, such as just before quitting, a new pop-up will
  appear rather than prompts on the prompt line.

* Added color to the yes/no toggles of the Merge Control, and Empty Cells
  pop-ups.  Color added elsewhere to misc. pop-ups.  In the Properties
  editor, the color code is
    sienna          ordinary (user-modifiable) properties
    dark blue       physical mode pseudo-properties
    black           internal properties

xic-2.5.17 Release notes, 11/10/02

* When running WRspice from Xic, the WRspice toolbar is now visible by
  default.  This provides much more flexibility and control over   
  WRspice.

* New variable: NoSpiceTools
  If this variable is set before the connection is established to
  WRspice, the WRspice toolbar will not appear.

* The device library no longer pops up automatically in electrical
  mode.

* The devices in the pictorial device menu are now alphabetically
  sorted rather than random.  Early on, these were in order of
  appearance in the device.lib file, however that went away with the
  switch to hash table access many releases ago.
 
* The C-style pre and post increment/decrement operators are now
  supported in scripts.
 
* There are major internal changes taking place.  The changes are
  necessary to support a more powerful and efficient geometric
  manipulation and testing capablilty.

  In this release, there are two main changes: 1) the "handle" is now
  a distinct data type, and 2) two new data types have been added.

  1) Handles can no longer be used in expressions or otherwise used
     where a numeric variable is expected.

  2) Handles will behave differently than numeric variables when passed
     to generic functions such as the Print() function.

  3) Handles now have a set of overloaded operators which can make
     script code more concise.

  Handle overloading

  Although handles cannot be used in general expressions involving math
  operators, some of the operators perform specific actions of the handles,
  to be described.

  conditionals and logical expressions

  Handles can be used in conditional and logical expressions using the
  and (&), or (|), and not (!) operators.  If the handle is non-empty,
  it is "true", otherwise it is "false".  This can be used as a far more
  efficient loop termination test than a call to HandleContent().

  concatenation

  The + operator is overloaded to perform concatenation, equivalent to
  a call to the HandleCat() function.  The syntax is

  [h1 =] h2 + h3

  This applies only to handles that contain a list of data items.  Both
  h2 and h3 must contain lists of the same type of data.  The list in
  h3 is copied and pasted on the end of h2.  If a left hand side is
  given, it will be assigned the h2 handle value and be equivalent to
  h2.  Most of the time, this is not needed.

  iteration

  The increment operator ++ is overloaded to perform iteration, equivalent
  to a call to HandleNext() or similar functions.  The postfix and prefix
  forms are equivalent.  The return value is simply a copy of the handle,
  so again use in an assignment is unlikely to be needed often.

  There are in addition two new types of variables in scripts:
  zoidlists and layerexprs.  A zoidlist contains a list of trapezoids.
  A layerexpr contains a parse tree for a layer expression.

  Properties of zoidlists

  The math and logical operators are overloaded for zoidlists as follows

    +, |    union
    -       and-not
    *, &    intersection
    ^       exclusive or
    !       inverse

  Properties of layerexprs

  A layerexpr is a parsed layer expression, which can be rapidly
  evaluated.

  These variables can not be assigned, and no operators can be
  applied.  They can be passed to functions only.

* Many new and modified script functions:

xic-2.5.16 Release notes, 10/19/02

* Internal changes to improve error detection and correction.  Certain
  pop-up messages such as warnings about internal inconsistencies that
  have been repaired are now suppressed.

xic-2.5.15 Release notes, 10/3/02

* Major changes to the fill pattern editor.  The confusing logic is
  gone, and transfers are now done with drag/drop.  There are now 64
  default fillpatterns, each of which can be used as a storage
  register.  The default fillpatterns are now saved in a new startup 
  file named xic_stipples, which is provided in the startup directory,
  but can be overridden by the user in the manner of other startup  
  files.  A button in the fill pattern editor allows a new
  xic_stipples file to be dumped into the current directory.  See
  "!help xic:fill" for the new documentation.

* The macro recording facility has been enhanced.  The following changes
  will be noticed by the user:

  1) The argument lists to the BtnDown() and BtnUp() script functions
     have changed.

  2) The four functions BtnDown(), BtnUp(), KeyDown(), KeyUp() can now
     send events to any window that is owned by Xic.  Previously, only
     the main window and viewports could receive events from these
     functions.  Thus, these four functions can now control virtually
     all of the visual interface to Xic.

  3) The format of the BtnDown and BtnUp lines used in the macros file
     .xicmacros is now identical to the script commands.  Thus, the
     macro lines can be executed as script functions.  The reverse is
     not generally true, however.  Macros can use only the four
     functions mentioned above.

  4) When recording a macro, a sequence which would bring up a pop-up
     now actually causes the pop-up to appear.  Previously, this did
     not happen.  In general, menu commands will become active, but
     most subsequent events will be swallowed by the macro recorder.
     In most cases, you can send events to the pop-up by performing
     the actions, which won't be carried out but will be recorded in
     the macro.

xic-2.5.14 Release notes, 9/22/02

* There is now a default password compiled into Xic, which is
  "qwerty".  This password will be used if no other password is
  supplied to Xic with the -K command line option.
  
  This same password must be given to wrencode in order for Xic to use
  encoded scripts with the default password.
 
* There is a new utility in the accessories:  wrsetpass [path_to_xic]
  
  This utility will reset the default password in the Xic binary file
  image whose path is given as an argument.
  
* In previous releases of Xic, the algorithm used to split polygons
  into simpler structures used horizontal polygons exclusively.  This 
  meant that the !split command, for example, would fracture objects
  into smaller objects that would have a definite left-right
  preference.  In the present release, one has the alternative of
  selecting an up-down orientation.  This affects several commands and
  script functions.

* New script function

   (object_handle)
     ClipIntersectCopy(object_handle1, object_handle2, lname, all1, all2)

    This function returns a list of object copies which represent the
    exclusive-or of box, polygon, and wire objects in the two object
    lists passed.

* Empty cells are now displayed by a small highlighting box.
  Previously, these were invisible in the display.

xic-2.5.13 Release notes, 8/27/02

* Miscellaneous improvements to extraction system, in device merging
  and other aspects.

xic-2.5.12 Release notes, 8/22/02

* Bug fix in extraction system

xic-2.5.11 Release notes, 8/16/02

* New ! command:  !helpfixed [ fontfamily-size ]

  This specifies the default fixed font family used in HTML viewer
  (help) windows.  The fixed font is used to render typewriter and
  preformatted text.  Under X-windows, this is the X Library Font
  Descriptor font family name with "-size" appended, where
  size is the base pixel size.  Under Microsoft Windows, this
  command does nothing.

xic-2.5.10 Release notes, 7/30/02

* The electrical-mode properties handling of Xic has been enhanced in
  order to support subcircuit parameters as available in WRspice
  and Hspice.  Subcircuit parameters are described in the WRspice
  documentation for the .subckt line (!help .subckt).

* The properties editor has changed a bit.  A new Add button replaces
  the Name, Model, Value, Initc, and Other buttons.  In electrical
  mode, Add produces a drop-down menu containing these buttons (with
  "Param" replacing "Initc").  In Physical mode, Add will initiate
  property addition directly.  It is now possible to add a Param
  property to a subcell.

* The cell properties editor has also changed slightly.  The Add
  button produces a drop-down menu as before, with a new "Param" entry
  active in electrical mode.  This allows a Param property to be added
  to the current cell, allowing the use of parameters within the cell. 
  The template cell properties are now made insensitive while in
  electrical mode.

* Lots of new tutorial info in the help system.  Type "!help usingxic"
  to access, or select "Using Xic" from the top-level help window.

xic-2.5.9 Release notes, 7/1/02

* New script function

  (int) SortArray(array, size, descend, indices)

    This function will sort the elements of the array passed as the
    first argument.

xic-2.5.8 Release notes, 6/24/02

* The LVS command in the Extract Menu now has its own controlling
  pop-up.

* New `!' command: !logfiles
  This will bring up a file manager pointing to the temporary
  directory used for log files.  "Opening" the entries will bring up a
  file browser pop-up loaded with the selected file.

* New feature: encrypted scripts

  This feature allows script files to be encoded so as to be
  unreadable without a password.  This allows OEMs to provide script
  packages to users while maintaining confidentiality of the script
  content.

xic-2.5.7 Release notes, 6/17/02

* Enhancement of the Cross Section command (in View Menu)

  The Cross Section command will now display layers using the "real"
  layer thickness supplied with the Thickness keyword in layer blocks
  of the technology file.  If the Thickness is not provided, the
  default thickness will be used.  The thicknesses are scaled
  proportionally so the layers will always be visible.  They appear
  with actual thickness when the viewing area is sufficiently small.

* New script functions:

  (object_handle) JoinObjects(object_handle, lname)
  (object_handle) SplitObjects(object_handle, lname)

xic-2.5.4 Release notes, 4/28/02

* The Color Selection pop-up has been modified to allow far more
  colors to be adjusted.  Many more of the attribute colors now can be
  different in electrical and physical modes.

  The Color Selection pop-up has a new pull-down menu plus a "radio
  group" of three buttons.  The three buttons allow the pull down menu
  to contain different sets of entries.  Each entry represents a color
  that can be adjusted.

* New command line option: -Hdirectory_path
  Giving this option will cause Xic to start in the directory given by
  directory_path.  Note that there is no space between H and the path
  string.

* File Selection pop-up changes
  - The File Selection derivative that pops up with the Edit command
    now initially lists the files under Unix/Linux.
  - The File Selection pop-up now separately prints the tree root
    directory and the current directory in the label below the windows.
  - File Selection geegaws:  1) folder icons in directory listing, 2)
    resize handle between the two windows (Unix/Linux only).

* There is no longer a hard limit (was 50) on the number of subcircuit
  connections.

* The functions that generate SPICE output now attempt to keep lines
  below 80 characters, and will add '+' continuations if necessary.

xic-2.5.3 Release notes, 4/14/02

* The Unix/Linux Xic releases now have built-in memory management.
  The built-in memory manager allows Xic to use all available system
  memory, which is not true with the standard memory manager supplied
  with the operating system.  The standard memory manager allows Xic  
  to use less than 1Gb of memory before an out-of-memory error will   
  halt the program.  The built-in memory manager will allow use of
  more than this, assuming that it is available on the system.

* Windows Only:
  No more license server for Windows!  Yes, the annoying license server
  is history.  You will still need a license, however, but the
  authentication is now built into the programs.

* New button in the Attributes Menu, both in the main window and
  subwindows:  Freeze Display

  When pressed, no cell structure is drawn in the window, only the
  grid and the bounding box.  This is for use when working on a large,
  flat cell when it is not necessary to see the structure and it is
  inconvenient to wait for the display.

* New '!' commands

  !bb

    In physical mode, this prints the bounding box coordinates of the
    current cell, in microns.

  !origin x y | n|s|e|w|nw|ne|sw|se

    In physical mode, this will move the cell origin.  This applies a
    translation to every object in the cell, and rebuilds the
    database.

  !import cellname

    In physical mode, this will move the contents of the physical
    part of cellname into the physical part of the current cell (the
    electrical parts are unchanged).

xic-2.5.2 Release notes, 3/31/02

* Revised the handling of cell name clashes when opening new cells.
  The previous behavior was inconsistent in server mode.  

  There are two new variables:
    NoOverwritePhys (boolean)
    MoOverwriteElec (boolean)

  These control the default behavior when a cell from a file being
  read conflicts with the name of a cell already in memory.

* When reading and writing GDSII or CIF, a message is now printed for
  every 100Kb processed, and it is now possible to abort the operation
  with Ctrl-C.

xic-2.5.1 Release notes, 3/24/02

The is the first release of a new (2.5) release branch.  There is no
precipitating major funcional change, just the realiztion that the
previous minor numbers had advanced into the seventies.

* The Edit() script function now returns a status integer.

* New script function

  (int) ToGdsLibrary(gds_name, symbol_list)

    This function will create a GDSII file from a list of cells in
    memory.

* New script functions.  These allow changing the GDSII layer mapping
  through the script interface.

  (int) AddLayerGdsOutMap(lname, layer_num, datatype)
  (int) RemoveLayerGdsOutMap(lname, layer_num, datatype)
  (int) AddLayerGdsInMap(lname, string)
  (int) ClearLayerGdsInMap(lname)
  (int) SetLayerNoDRCdatatype(lname, datatype)

Copyright © Whiteley Research Inc. 2004