Python package for lithography mask design.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jan Petykiewicz 250107e41b Update email 3 months ago
examples use klamath for examples 1 year ago
masque fix format string now that ptypes are str-typed 4 months ago
.flake8 style and type fixes (per flake8) 1 year ago
.gitignore add .oas.gz to .gitignore 1 year ago Add license 6 years ago Use separate VERSION file 2 years ago make klamath the default gdsii reader/writer, and install it automatically 7 months ago Update email 3 months ago


Masque is a Python module for designing lithography masks.

The general idea is to implement something resembling the GDSII file-format, but with some vectorized element types (eg. circles, not just polygons), better support for E-beam doses, and the ability to output to multiple formats.



  • python >= 3.7 (written and tested with 3.8)
  • numpy
  • klamath (used for gdsii i/o and library management)
  • matplotlib (optional, used for visualization functions and text)
  • ezdxf (optional, used for dxf i/o)
  • fatamorgana (optional, used for oasis i/o)
  • svgwrite (optional, used for svg output)
  • freetype (optional, used for text)

Install with pip:

pip3 install 'masque[visualization,oasis,dxf,svg,text]'

Alternatively, install from git

pip3 install git+


  • Pattern: OASIS or GDS "Cell", DXF "Block"
  • SubPattern: GDS "AREF/SREF", OASIS "Placement"
  • Shape: OASIS or GDS "Geometry element", DXF "LWPolyline" or "Polyline"
  • repetition: OASIS "repetition". GDS "AREF" is a SubPattern combined with a Grid repetition.
  • Label: OASIS, GDS, DXF "Text".
  • annotation: OASIS or GDS "property"


  • Better interface for polygon operations (e.g. with pyclipper)
    • de-embedding
    • boolean ops
  • Construct polygons from bitmap using skimage.find_contours
  • Deal with shape repetitions for dxf, svg