An open multiple patterning framework
Clone or download
Permalink
Failed to load latest commit information.
bin OpenMPL Aug 28, 2018
src OpenMPL Aug 28, 2018
test/regr prepare for regression Oct 9, 2015
.DS_Store OpenMPL Aug 28, 2018
.gitignore wrap up binary and send to ASML Feb 3, 2016
LICENSE Initial commit Aug 23, 2018
Readme.md replace "no stitching" with "stitching" in readme Oct 2, 2018
gdb.sh OpenMPL Aug 28, 2018
run.sh OpenMPL Aug 28, 2018

Readme.md

OpenMPL

OpenMPL stands for open multiple patterning lithography framework.

Pre-requisite

  • Limbo: require LIMBO_DIR environment variable to the path where Limbo is installed. OpenMPL is based on Limbo library.

How To Compile

$ git clone https://github.com/limbo018/OpenMPL.git
$ cd OpenMPL/src/mpl/
$ make

Here are some optional parameters when make :

# default DBG (debug) is off
DBG = 0
# default GPROF is off, used to enable runtime profiling
GPROF = 0
# default GUROBI is off 
GUROBI = 0
# default LEMONCBC is off 
LEMONCBC = 0
# default CSDP is off 
CSDP = 0

Features

  • Contact or metal layer decomposition
  • Stitching
  • Support 3 or 4 coloring
  • Density control
  • Multi-threading
  • Small memory usage
  • Multiple algorithms: ILP (Gurobi or Lemon CBC), SDP (Csdp API), LP (Gurobi API)
  • Dancing Links

The Csdp API used in OpenMPL has been modified and built for threading safety at high level.

How To Execute

$ cd bin/
$ ./OpenMPL

A table of options :

-help (false)                toggle printing help message
-in                          input gds file name
-out ()                      output gds file name
-coloring_distance (0)       a floating point number indicating number of coloring distance in nanometer
-color_num                   an integer indicating number of masks (colors) < 3|4 >
-simplify_level (3)          an integer indicating graph simplification level < 0|1|2|3 >
-thread_num (1)              an integer indicating maximum thread number
-path_layer                  an integer indicating layer for conflict edges
-precolor_layer              an integer indicating layer for pre-colored patterns
-uncolor_layer               an integer indicating layer for coloring
-algo (BACKTRACK)            algorithm type < ILP|BACKTRACK|LP|SDP >
-shape (RECTANGLE)           shape mode < RECTANGLE|POLYGON >
-verbose (false)             toggle controling screen messages
-dbg_comp_id (4294967295)    debug component id

Now Dancing Links is an independent component, and the source code is in /src/dlx. One example is in DL_main.cpp.

One exmaple : /bin/run.sh.

License

  • BSD-3-clause License [LINK]

Authors

Name Affiliation email
Yibo Lin ECE Dept, UT Austin yibolin@utexas.edu
Bei Yu CSE Dept, CUHK byu@cse.cuhk.edu.hk
Qi Sun CSE Dept, CUHK qsun@cse.cuhk.edu.hk
David Z. Pan ECE Dept, UT Austin dpan@ece.utexas.edu