Xictools
XicTools: Xic graphical editor, WRspice circuit simulator, and accessories. for electronic design.
Install / Use
/learn @wrcad/XictoolsREADME
XicTools Open-Source Release
October 1, 2017
Revised May 29, 2022
Revised June 18, 2024
Whiteley Research is pleased to offer the XicTools programs: Xic (graphical editor) and WRspice (circuit simulator) as open-source. The two programs have sold commercially for more than 20 years, having been updated steadily along the way. However, a lot more development is required to increase usage, and Stephen Whiteley, the author of most of this, is ready to try a new approach.
It is expected that these programs will enjoy accelerated development in an open-source environment, with the contributions of one and all adding capability. One day they may become widely used and known for stability and available on-line support through user and developer groups. With this critical mass, the programs may become a viable choice for foundry users, particularly those who may lack the resources to pay for the Big Box tools. This would never be achieved with a proprietary software model given the limited capabilities of a tiny company such as Whiteley Research.
The XicTools software is being released under the Apache-2.0 license, which is actually one of the most "free" licenses available. One is not restricted in using this software in a commercial environment, or in commercial products. There is no requirement that you must share your source code if you use this. The code can be redistributed with few restrictions. See the LICENSE-2.0.txt file for the wording of the license. Basically, if you are commercial and this software can add to your bottom line, go for it, and we might even help you!
However, this software, like virtually all software, has a history. Much of it originalted from places like the University of California, Berkeley (e.g., WRspice is a direct descendent of Berleley Spice). There are bits and pieces that come from other universities. The university licenses are also very unrestrictive and likely highly compatible with the Apache-2.0 license (remember that if you paid US taxes, you almost certainly paid for the software developed at the university).
At least one accessory (the help viewer) is tainted by the GNU library license. So, at the time of this initial release, there may be some question as to whether the full terms of the Apache-2.0 license apply in some cases. This shall presumably be clarified in the future. All old headers have been retained, so users can make their own judgement about the constraints on a given set of files. Incorporating a better HTML viewer, that understands CSS, should be a priority.
- Overview - What's Here
The distribution consists of several semi-independent programs and libraries, rooted in subdirectories. These are described below.
adms This is a wrapper around the adms tool for creating run-time loadable device models for WRspice.
fastcap This is a customized version of the venerable capacitance extraction program from MIT. It is called from within Xic for capacitance extraction of layouts, and can be used stand-alone as well.
fasthenry This is a customized version of the venerable inductance extraction program from MIT. It is called from within Xic for inductance extraction of layouts, and can be used stand-alone as well.
KLU This is simply a wrapper around the SuiteSparse sparse matrix package written by Timothy A. Davis, available from http://faculty.cse.tamu.edu/davis/suitesparse.html
The provided makefile operates on the SuiteSparse distribution file, applying needed patches, compiling and linking. The reslt is a run-time loadble module which provides the sparse matrix capability, for use with WRspice (or any other application with a suitable interface). WRspice does not require this plug-in, but will employ it when provided. Use of the SuiteSparse package generally reduces simulation time.
mozy The mozy package contains the help system and viewer used by Xic and WRspice, including an http/ftp file transfer utility, and a screen capture into image file utility. This code (and only this program code) is derived from GNU-licensed code. Commercial users may wish to build the XicTools without the mozy package, which is a top-level option.
mrouter The MRouter is derived from the Qrouter maze router by Tim Edwards, available at http://www.opencircuitdesign.com. It may be used as a stand-alone tool similar to Qrouter, or run-time loaded into Xic as a plug-in, in which case its functionality is available within Xic. This integration is at a very early development stage.
secure (aka xtlserv) This package provides the license server, client-side code, and license-generating utilities for the licensing system used with the commercial version of Xic and WRspice. This, of course, is no longer used. This package is retained, for now at least, in the chance that it may be of value to someone.
vl This is a Verilog simulator, which is integrated with WRspice but can be used as a stand-alone non-graphical simulator.
wrspice The WRspice program is a SPICE-derived circuit simulator.
xic The Xic program is a graphical editor, used for displaying and editing layouts and schematics. It provides DRC, extraction, and a lot of other capability.
xt_base This contains base libraries and configuration scripts for use with the other packages.
- Dependencies
wrspice mozy (optional) xt_base KLU vl
xic mozy (optional) xt_base mrouter
mozy xt_base
vl xt_base
adms fastcap fasthenry xt_base
- Building the XicTools
3.1 Graphics Toolkit
The Xic, WRspice and other graphical programs have historically used the GTK-2.0 toolkit. This, however, is rather old and obsolete. After an abortive effort to migrate to GTK-3.0 (which is also obsolete but less so) it became clear that a major change of direction was required, and a huge effort was initiated to switch to the Qt toolkit. This is done, but use will likely uncover things that need fixing.
Status as of April 27, 2024
- The GTK-2.0 remains as the "reference".
- Pre-built packages use the GTK-2.0 toolkit.
- The GTK version should be considered as approaching "end of life".
- Qt releases are equivalent and users are encouraged to try them.
- New features will be developed in the Qt branch, and may not be ported to the GTK branch.
Status as of September 17, 2024
- The build and packaging systems can generate and contain separate binaries for GTK2, Qt-5, and Qt-6 toolkits. This is temporary, as GTK2 will go away at some point.
- Pre-built packages contain GTK2 and Qt binaries.
3.2 Packages vs. Building from Source
Historically, pre-built packages were available for various operating systems on wrcad.com. However, due to time constraints the packages have not kept up with operating system or code changes, and only Windows may have reasonably current packages available.
The plan is to drop packages entirely, and instead users will build from source. By providing detailed information and possibly automation scripts, building from source should be easy for most users. This will provide several advantages for users:
- The tools can be updated through a simple command, and rebuilt.
- If the operating system is updated, the tools can be rebuilt if necessary.
- Users can track either the "master" branch, which is stable, or the "devel" branch, which contains the latest code, or both.
- Users can control aspects of the build, such as file locations, GTK vs. Qt, etc.
- We at the factory can focus on improving the programs instead of churning out and uploading package files.
- The make system used to build the programs can also generate package files, so if anyone wants to produce their own, this is possible.
3.3 Building from Source, Prerequisites
The XicTools can be built on macOS with MacPorts, Windows with MSYS2, or any reasonably current Linux system.
In general, it will be helpful to have some familiarity with building open-source software, with makefiles, compilers, and the tools needed to build and maintain Linux programs. However, this is mostly for cases when something goes wrong, so the user can diagnose and fix a problem. Eventually, we hope to make everything "just work" with no intervention required, but this will take time to evolve.
Your system will need to have the standard software development tools and utilities. You will also need to have the development versions of several different libraries installed. As you encounter missing header files, etc., these should be installed on your system from your operating system source repositories. It can be a bit of a challenge to figure out which packages to install, Google is your friend. Requirements are partially listed below for various operating systems.
3.3.a Installing Needed Packages on Linux
To install system software on Linux, you will need root permission, or an IT department that can do this for you. If you are already in a corporate software development environment, then this software will quite likely be installed already, as it is at Synopsys, for example.
Programs and Utilities: There may be a meta-package containing the development toolchain, which should be installed. These programs may be missing and would require installation.
git, autoconf, flex, bison, pkg-config (GTK only)
Libraries and Development Packages: Often, the basic libraries are provided, but a separate "devel" package contains the include files needed to compile programs with the libraries. If a build fails with a missing header (.h) file, the game is to figure out which development package provides it, and install the package. In other cases, the library may be wholly missing, so both the library and development packages should be installed. Install the devel version, which will also install the bare library if necessary.
libgsl, libjpeg, libtiff, ncurses gtk2 (GTK only) Qt5 (For Q
