How to create your own Integrated Circuits?

There are basically two options:

Programmable ICs based on pure Logic

Every hardware designer has a deep wish to build his own integrated circuits. I'm no exception on that. The design of real ASICs (Application Specific Integrated Circuits) or so called full-custom chips is very expensive. For hardware hobbyists or for small-scale companies it is almost completely impossible to take this approach.

For that reason, most electronic devices (except mass-production stuff) from the seventies and the eighties were completely messed up with simple ICs such as logic gates, flipflops, etc. Of course, that was already a very big advantage in comparison to designs built completely out of discrete transistors.

Back to the roots of my hardware activities in the beginning of the nineties, I started to use so-called GALs (Generic Array Logic) for my designs. These were rather small programmable logic devices. But many things could be implemented there that would require lots of standard ICs otherwise.

Later, Lattice Semiconductor (on of the inventors of programmable logic devices) introduced the so-called ispLSI (in system programmable Large Scale Integration) series. The ispLSI series belongs to the class of CPLDs (Complex Programmable Logic Devices). Roughly explained, the ispLSI devices combine multiple GALs in one chip while adding many additional features. One feature is the "in system progammability". This removes the need of special programming hardware - the chips are just soldered onto the board and can be programmed (and, of course, also re-programmed) later.

At the university I worked also with FPGAs (Field Programmable Gate Arrays), especially with the ORCA series introduced by Lucent Technologies. Typically, FPGAs have a much higher gate count than CPLDs. So they are a good choice for data path intensive designs. In contrast, CPLDs are a good solution for ultra-fast control paths.

In the year 2002, Lattice finally bought the FPGA branch of Lucent and continued manufacturing and developing these ORCA FPGAs (what a coincidence :-). Since my need for gate count for my private projects has increased over the time, I liked using these ORCA FPGAs there as well. However, unfortunately Lattice did not release free development tools for these FPGAs that time and so I migrated to the biggest competitor: Xilinx In the mean time, FPGA technology evolved further and almost every vendor is providing free tools for their entry-level devices. Even more, prices for full-blown development tools dropped to a level so that they became affordable for non-commercial use.

For more information about Lattice and Xilinx see their respective web sites:

No, I do not get money from these companies and there are many others active in the area of programmable hardware. Perhaps I can provide a more complete list here some day...

Programmable ICs based on Micro Controllers

Another approach for putting some functionality into a single chip is to use some micro controller. The fundamental difference between a micro controller and a programmable logic device is that the micro controller is working like a computer that is executing a programm. In contrast, a programmable logic device is being programmed in order to calculate some boolean equations and to store some values in flip flops etc. Also, a programmable logic device is massively parallel and everything is done concurrently. Instead, a micro controller can only execute one program at a time and even this has to be done step by step (instruction by instruction). Hence, a certain functionality that could be done within one clock cylce in an FPGA might need hundreads of cycles in a micro controller.

Anyways, micro controllers are getting more and more important and also become more and more sophisticated. They include a CPU, ROM, RAM, programmable IO-lines, and - depending from the type - lots of special-function units.

Micro controllers are primarily used in areas where speed is not a major concern. When it's going to embedded controlling systems with rather complicated algorithms it is mostly nonsense and even impossible to implement this functionality in a programmable logic device. Sometimes micro controllers are even implemented inside programmable logic devices to get things done (as soft- or hardcore). Due to power- and space-saving reasons it is also not feasible to make use of standard desktop processors together with all the things required around it.

So far I have been working with PIC microcontrollers from Microchip and 8051 derivates from Cypress.

Last modified: 23. January 2017 by Mario Trams