Table Of Contents

Next topic

gdsii — GDSII manipulation library

This Page

Welcome to python-gdsii’s documentation!

python-gdsii is a library that can be used to read, create, modify and save GDSII files. It supports both low-level record I/O and high level interface to GDSII libraries (databases), structures, and elements.

This package also includes scripts that can be used to convert binary GDS file to a simple text format (gds2txt), YAML (gds2yaml), and from text format back to GDSII (txt2gds).



python-gdsii can be downloaded from its Python Package Index page. The source code repository is available on


For most cases interface provided by Library class from gdsii.library should be enough. Here is a small example:

from gdsii.library import Library
from gdsii.elements import *

# read a library from a file
with open('file.gds', 'rb') as stream:
    lib = Library.load(stream)

# let's move the first structure to a new library
new_lib = Library(5, b'NEWLIB.DB', 1e-9, 0.001)
struc = lib.pop(0) # libraries and structures are derived from list class

# let's also add some elements...
# Note: first and last points in the boundary should be the same
#       this is required by GDSII spec.
struc.append(Boundary(45, 0, [(-100000, -100000), (-100000, 0), (0,0), (0, -100000), (-100000, -100000)]))

# Save both files with different names...
with open('newfile1.gds', 'wb') as stream:

with open('newfile2.gds', 'wb') as stream:

Indices and tables