Although a comparatively simple piece of software, a layout viewer is not only just a tool for the chip design engineer. Today design's complexity require not only a simple "viewer". Rather, a viewer is the microscope through which the engineer looks at the design.
There are numerous viewers available, but sadly there are not many which satisfy a few basic requirements. Most of them are commercial and expensive. If there is need for a simple, yet powerful viewer - here it is.
The main objective was to focus on the basic functionality but adding some useful features that many, even commercial viewers don't have.
First rarely any tool allows to place two or even more layout files over each other. It often happens that you receive some layers in one file, the other layers in another. Some tools allow to load multiple layouts and switch between the windows. Well, this may help - but still the possibility of overlaying two layouts offers much more comfort.
Sadly, almost no viewer is really precise. There is not much more annoying than a layout that changes when you zoom into it. Or placeholder shapes appearing at some zoom level and disappearing at the next, cell labels that cannot be caught because they jump around when you try to zoom them into view, and many other surprising ways or creative interpretation and optimization. This viewer shows the design as it is.
Only some viewers allow to make layers "transparent". Only this way, a stack of layers can be visualized effectively. In addition, this viewer can animate layers to make them blink or scroll the fill pattern. Animation is a good tool to highlight certain layers.
This viewer allows to display a layer "marked" by drawing a small cross on all shapes. There is no better way to visualize the distribution of a set of sparse error markers on a dense layout!
All comes wrapped in a nice, Qt based state of the art GUI. Usage of the viewer is simple and is similar to that of other tools.
Starting with version 0.15, KLayout is also an editor that allows to change GDS and OASIS files and create them from scratch. See the release notes and the editor mode quickstart manual for a more detailed description. With version 0.22, parametrized cells became available in KLayout. See About PCell's for details about that feature.
KLayout also offers a Ruby-based scripting environment called "RBA" which allows to automate various tasks, mainly in the visualisation area but also for layout generation. In addition there is a macro development environment with a debugger and editor featuring syntax highlighting for example. See About Macro Development and Programming Ruby scripts for details about this feature.
As a second choice, Python is offered as well for scripting. KLayout has a built-in Python and Ruby interpreter. Both work under the same hood and KLayout can execute code from both worlds.
Additional features include DRC, LVS, XOR, layout diff, search & replace, technology package management and a lot more.
KLayout is published under GNU public license GPL version 2 or any later version (www.gnu.org) in compliance with the requirements for using the Qt open source licence. If may be copied and distributed freely.
For more details see here: License.
The current version is 0.28. Although this low number reflects the early stage of development, the version is reasonably stable.
KLayout currently builds on recent Linux installations. Building on MacOS is possible basically. A binary distribution is available for Windows, both 32 and 64 bit (both an installer and a .zip archive with the binaries and libraries). Debian packages are provided for Ubuntu, RPM packages for CentOS and OpenSuSE.
On Windows, KLayout can be built using cygwin, MinGW, MSYS and Microsoft Visual C++. On Linux, gcc or clang are supported. KLayout uses Qt and can be built on Qt4, Qt5 and Qt6. For the script interpreters Ruby 2.x and 3.x are supported. For Python, 2.7, 2.8 and 3.x are supported. For the precise requirements see the download and build page.
The Linux and MinGW build is performed by a simple wrapper shell script rather than some sophisticated configuration setup. Some script options allow configuration of the build. The build system is qmake from the Qt toolkit.
It is possible to build the KLayout code without Qt, rendering a command-line only application. A Python module can be built that includes KLayout's core features for importing into an external Python interpreter.
There is a quick start manual available to explain the basic features. Also for editor mode, a editor mode quickstart manual is provided. More details and documentation can be found on the Main Documentation page. There is also a built-in help system, which can be accessed through the "Help/Assistant" menu.
The issue list for version 0.28 can be found in the known bugs and issues list
KLayout is a living project. The program is being used by people in their daily work already. As my time allows I will gradually enhance and extend the code.
The main development management is done on GitHub (https://github.com/klayout/klayout). Please use their bug tracker to issue bug reports and enhancement requests.
Please feel free to issue feature requests to the mail address listed in the contact page. I am eager to learn about use cases and potential new applications for this tool.