masque/README.md
Jan Petykiewicz 83b9af0cc3 Remove support for dose
Since there isn't GDS/OASIS level support for dose, this can be mostly
handled by using arbitrary layers/dtypes directly. Dose scaling isn't
handled as nicely that way, but it corresponds more directly to what
gets written to file.
2023-01-18 18:14:33 -08:00

1.7 KiB

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) 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

  • this approach has an issue: how add devices together?

    • need to add the other device by name
    • need to know the other device's ports
    • also: device doesn't know its own name, can't wrap itself into a subpattern