Python module for creation and manipulation of GDSII files.
# GDSTK README
[![Boost Software License - Version 1.0](https://img.shields.io/github/license/heitzmann/gdstk.svg)](https://www.boost.org/LICENSE_1_0.txt) [![Tests Runner](https://github.com/heitzmann/gdstk/workflows/Tests%20Runner/badge.svg)](https://github.com/heitzmann/gdstk/actions) [![Publish Docs](https://github.com/heitzmann/gdstk/workflows/Publish%20Docs/badge.svg)](http://heitzmann.github.io/gdstk) [![Downloads](https://img.shields.io/github/downloads/heitzmann/gdstk/total.svg)](https://github.com/heitzmann/gdstk/releases)
Gdstk (GDSII Tool Kit) is a C++ library for creation and manipulation of GDSII and OASIS files. It is also available as a Python module meant to be a successor to [Gdspy](https://github.com/heitzmann/gdspy).
Key features for the creation of complex CAD layouts are included:
Boolean operations on polygons (AND, OR, NOT, XOR) based on clipping algorithm
Polygon offset (inward and outward rescaling of polygons)
Efficient point-in-polygon solutions for large array sets
Typical applications of Gdstk are in the fields of electronic chip design, planar lightwave circuit design, and mechanical engineering.
The complete documentation is available [here](http://heitzmann.github.io/gdstk).
The source files can be found in the _docs_ directory.
### C++ library only
The C++ library is meant to be used by including it in your own source code.
If you prefer to install a static library, the included _CMakeLists.txt_ should be a good starting option (use -DCMAKE_INSTALL_PREFIX=path to control the installation path):
`sh cmake -S . -B build cmake --build build --target install `
The library depends on [zlib](https://zlib.net/).
### Python wrapper
The Python module can be installed via Conda (recommended) or compiled directly from source. It depends on:
[Sphinx](https://www.sphinx-doc.org/), [Read the Docs Theme](https://sphinx-rtd-theme.readthedocs.io/), and [Sphinx Inline Tabs](https://sphinx-inline-tabs.readthedocs.io/) (to build the [documentation](http://heitzmann.github.io/gdstk))
Windows users are suggested to install via [Conda](https://www.anaconda.com/) using the available [conda-forge recipe](https://github.com/conda-forge/gdstk-feedstock). The recipe works on MacOS and Linux as well.
To install in a new Conda environment:
`sh # Create a new conda environment named gdstk conda create -n gdstk -c conda-forge --strict-channel-priority # Activate the new environment conda activate gdstk # Install gdstk conda install gdstk `
To use an existing environment, make sure it is configured to prioritize the conda-forge channel:
`sh # Configure the conda-forge channel conda config --env --add channels conda-forge conda config --env --set channel_priority strict # Install gdstk conda install gdstk `
#### From source
The module must be linked aginst zlib. The included CMakeLists.txt file can be used as a guide.
Installation from source should follow the usual method (there is no need to compile the static library beforehand):
`sh python setup.py install `
Help support Gdstk development by [donating via PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=JD2EUE2WPPBQQ)
The _benchmarks_ directory contains a few tests to compare the performance gain of the Python interface versus Gdspy. They are only for reference; the real improvement is heavily dependent on the type of layout and features used. If maximal performance is important, the library should be used directly from C++, without the Python interface.
Timing results were obtained with Python 3.10 on an Intel Core i7-3820. They represent the best average time to run each function out of 16 sets of 8 runs each.
Memory usage per object for 100000 objects:
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.