Xictools Save

XicTools: Xic graphical editor, WRspice circuit simulator, and accessories. for electronic design.

Project README
              XicTools Open-Source  Release
                     October 1, 2017
                   Revised May 29, 2022

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.

  1. 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.

  1. 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

  1. Building the XicTools

3.1. Prerequisites

CentOS/RedHat Linux is the reference platform. You should have success building the tools on Linux and Linux-like operating systems and environments. These include Cygwin and MSYS2 on Windows, and OSX with MacPorts.

You will need to be familiar with makefiles, compilers, and the tools needed to build Linux programs.

You will need to have the development versions of lots of different libraries installed, including GTK. As you encounter missing headers, etc., these should be installed on your system from your operating system source repositories. You of course need the basic software development tools installed. It can be a bit of a challenge to figure out which packages to install, Google is your friend.

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

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, gtk2, ncurses

The gtk2 package will bring in a large number of dependent packages.

Below are lists of package names that I had to install on some operating systems.

You must have root permission to install packages on Linux.

Ubuntu 20 Debian 11 These use the same packages. The "build-essential" provides the program development toolchain. The package names can be listed after "apt install", or the command can be invoked on the packages individually or in smaller groups.

apt install build-essential autoconf automake flex bison gpp git libgtk2.0-dev libgsl-dev libtiff-dev libjpeg-dev libncurses5-dev

Fedora 35/36 In Fedora, the development tools are preinstalled, but you have to install g++ to get C++ support. Again, packages can be installed one at a time or in groups.

dnf install autoconf automake flex bison patch g++ gpp gtk2-devel
gsl-devel rpm-build libjpeg-turbo-devel ncurses-devel

CentOS 8 Stream / Rocky 8/ Red Hat 8 The first line installs the development tools, including for C++.

COMMON| dnf group install "Development Tools"
      | dnf install gsl-devel ncurses-devel libtiff-devel libjpeg-devel
GTK   | dnf install gtk2-devel
QT-5  | dnf install qt5-qtbase-devel

3.2. Build Procedure for Linux

The procedure is as follows.

1.  Copy Makefile.sample into Makefile, edit Makefile to set the
    configuration flags, as described in the Makefile.
2.  "make config" will configure the source tree to your build
    environment.
3.  "make all" will build all of the programs.
4.  Thereafter, after changes, do "make reconfig" followed by
    "make all".

The intended installation procedure is to first build a binary package (e.g., RPM) for each program, then install the packages on your system using the wr_install script. The Makefiles will actually prevent running "make install" to the default location under /usr/local. However, you can modify the Makefiles to allow this, and skip the packaging step entirely if you wish. However, if you don't install from the packages, you won't have the "Safe Install" feature, see http://wrcad.com for info about the packages. Basically, if you are a "user", you probably want to install with packages. If you are a "developer", you may wish to enable direct installation.

5. "make packages" will create all of the package files.
   Packages are left in xt/xt_base/packages/pkgfiles.

6. cd xt_base/packages/pkgfiles; ../util/wr_install all
   This will install the programs from the package files.

7. Set your shell search path to include the main XicTools
   bin, by default /usr/local/xictools/bin.

3.3 Windows

Currently the MSYS2/MINGWx64 environment is used to build and run on Windows. The user will have to install this environment, or at least the run-time components. This replaces the "gtk2-bundle" which provided the needed libraries previously and was distributed with the programs.

Go to msys2.org, download and run the installer, and follow the instructions, using the defaults. When done you will have a shell window on screen. Add packages as needed, but you will want the development toolchain for mingw64:

pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain

Add the vim editor, the winpty program needed to run wrspice, and the mingw64 versions of the gtk2 and gsl libraries.

pacman -S vim
pacman -S winpty
pacman -S mingw_w64-x86_64-gtk2
pacman -S mingw_w64-x86_64-gsl

Use the vim editor to edit the .bash_profile file that exists in the current (and home) directory adding the following lines to the bottom of the file.

mount c:/usr/local/xictools /usr/local/xictools
export PATH="/usr/local/xictools/bin:$PATH"
export XT_HOMEDIR=c:/msys64/home/<your_username>

Of course, replace <your_username> with the correct text.

Also used is the inno-setup 5.5.9 packager (http://www.jrsoftware.org/). You might wish to get this (or a newer release) if you intend to produce packages for Windows. The XicTools Makefile assumes that this is installed at c:/inno-5.5.9 which is mounted on /inno-5.5.9 in MSYS2.

To start the shell window the next time, click "MSYS2 64bit" in the Start menu, then click "MSYS2 MinGW x64" in the sub-menu. This provides the MSYS2 shell environment with support for mingw64. MinGW is "minimal Gnu (for) Windows" and is a library that provides a limited Linux-like programming environment under Windows. The XicTools programs use this environment and are thus Windows-native programs.

This is about complete to build XicTools, but there may be a thing or two missing. You will have to use the "pacman" package manager commands to find the package needed, then use commands like above to install it.

You will run the installer in the future to update your packages, and to add packages needed later.

The actual build procedure follows the Linux procedure above.

3.4 OS X

You will need xcode, the X-Quartz X-Windows server, and the MacPorts gtk2 libraries.

  1. Install xcode This is Apple's development package, available as a download from the App store.

  2. Install the "command line tools" Install this by giving the following command in a terminal window: xcode-select --install

  3. Run xcode to sign off on the license agreement. Give the following command and agree to the terms: xcodebuild -license

  4. To run the programs you will need an X11 server. The recommended server is XQuartz (www.xquartz.org). This is the "official" X server for the Mac, however others are available, including one through macports. Follow the instructions to install and start the server.

  5. Download the MacPorts installer from macports.org. This provides the graphical libraries used by the programs. Following the instructions, install MacPorts for your operating system. Be sure to install the default package which installs in the default location (i.e., don't build from source and change the location).

    Once the basic installation is done, run, as root, the following commands:

    port -v selfupdate port install gtk2 port install gsl port install python2_select port install python27 port install autoconf port install pkgconfig

  6. Set your shell search path to include /usr/local/xictools/bin.

You should now be able to build XicTools folling the procedure above for Linux.

Open Source Agenda is not affiliated with "Xictools" Project. README Source: wrcad/xictools
Stars
126
Open Issues
18
Last Commit
5 days ago
Repository
Homepage

Open Source Agenda Badge

Open Source Agenda Rating