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)