|
| |
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
- Install Python by downloading and executing the
installation package from
http://www.python.org/download/
- 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
|