Xic Graphical Editor
IC Design Software for Unix/Linux and Windows
Whiteley Research Inc., 456 Flora Vista Avenue, Sunnyvale CA 94086    wrcad.com
Xic Graphical Input Editor
Whiteley Research Inc.,     wrcad.com

Click here to browse the on-line Xic manual.
Click here to enter the on-line Xic help system.

Xic  is a full-featured physical layout editor, schematic editor, and analysis tool. In the physical editing mode, Xic is a hierarchical mask layout editor, with interactive and batch mode design rule checking, arbitrary angle polygon support, topological and parametric extraction, and many other advanced features. In electrical layout mode, Xic serves as a hierarchical electrical schematic editor and schematic capture front end. In the XicTools environment (i.e., with the WRspice program also installed), circuit simulation can be performed and results analyzed from within Xic.

Xic is available for Linux, Apple OS X, and Microsoft Windows.

Despite the array of features, Xic is intended to be straightforward and intuitive to use. A unique dual responsiveness to click and press/drag mouse input enhances productivity.

Xic has complete and extensive on-line documentation available through an HTML-based help system. This help system can easily be augmented and customized by the user, so that the user's design rules and tips, and other technical information can be made available from within Xic through only a few keystrokes or mouse operations. In addition, the help viewer functions as a web browser (though only HTML-3.2 compliant, so most web pages will not display correctly) for convenient access to internet resources, and can function as a graphical interface for user-generated scripts.

Xic is internet aware, and can even open input files served via HTTP or FTP on any accessible remote machine.

Xic has extensive capabilities for converting between various layout file formats, while optionally performing scaling, windowing and flattening operations, with or without reading the source file into the graphical editor.

Xic can read and write the following file formats:

    This is the industry-standard binary data format, up to format release 7 is supported. Compressed GDSII files (using gzip format) can be read or written on-the-fly.

    Support for the Open Artwork System Interchange Standard, a new format developed by the SEMI organization, is included. More information is available here.

  • CIF
    A popular ASCII file format.

  • CGX
    CGX (Computer Graphics eXchange) is a binary format developed by Whiteley Research and placed in the public domain. It is similar to GDSII, yet greatly reduces file size and is more efficient to read and write. Compressed CGX files (using gzip format) can be read or written on-the-fly.

  • Native
    The native format is a CIF-like ASCII format where each cell is a separate file.

  • Text-mode GDSII
    Xic can convert GDSII files into an equivalent ASCII representation, and back. This can be used as a diagnostic, and to repair or modify GDSII files.

  • OpenAccess
    This in not a file format, but a standard design detabase used with Cadence Virtuoso and other products from various vendors. Xic can link to the OpenAccess database provided with Virtuoso or the Synopsys PyCell Studio, or from another source, such as a local compilation of the OpenAccess source code. Virtuoso cells (not PCells) can be imported directly into Xic, however the reverse is not (yet) possible.

Any of these file types can be read by Xic (Xic automatically determines the file type) or be converted, perhaps with windowing, scaling, or flattening, to another of the file types. Data input in a given format will remain in that format when written, unless explicitly converted. Xic also has the unique ability to generate its own technology database on-the-fly while reading any format input file. Any GDSII file (for example) can therefore be read into Xic without prior knowledge about what the file contains.

Xic includes a powerful C-like native scripting language for implementing user-defined commands and parameterized cells. Xic allows users to write custom commands which appear as buttons in the "User" menu. These commands can utilize a rich library of primitives for controlling the operation of Xic, producing geometrical manipulations or providing analysis, and other operations. A debugging window is provided that allows single stepping through scripts, breakpoint setting, editing, and other functions.

Scripting can also use the popular Python and Tcl/Tk languages. Most of the library functions are exported through wrappers and are thus available in these languages. Synopsys/Ciranova Python-based portable PCells ("PyCells") are supported, with the stretch handle and auto-abutment protocols implemented internally and thus usable from any of the supported languages.

Native language scripts are just-in-time compiled, and a function is compiled only once while it remains in memory, so that execution is highly efficient. Graphics can be exported to foreign X-windows, thus it is possible to create custom graphical interfaces to Xic using Tk or Python.

One popular use of the user scripting capability is to create simple, menu-based commands or parameterized cells for creating certain geometrical objects, which are often needed in high frequency circuit design. However, the user's imagination will almost certainly lead to other uses of this extremely flexible facility, to provide time saving automation of the user's specific design tasks.

Attention OEMs!
Xic is unique in having a facility for exporting design manipulation and rendering capability as a "back end" for a custom design automation system. A unique "server mode" allows Xic to operate as a 'daemon', performing remote number-crunching geometrical tasks in support of the user's custom front-end.
  • The Scripting Interface
    Xic includes a built-in script compiler and extensive script function library.

  • Server Mode
    Xic can operate as a server, or "daemon". While in this mode, Xic communicates through a BSD socket, and normal graphics and console output are suppressed. Commands, in the form of native script language statements and functions, are sent to Xic via the socket. Graphics can be exported to a Tk or other X-window.

  • Batch Mode
    Xic can perform batch-mode processing of design data. As in server mode, normal graphics and console output are suppressed, though graphics can be exported. Operation is controlled by a script, and the process terminates when the script completes, unlike server mode where the process remains active.

With powerful and highly efficient geometric manipulation and measurement, layer synthesis, hierarchy management and format conversion capabilities, not to mention DRC, extraction, and a host of other capabilities, Xic may well be the engine for the custom tool you envision. Use of Xic instead of developing custom software is a no-brainer. Whiteley Research will work with you. If you need a special feature or hook, and the request is reasonable, you'll get it. Much of the existing interface has been developed in response to customer requests.

Hard copy support is available for a variety of printers and file formats, including Postscript (mono and color), HP laser, and HPGL. Export to all popular image formats is available.

In physical mode, design rule checking can be performed as each new object is created or modified. The user is given complete control over the design rules, which can be edited, disabled, or rules added interactively. The user can initiate batch mode design rule checking over a given area or over a complete cell in the foreground or background. Design rule checking is performed over a pseudo-flat internal representation of the layout, so that physical rules are checked without any constraint based on which subcells contain the geometry.

Xic has an extraction menu which allows netlist and parameter extraction from physical data, and layout vs. schematic (LVS) checking to ensure error-free designs. A unique "paths" command highlights all objects electrically connected to a selected conducting object. Internal algorithms provide extraction of resistance, capacitance, inductance, and transmission line parameters (assuming microstripline geometry), and extraction of arbitrary device types as defined in the technology file. Xic can build or update a working schematic from a physical layout or a SPICE file. Xic contains an interface to the FasterCap program from FastFieldSolvers.com for three-dimensional capacitance extraction, as well as to the open-source FastCap and FastHenry programs, the latter for three-dimensional inductance extraction.

Default SPICE interface support is provided for a wide variety of devices, even Josephson junctions. Additional devices and subcircuits can easily be added by the user, or changes can be made to existing devices, by editing a single text file. Xic also provides a high-powered model library search engine compatible with any SPICE format model or subcircuit library files, such as those provided by semiconductor manufacturers.

When the WRspice simulator is available, Xic works seamlessly with WRspice, giving the illusion of a single application. Simulation can be initiated, controlled, and results plotted through Xic. The WRspice binary need not be local, one only needs connectivity to a machine with a licensed copy of WRspice.

Below are some of the interesting new features, as clipped from the release notes at the time the feature was added. Xic continues to evolve in response to customer requests and new technology development.

New Features in Xic-2

Server Mode

Xic now supports a "server mode" where Xic can serve as a "back end" for the user's or a third party application, performing the database manipulation tasks. In this mode, Xic can even export graphical rendering capability to an arbitrary X window.

Parameterized Cells

Xic now supports parameterized cells (PCells). These cells contain a script which is executed, with a given parameter set, when the cell is instantiated, providing differing geometry based on the parameters. Parameterized cells can be used to implement devices, contacts, and vias, often replacing dozens or hundreds of fixed-geometry cells, thus streamlining layout and reducing errors.

Executable Labels

Xic now supports executable labels. Clicking on this type of label will execute a script.

Native Library Files

Xic supports a new library file type which can provide multiple levels of indirection to symbol files. The symbols can be extracted from GDSII, CGX, OASIS, or CIF archives.

Object Polymorphism

Xic now supports modification of object geometry by setting properties.

Remote Data Access

Xic can now open design files on remote systems through FTP or HTTP protocol transfers. The Xic/WRspice help system now accepts general URL's, so that help windows can view web pages from the internet. You can even use this to download updates from this web site.

New Features in Xic-3


Xic Generation 3 has built-in capability for automatically checking for update availability, and for actually downloading and installing updates. After installing for the first time, the !passwd command should be run to enable these features.


The code base was extensively reorganized, and subsystems have been modularized. Now, the programs are linked only with the needed modules. Previously, all functionality was linked, but unused features were disabled.

Separation of Electrical/Physical Data

The method by which electrical and physical data are associated has changed. In previous releases, symbol names were saved in a single hash table. The hash element contained cell definitions for the physical and electrical cells, which can be empty. The problem with this approach is that if there is no electrical data, which is true in many environments and is always true in XicII, the empty electrical cell definitions waste memory.

In Generation 3, electrical and physical cells have separate hash tables, so there is no longer storage required for empty cell stubs. This uses less memory when working (for example) with physical data only.

On-Screen Rendering

In Generation 3, all graphical layout displays are composed in local memory, which is then sent as a block to the graphics system. Previously, the graphics system (X windows) performed the rendering. The new approach can be hugely faster, particularly when running remotely over a relatively slow connection.


In older releases, use was made internally of an "archive context" data structure, that is a compact representation of a cell hierarchy with offsets into a layout file. This structure allows efficient access to the cells within the layout file, and provides the ability to work with files that are too large to reside in memory.

In Generation 3, this structure is called a "Cell Hierarchy Digest" (CHD) and given a more accessible and prominent position in the program interface.

New in Generation 3 is a companion data structure called a "Cell Geometry Digest" (CGD). This is a hash table that, for a cell name and layer, provides a highly compressed byte string that represents cell geometry.

A CGD can be linked to a CHD, in which case file reading operations through the CHD will retrieve geometrical data from the CGD instead of from the original layout file. Since both the CHD and CGD are in memory, this should be much faster than reading the layout file on disk.

There are new pop-ups which provide access to the saved CHDs and CGDs, and initiate various operations. One operation of interest is the ability to display a layout through a CHD. In this case, only the CHD resides in memory, allowing viewing of files that are far too large to be viewed in the normal way.

Another new feature is the "cell override table" which, when a file is accessed through a CHD, certain cells will be overridden by cells in memory. This allows editing of files that are too huge to fit in memory.

Xic can be used as a "geometry server" to provide access to cell geometry on a per-cell/per-layer basis to other hosts on a network.

File Merging and Assembly

A new "reference cell" feature allows a cell to act as a pointer to a file hierarchy stored in a file on disk. Reference cells can be placed in a layout in the normal way. When the layout is saved to an archive file, the reference cell is replaced with the actual cell hierarchy extracted from the referenced layout file, streamed into the new file. This can be used to create layout files containing much more data than can fit into memory.

A similar capability is provided by the Layout File Merge Tool, which is a panel which provides a graphical front-end to the !assemble command. This provides a means for merging cell hierarchies from multiple layout files into a single file, allowing transformations, windowing, etc.

Layer Table and Layer Palette

The previous method of displaying layers, using up/down buttons to advance to a new line of layers, was cumbersome at best for layouts with many layers.

In Generation 3, the up/down buttons are gone, and instead a scrollbar is provided. The scrollbar enables scrolling through all of the layers in use, which is far easier that clicking the buttons.

To make available a subset of layers in which the user has particular interest, a Layer Palette pop-up is available. The top part of the pop-up displays information about the layer under the mouse pointer. Below this info area are two rows that may contain layer icons, as in the layer table. The first row shows the last few "current layer" selections. The second row contains a "sticky" area, where layers can be dragged from the layer table and dropped. Clicking on any of these layers has the same effect as a similar click in the layer table.

Enhanced Library Support, Immutable Cells

The library support, whereby cells can be opened via indirection through library files, has been enhanced. Cells opened through the library mechanism by default have the new IMMUTABLE and LIBRARY flags set. The IMMUTABLE flag means that the cell is read-only. The LIBRARY flag means that the cell won't be included when writing a layout file. The user can set/unset these flags, and thereby has great control over which cells are written to output.

New Features in Xic-4

Limited Virtuoso Compatibility

For example, read in the Cadence drf and technology files directly, it may be no longer necessary to create a native technology file.

OpenAccess input/output

Hook directly to a Cadence OpenAccess database, or your own.

Support for Python PCells, and Much, Much More...

Click HERE to read the changes document.

Copyright © Whiteley Research Inc. 2017