Xschem and the Chip Revolution
Insights and excerpts from our interview with Stefan Schippers, Creator of Xschem
Before open source tools were available, I used Cadence (a commercial chip design tool) at work developing chips. Cadence was a very big program that needed endless time to start, and if it crashed, you had to start it over again. You could go for a coffee and when you get back, the program may not even be up and running. It also has a huge footprint, there were crashes we had at work due to memory exhaust because the program kept growing. In cadence even a small amplifier with let's say, 20 transistors, took 30 seconds to get a netlist. So if you are able to immediately get a net list, immediately run a simulation and immediately see the result your productivity would increase. It was also extremely difficult to edit schematic properties in systems like cadence which is another reason I started xschem. In xschem, all the files saved for schematic symbols are text files. So you can edit these files with a text editor, and you can even create schematics this way.
I started to develop xschem in 1998, and for a long time, it was just a hobby project with slow progress. It was not even considered to be useful for other people. xschem was the only tool that could be used for real VLSI design that was also open source. Which naturally means xschem is kind of old school, but this does not mean it is useless or obsolete. It's just using an old approach. But as a result, it has a very low dependency list on libraries or systems.
I decided, for the user interface, to use TCLTK. TCLTK is a scripting language, which provides a set of tools for building the user interface. With other languages, you waste time fighting with the user interface. But with xschem, my time spent on the user interface has been a very small fraction of the development of the whole program. I can even compile xschem and run xschem with old TCLTK libraries, which is a common problem for systems like Cadence.
Then, around 2016, I decided to put xschem on sourceforge, and then in 2018, I decided to put it on GitHub. So I had a public repository for other people to use the tool. Then the real boost in xschem was when I was asked to join the SkyWater project. Until recently it was just me working on development. I now have a second developer and she is developing a native window executable, so it can run on windows.
I have made a lot of additions to xschem in the last year. For example, the program can now handle multiple tabs, multiple schematics. This looks, a small change, but when you program this, you need to do a lot of stuff to avoid the global state in the program because you have multiple global states. So you have to reformat the program and correct a lot of things, many global variables. Another addition I made is the ability for xschem to view waveform graphs in the schematic. Because you said, there are few good analog schematic tools in the open source, and I can add, there are no good analog waveform viewers in the open source world.
I believe in the 10-90 rule, that 10% of the users who have problems ask 90% of the questions. Some are power users, and they discover real bugs in the program and they are very useful to me. Some just don't read the documentation, and if you start using the program and you don't read the documentation or even worse, some don't even have a clear understanding of the operating system. It's very hard to explain if they are not familiar with the system.I try to be as useful as possible, but in some cases I have to say okay, read this manual, or read this one. I get the same question many times and this is probably something I want to avoid. If you want your program to be successful and to be used by the most amount of people possible, the documentation is the most important thing, together with error checking and not crashing.
Xschem is also used by some small companies in various industries. One is a company writing hard net chips for space applications. Another one is in Canada and is using xschem to develop sensors. These are small startups who cannot afford the huge price for cadence licenses.
I think xschem has the potential to close the gap with more complex software like synopsis or cadence, but just for schematics. Which are only a portion of those commercial tools.I live for other developers to write the next generation software. For the time being, I just want to scheme to be usable to get the work done, have a low footprint and just be as useful as possible. For the brand new tools, the brand new user interfaces I leave this to others, of course, because I don't want to write the second program. I am too old for that.