Code Monkey home page Code Monkey 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...1.72.
    • 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

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

  • 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

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

  • 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

limbo018 avatar sqposeidon avatar wadmes avatar disyulei avatar zhanlgu avatar andnasnd avatar constwelve avatar rholais avatar yuzhe630 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.