Git Product home page Git Product logo

nthu-route's Introduction

The NTHU Global Router ISPD2008

This library/application is the work of the following authors : Yen-Jung Chang, Yu-Ting Lee, Tsung-Hsien Lee, Jhih-Rong Gao, Pei-Ci Wu, and Ting-Chi Wang. Contact: [email protected] homepage of the project.

Overview

NTHU-Route 2.0 is a fast and stable global router for VLSI design. It improves the solution quality and runtime of NTHU-Route by the following enhancements: (1) a new history based cost function, (2) new ordering methods for congested region identification and rip-up and reroute, and (3) two implementation oriented techniques. At the ISPD 2008 Global Routing Contest, NTHU-Route 2.0 generated the best solutions for 11 of 16 benchmarks among all participating global routers and won the 1st place.

For the present release on github, I (Florian Prud'homme) did some maintenance work to adapt the source code for modern C++ compilers. As a side effect, I enhance the memory management (no more malloc or explicit new, delete or free). No more segfault ! I rely on Boost library for most of the data structure. And I hope the code is more easy to read now.

As far as I know, this the most complete open source Global router for VLSI design in the world. I hope this project will enable people to re-use the present data structures and algorithms in order to speed up innovation and research.

Usage

How to compile

For the moment, I recommend you to import the project on eclipse CDT, in order to compile it with the option you want. Otherwise, you can untar the archive nthuRoute3.tar.gz, and then type ./make inside the uncompressed directory.

As a Library

You have to include #include <src/router/Route.h> You just fill the Input object NTHUR::RoutingRegion following the explanations at ISPD 2008 Global Routing Contest website

 NTHUR::Route router;
        NTHUR::RoutingRegion rr(3, 3, 2);
        rr.setVerticalCapacity(1, 2);
        rr.setHorizontalCapacity(0, 2);
        rr.setNetNumber(1);
        rr.beginAddANet("A", 0, 2, 1);
        rr.addPin(0, 0, 1);
        rr.addPin(2, 0, 1);
        rr.endAddANet();
        rr.adjustEdgeCapacity(1, 0, 0, 2, 0, 0, 0);
        rr.adjustEdgeCapacity(1, 1, 0, 2, 1, 0, 0);

        rr.adjustEdgeCapacity(0, 0, 1, 0, 1, 1, 0);
        rr.adjustEdgeCapacity(1, 1, 1, 1, 2, 1, 0);

        NTHUR::OutputGeneration output(router.process(rr,spdlog::level::trace));

        NTHUR::OutputGeneration::Comb comb(output.combAllNet());

        cr->scale(40., 40.);
        cr->translate(10,10);

        for (const std::vector<NTHUR::Segment3d>& v : comb) {
            for (const NTHUR::Segment3d& s: v) {
                cr->move_to( s.first.x , s.first.y );
                cr->line_to( s.last .x , s.last.y );
            }
        }
        cr->scale(1./40., 1./40.);
        cr->set_line_width(1);
        cr->stroke();

Usage as an application

NthuRoute --input=adaptec1.capo70.3d.35.50.90.gr --output=output --p2-max-iteration=150 --p2-init-box-size=25 --p2-box-expand-size=1 --overflow-threshold=00 --p3-max-iteration=20 --p3-init-box-size=10 --p3-box-expand-size=15 --monotonic-routing=0

Description of the options :

./route --input=testcase_file_name --output=output_file_name [options] 

Options.

--p2-init-box-size=number
Initial bounding-box size in Adaptive Multi-source Multi-sink Maze Routing in the main stage

--p2-box-expand-size=number 
Bounding-box expanding size in Adaptive Multi-source Multi-sink Maze Routing in the main stage

--p2-max-iteration=number
Maximum number of iterations in the main stage

--p3-init-box-size=number
Initial bounding-box size in Adaptive Multi-source Multi-sink Maze Routing in the refinement stage

--p3-box-expand-size=number 
Bounding-box expanding size in Adaptive Multi-source Multi-sink Maze Routing in the refinement stage

--p3-max-iteration=number
Maximum number of iterations in the refinement stage

--overflow-threshold=number
Overflow threshold in the main stage

--monotonic-routing={1,0} 
Enable/disable monotonic in each routing iteration 

Related publications

T.-H. Lee and T.-C. Wang, “Robust Layer Assignment for Via Optimization in Multi-layer Global Routing,” in Proceedings of International Symposium on Physical Design (ISPD), San Diego, California, USA, March 2009, pp. 159-166. link

Yen-Jung Chang, Yu-Ting Lee, and Ting-Chi Wang, “NTHU-Route 2.0: A Fast and Stable Global Router,” in Proceedings of International Conference on Computer-Aided Design (ICCAD), San Jose, CA, USA, November 2008, pp. 338-343 link

Tsung-Hsien Lee and Ting-Chi Wang, “Congestion-Constrained Layer Assignment for Via Minimization in Global Routing,” IEEE Transactions on Computer-Adided Design of Integrated Circuits and Systems, September 2008, pp. 1643-1656 link

Jhih-Rong Gao, Pei-Ci Wu, and Ting-Chi Wang, “A New Global Router for Modern Designs,” in Proceedings of Asia and South Pacific Design Automation Conference, Seoul, Korea, 2008, pp. 232–237 link

Contributing

I hope you will find this project useful. I now there is a lot of improvement to do (documentation, optimization, adding alternative algorithms etc...). I'm looking for people who can work on this project. I would like to work more on it, but I have to find funding for that. If you need some support and you have money, you can contact me !

nthu-route's People

Contributors

luckyrantanplan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nthu-route's Issues

routing pin error

In some cases, such as case2, the pins cannot be found in the third iteration of post-processing. In some eight-layer designs, problems with memory exceptions can occur.

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.