Home

Awesome

OpenMPL

OpenMPL stands for open multiple patterning lithography framework.

Stitch InsertionGraph SimplificationDecomposition
<img src=./images/stitch-2.png width=150><img src=./images/biconnected.png width=250><img src=./images/total_c2.gif width=200>

Pre-requisite

Publications

Docker Version

We provide the docker version to avoid annoying compilation. You can pull the image by

$ docker pull wadmes/openmpl:latest

The OpenMPL folder locates in /home/OpenMPL

How To Compile

$ git clone https://github.com/limbo018/OpenMPL.git 
$ cd OpenMPL
$ git submodule update --init --recursive
$ mkdir build
$ cd build
$ cmake .. 
$ make
$ make install

The default installation path is the repo directory. It can be changed via

cmake .. -DCMAKE_INSTALL_PREFIX=your_installation_path

Features

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

How to Get Benchmarks

Small benchmarks (ISCAS) Download big benchmarks (ISPD19) Download

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 controlling screen messages
-dbg_comp_id (4294967295)    debug component id
-use_stitch                  use stitch to avoid conflict
-gen_stitch                  generate stitch candidate
-weight_stitch               a floating point number indicating the weight of stitch                     

One exmaple : /bin/run.sh. Another example for large benchmark: /bin/run_big.sh

Possible Compiler Problems

License

Authors

NameAffiliationemail
Yibo LinSchool of EECS, PKUyibolin@pku.edu.cn
Bei YuCSE Dept, CUHKbyu@cse.cuhk.edu.hk
Wei LiCSE Dept, CUHKwerry715@gmail.com
Yuzhe MaCSE Dept, CUHKyzma@cse.cuhk.edu.hk
David Z. PanECE Dept, UT Austindpan@ece.utexas.edu