masque/masque
2023-01-11 18:32:08 -08:00
..
builder Avoid generating a container if only a single port is passed 2023-01-11 18:32:08 -08:00
file round().astype() -> rint(...) 2023-01-11 18:29:28 -08:00
library fix wrong var name 2022-02-28 23:38:34 -08:00
shapes round().astype() -> rint(...) 2023-01-11 18:29:28 -08:00
traits add get_bounds_nonempty 2022-02-27 21:23:03 -08:00
utils add utils.vertices.poly_contains_points 2022-04-01 17:30:25 -07:00
__init__.py Move from setuputils and setup.py to hatch and pyproject.toml 2023-01-11 17:37:36 -08:00
error.py add DeviceLibraryError 2022-02-27 21:23:03 -08:00
label.py Avoid calling new.unlock() in __deepcopy__() 2022-06-08 21:12:39 -07:00
LICENSE.md Move from setuputils and setup.py to hatch and pyproject.toml 2023-01-11 17:37:36 -08:00
pattern.py fix scaling for objects with repetitions 2022-03-16 23:54:26 -07:00
py.typed add py.typed to enable type checking for downstream 2020-05-19 00:15:51 -07:00
README.md Move from setuputils and setup.py to hatch and pyproject.toml 2023-01-11 17:37:36 -08:00
repetition.py Add an alternate constructor for axis-aligned 2D grids 2023-01-04 22:56:17 -08:00
subpattern.py Avoid calling new.unlock() in __deepcopy__() 2022-06-08 21:12:39 -07:00
utils.py Use ArrayLike and NDArray wherever possible. Some type fixes and some related corner cases 2022-02-23 15:47:38 -08:00

Masque README

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.

Installation

Requirements:

  • python >= 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+https://mpxd.net/code/jan/masque.git@release

Translation

  • 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"

TODO

  • 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