OpenMPL stands for open multiple patterning lithography framework.
Stitch Insertion | Graph Simplification | Decomposition |
---|---|---|
-
- Recommend GCC 4.8 or later.
- Other compilers may also work, but not tested.
-
- Require 3.8.2 or later.
-
- Require 1.55 or later.
- Need to install and visible for linking.
- Custom installation path may require to export
BOOST_ROOT
for CMake.
-
- Integrated as a git submodule.
-
Gurobi (Optional)
- ILP solver.
- Wei Li, Yuzhe Ma, Qi Sun, Yibo Lin, Iris Hui-Ru Jiang, Bei Yu, David Z. Pan, "OpenMPL: An Open Source Layout Decomposer", IEEE International Conference on ASIC (ASICON), Chongqing, China, Oct. 29–Nov. 1, 2019. (preprint) (slides)
$ 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 bee changed via
cmake .. -DCMAKE_INSTALL_PREFIX=your_installation_path
- Contact or metal layer decomposition
- Stitching
- Support 3 or 4 coloring
- Density control
- Multi-threading
- Small memory usage
- Multiple algorithms:
- ILP (Gurobi API)
- 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.
$ 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.
-
default CFLAGS of boost and gurobi are different in newest version
-
downgrade the boost version
-
SimpleMPL.cpp:461:5: error: ‘graph_simplification_type’ has no member named ‘set_isVDDGND’
- checkout to stitch branch in your limbo directory
- BSD-3-clause License [LINK]
Name | Affiliation | |
---|---|---|
Yibo Lin | School of EECS, PKU | [email protected] |
Bei Yu | CSE Dept, CUHK | [email protected] |
Wei Li | CSE Dept, CUHK | [email protected] |
Yuzhe Ma | CSE Dept, CUHK | [email protected] |
David Z. Pan | ECE Dept, UT Austin | [email protected] |