Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
 
 
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 

Readme.md

OpenMPL

OpenMPL stands for open multiple patterning lithography framework.

Stitch Insertion Graph Simplification Decomposition

Pre-requisite

  • GCC

    • Recommend GCC 4.8 or later.
    • Other compilers may also work, but not tested.
  • CMake

    • Require 3.8.2 or later.
  • Boost

    • Require 1.55 or later.
    • Need to install and visible for linking.
    • Custom installation path may require to export BOOST_ROOT for CMake.
  • Limbo

    • Integrated as a git submodule.
  • Gurobi (Optional)

    • ILP solver.

Publications

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 bee changed via

cmake .. -DCMAKE_INSTALL_PREFIX=your_installation_path

Features

  • 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.

How to Get Benchmarks

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.

Possible Compiler Problems

  • 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

License

  • BSD-3-clause License [LINK]

Authors

Name Affiliation email
Yibo Lin School of EECS, PKU yibolin@pku.edu.cn
Bei Yu CSE Dept, CUHK byu@cse.cuhk.edu.hk
Wei Li CSE Dept, CUHK werry715@gmail.com
Yuzhe Ma CSE Dept, CUHK yzma@cse.cuhk.edu.hk
David Z. Pan ECE Dept, UT Austin dpan@ece.utexas.edu

About

An open multiple patterning framework

Resources

License

Packages

No packages published
You can’t perform that action at this time.