We are happy to announce that NAZCA 0.5 is available for download!

Nazca is available for Linux, Mac and Windows.

DOWNLOAD Nazca 0.5 installer

This Nazca Installer does not include the pyclipper module.
The pyclipper module can be installed separately (
see the installation guide).

Click here for the step by step installation guide.

What’s new in NAZCA 0.5

  • – changed name of to
  • – use layer_name as layer ID instead of (layer, datatype). Note that get_layer() will now return the layer_name string.
  • – in PDKs the xsection to layer maps now use layer_name as reference key.
  • – added properties dictionary in cells to store information on a cell in one place (length, width, parameter values, owner, etc.).
  • – updated @hashme decorator to keep unique cellnames now also for functions without default values.
  • – added raised_sine interconnect.
  • – provide access to change all default Pin attribute settings when creating a new pin.
  • – changed keywords in pcurve function to nazca convention, i.e. ‘radius’, ‘width’, ‘offset’.
  • – added technology attribute to internal nazca layers to handle multiple technologies in a single design.
  • – load_gds() can now load all gds cells at once in a dictionary of cells with asdict=True avoiding multiple loads.
  • – load_gds() can now read bytestrings besides files.
  • – fixed box around text with a \n linefeed in the text. It now follows the text.
  • – added switch in cfg to temporarily by-pass type-checking raised exceptions in BB-generating function calls.
  • – updated show_cp() to show a specific pin, not only the cp.
  • – fixed bug in generic_bend for downward starting curves
  • – fixed scaling option in nazca-design logo.
  • – removed duplicate placements in whitebox cell replacements.
  • – added check on overlapping polyline points.
  • – updated BB export files generated by export_gds.
  • – cleaned up parsing of put() statements.
  • – lots of small improvements (docstrings, checks and small fixes).




We encourage you to put the Nazca logo in your mask layout and share a picture with us if you can.

You can show your appreciation for Nazca Design by acknowledging it in your work, publications or materials with the following sentence:

Nazca Design was used to generate the mask layout in this work.

Previous releases

Release date: 2018-07-31


  • -Implemented decomposing and rebuilding of cells at user level; Map layers and cellnames and/or change, add, delete, replace, scale and/or translate polygons, polylines, cells, annotations and/or gds array settings.
  • -Added flip, flop and scale to polygon and polyline placement (put).
  • -Added more methods to the polygon and polylines for simpler usage and more flexibility.
  • -Improved scaling behaviour for gds loading.
  • -Introduced convex hulls as basis of rotation-proof bounding box calculations.
  • -Implemented option to store building block connectivity inside the GDS.
  • -Improved default layer and xsection handling in Interconnects for tutorial mode.
  • -Added strt_p2l interconnect.
  • -Lots of small improvements (docstrings, checks and small fixes).


Release date: 2018-06-06


  • -Implemented a clear separation between cell-tree iteration and layout generation, which will enable many new features (to be extended).
  • -Based on the above, implemented a cell method to rebuild a cell inside Nazca before export to any available format, e.g. split a cell in a subcell per gds layer.
  • -Updated range_check method with +/-inf settings.
  • -Lots of small improvements (docstrings, checks, small fixes).

Release date: 2018-04-15


  • -Added bb=True option to export_gds() to facilitate building block creation, sharing and loading.
  • -Extended mirroring options in cell placement:
    flip=True: mirror by “rotation” in the connecting pin axis
    flop=True: mirror by “reversing the direction” of the connecting pin.
  • -Provided more “predictable” ‘org’ behavior by filtering ‘org’ from raise-pins().
  • -In load_gds the native=True setting can not change cell placement anymore:
    It now sets ‘org’ as default in/out pins (as it does for native=False), rather than adding ‘a0’ and ‘b0’ as default in/out.
  • -A number of small fixes.

Release date: 2018-03-06


  • – Implemented loading of gds files into fully native Nazca cell(s).
  • – Added parametric curves.
  • – Implemented direct pointer solving (at time of placement, rather than cell closure).
    It gives immediate access to pin coordinates (x, y, a).
  • – Implemented automated bounding box for cells (including array’s and native loaded gds).
  • – Added bounding box info to polygons and polylines.
  • – Export full gds to matplotlib/png (including array’s and native loaded gds).
  • – Export full gds to svg (including array’s and native loaded gds).
  • – Added module for tracing path-lengths.
  • – Pin, Polygon, Polyline and Annotation now all have a (mandatory) capital first letter to indicate they are classes.
  • – Interconnects that can not be drawn correctly are shown in a dedicated error layer.
  • – Improved stub handling, customize scaling, shapes or use cells as a stub.
  • – Improved ubend to connect guides < 2*radius apart.
  • – Improved doc-strings.
  • – Improved messages.
  • – Improved checking for cell name conflicts.
  • – Added cell name filter to make cellnames comply with specific foundry restrictions.
  • – Improved handling of missing xsections and layers.

Release date: 2017-11-22

The first public release.