Giter VIP home page Giter VIP logo

openmpl's Introduction

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 [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]

openmpl's People

Contributors

disyulei avatar limbo018 avatar rholais avatar sqposeidon avatar wadmes avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.