Photonics Research Group Home
Department INTEC Ipkiss
Home Contact us Staff Research Publications Education Intern Links

Up
Rodis
Gds_key
Ipkiss
Search this site

 

IPKISS: The Mask Maker

Introduction

IPKISS is a python-based library for the generation of GDSII layouts, including hierarchy. It has grown out of the GDS_KEY library, but it is more flexible and object oriented. Contrary to GDS_KEY, it can read and edit existing GDSII files.

As the library is based on python, it provides for an easy way to use scripts to parametrize mask layouts. For complex layouts, this is generally considered more fault-tolerant than designing through a graphical user interface, as all coordinates and parameters can be calculated automatically.

Like GDS_KEY, IPKISS can directly generate binary GDSII files, or a ASCII representation in the KEY file format. The latter file format can be read with a text editor or visually inspected using the Boolean GDSII viewer/editor.

Installation

  1. Install Python by downloading and executing the installation package from http://www.python.org/download/
  2. Download the IPKISS installer for your platform

    IPKISS can reside together with GDS_KEY on your system, but both cannot be loaded at the same time

The installation routine installs the IPKISS package in the <Python>/Lib/site-packages
directory. Documentation (only a readme file at the moment) and a number of examples are stored in the <Python>/ipkiss directory.

Use

After installation, the package can be used in any python script with the import command:

	from ipkiss.all import *

A GDSII file consists of a list of named structures, which each can contain any number of graphical elements. The elements can be

  • Filled polygons (BOUNDARY) or lines with a finite width (PATH)
  • References to other structures in the file. These can be either simple references (SREF) or the referenced structures can be periodically repeated (Array reference or AREF).
  • Text Labels 

Because structures can contain references to other structures, the GDSII file format is said to contain hierarchy. For complex mask layouts, (e.g. with photonic crystals), the use of hierarchy is necessary to keep the file size reasonable.

The following brief python script demonstrated the use of the IPKISS library

from ipkiss.all import *
set_grid(5E-9) # all dimensions are snapped to the grid (5nm)
set_unit(1E-6) # all dimensions are expressed in this unit (1um)

#define some elements
element1 = el_rect  (layer=0, center=(0,150),box_size=(200, 200.0)) #rectangle 
element2 = el_circle_path(layer=3, center=(0,-150), 
                         radius=100, line_width=4.0) #circle 
# make a structure with these elements
S = gds_structure("shapes", 
                  element1 + element2)
# Make new library
Lib = gds_library(name = "ELEMENTS")
Lib += S

# Make output file stream
write_library_to_gdsii("output.gds")

An expanded version of this code is also avaliable in the file <Python>/ipkiss/examples/simple.py. You can execute the code from the command prompt

    python simple.py 

The command gds_write() sends the generated GDSII file to stdout, but by using the > operator you can send the output to a file. The result of this file should look like this:

The IPKISS library has the following capabilities, which are illustrated in the various example files in the <Python>/ipkiss/examples directory

  • A large number of geometrical primitives, available in functions shape_circle(...), shape_rect(...). The functions return a Python list of coordinates. (No example file available yet)
  • The shapes can be manipulated using shape_rotate(...)shape_translate(...), ... or more complicated transformations
  • el_path(...), el_boundary(...), el_sref(...), el_aref(...), el_label(...) and el_box(...) provide a the basic GDSII elements. (elements.py)
  • Wrapper functions like el_circle(...), el_rect_path(...) automatically generate the correct shape and feed it to the el_boundary() and el_path() functions. (elements.py)
  • GDS_KEY provides an own font which converts text to paths. (elements.py)
  • Automatic tracking of referred structures and generated structures to validate the hierarchy of the GDSII file. A correct layout file has only a single top level which is not referred to.
  • Import of HPGL plotter files that can be converted to paths or boundaries (hpgl.py)
  • Import of existing GDSII files into a layout (import.py)
  • Scalable logos of IMEC, Ghent University and the INTEC department are built-in (logos.py).

See also

 
mailbox.gif (1724 bytes) Problems or questions? Contact the webmaster