Coder Social home page Coder Social logo

utda-group / boxrouter Goto Github PK

View Code? Open in Web Editor NEW
16.0 5.0 2.0 1.68 MB

BoxRouter2.0 is a new global router for ultimate routability. It is inspired by BoxRouter [1], but can perform multi-layer routing with 2D global routing and layer assignment. The 2D global routing is equipped with several ideas: such as robust negotiation-based A* search for routing stability, and topology-aware wire ripup for flexibility and so on. After 2D global routing, 2D-to-3D mapping is done by the layer assignment which is powered by progressive via/blockage-aware integerlinear programming.

Home Page: https://www.cerc.utexas.edu/utda/download/BoxRouter.htm

License: Other

C++ 98.70% C 0.96% Perl 0.18% Makefile 0.16%

boxrouter's Introduction

BoxRouter 2.0

Welcome to BoxRouter2.0, a new global router for ultimate routability.

This is 64 bit version.

BoxRouter2.0 Website


Tutorial

1. What do you have in this folder and What do you need?

You have:

a) BoxRouter2.0 Source Code:

  • BBox.h Boundary.h BoxRouter.h Design.h Grid.h GRouter.h ILPSolver.h MazeHeap.h Net.h Object.h Param.h Pin.h Point.h Segment.h Util.h Wire.h

  • BBox.cpp Boundary.cpp BoxRouter.cpp Design.cpp Grid.cpp GRouter.cpp ILPSolver.cpp MazeHeap.cpp Net.cpp Object.cpp Param.cpp Pin.cpp Point.cpp Segment.cpp Util.cpp Wire.cpp dmp2res.cpp res2dmp.cpp

  • makefile

  • fix_mps.pl

You need:

b) Software packages (free for academic research) used in BoxRouter2.0

c) Complied executable file

res2dmp.x dmp2res.x br_ispd07.x

To help you test, we also put one example here:

ibm01.par, the BoxRouter2.0 configuration file.
  • bench/ibm01.modified.txt -> input file, one of ISPD98 benchmarks.
  • bench/ibm01.modified.stt -> the Steiner tree generated by FLUTE.
  • bench/ibm01.modified.txt.log-> log file.
  • bench/ibm01.modified.res -> output result.
  • bench/ibm01.modified.dmp -> dump file.
  • bench/ibm01.modified.res.map -> the final congestion map.

2. How to compile the code ?

Please first make sure you setup those software packages correctly.

  • a) Download FLUTE package and set it up in your BoxRouter2.0 folder.

    For your convenience, Flute files which we are using currently can be also downloaded from http://www.cerc.utexas.edu/utda/download/FLUTE.tar.gz. You can download it and extract into your BoxRouter2.0 folder.

  • b) Download glpk package and set it up in your BoxRouter2.0 folder.

    For your convenience, glpk-4.10 which we are using currently can be also downloaded from http://www.cerc.utexas.edu/utda/download/glpk-4.10.tar.gz. You can download it and extract into your BoxRouter2.0 folder.

  • c) Download STLPORT package and set it up in your BoxRouter2.0 folder.

  • d) Download MOSEK package and set it up in your BoxRouter2.0 folder.

Then, please compile the code as:

  • a) make

    Generate the BoxRouter2.0 executable file br_ispd07.x

  • b) make dmp2res:

    Generate the executable file dmp2res.x

  • c) make res2dmp:

    Generate the executable file res2dmp.x

3. How to run the BoxRouter2.0?

./br_ispd07.x configuration_file 

Here we provide one example ibm01.par for configuration_file.

4. What are the meanings of those parameters in our configuration file?

  • a) INPUT_FILE input_filename

    Specify the input circuit in ISPD 2007 Routing Contest format.

  • b) TREE_FILE tree_filename

    Input Steiner tree. If tree_filename is not found,BoxRouter2.0 will call FLUTE to make Steiner trees for you. The format of the Steiner tree file will be discussed later.

  • c) OUTPUT_FILE output_filename

    Specify the routing result output file and the format can be found in our BoxRouter2.0 website.

  • d) DUMP_FILE dump_filename

    The dump file is used to store intermediate routing solution in binary format.

    If the file dump_filename exists before you run the BoxRouter2.0, the BoxRouter2.0 will just read the dump file to get intermediate solution and start from there , skipping certain steps.

    If the file dump_filename doesn't exist, the BoxRouter2.0 will do the whole routing from the first beginning and write several intermediate results into dump files.

  • e) MULTI_LAYER a

    a = 0 disables multi layer option. a = 1 enables multi layer option.

  • f) PREROUTING a

    a = 0 will NOT perform the prerouting stage. a = 1 will perform the prerouting stage.

  • g) BOXROUTING a

    a = 0 will NOT perform the boxrouting stage. a = 1 will perform the boxrouting stage.

  • h) BOXROUTING_STEP n

    n is the number of variables which can be affordably solved by GLPK.

  • i) BOXROUTING_ILP n

    n is used to specify the algorithm which is used in boxrouting stage.

    n = 0;use mazerouting. n = 1:use ILP solver and set ILP objective is max. n = 2:use ILP solver and set ILP objective is min. n = 3:use pattern routing. n = 4:use hybrid ILP mode. n = 5:set ILP objective max and use round up to achieve the solution.

  • j) ILP_SOLVER n

    n = 0:GLPK is used. n = 1;MOSEK is used.

  • k) REROUTING a

    a = 0 will NOT perform the rerouting stage. a = 1 will perform the rerouting stage.

  • l) REROUTING_COUNT n

    n is the number of most rerouting functions.

  • m) REROUTING_REPEAT n

    n is the number of rerouting for reducing wirelength.

  • n) REROUTING_STEP n

    n is used to control the number of wires to be ripup on congestion edges.

  • o) REROUTING_PUSH p

  • p) REROUTING_STUCK s

    The above two parameters are used together to control the routing cost function. e.g. Cost = a*(b.^(PUST_VALUE))+1; a&b are constants. p is the starting PUSH_VALUE; s is predefined STUCK_VALUE;

    During the rerouting stage, for every new PUSH_VALUE, we set STUCK_VALUE 0. If we use this PUSH VALUE and during following rerouting, we can not improve our result for continuous STUCK_VLAUE times, we will increase p by 1.

  • q) MAZEROUTING_MARGIN n

    n is used to control mazerouting to avoid too much searching space.

  • r) RELAYERING a

    a = 0 will NOT perform BoxRouter2.0 layer assignment algorithm. a = 1 will perform BoxRouter2.0 layer assignment algorithm.

You can always comment out some line in the configuration file by putting # in the beginning of the line as

#MULTI_LAYER 

The BoxRouter2.0 will assign default value accordingly.

5. How does the TREE FILE format looks like?

You can specify your own tree topology and write it into file as following format. The BoxRouter2.0 perform the routing algorithm based on you file.

net[name from the input] [net ID from the input] [# of wires]
([x11],[y11])-(x[12],y[12])
([x21],[y21])-(x[22],y[22])
....
....
!

for example

 net10122 3 6 // a net with name"net10122" has netID 3 and the Steiner tree has 6 wires
 17 61 - 18 61 // the 1st wire is from (17,61 to 18.61)
 23 61 - 23 62
 25 62 - 23 62
 18 61 - 21 61
 21 61 - 21 62
 23 62 - 21 62
 !

Authors

  • Minsik Cho, Kun Yuan, Katrina Lu and David Z. Pan

LICENSE

Please see LICENSE for information.


Awards & Publications

  • 2nd Place in 3D Routing Contest
  • 3rd Place in 2D Routing Contest
  • Minsik Cho and David Z. Pan , "BoxRouter: A New Global Router Based on Box Expansion and Progressive ILP", Proc. Design Automation Conference (DAC), July, 2006. (Nominated for Best Paper Award, 12 out of 865 submissions)
  • Minsik Cho, Katrina Lu, Kun Yuan, David Z. Pan, "BoxRouter 2.0: Architecture and Implementation of a Hybrid and Robust Global Router", Proc. IEEE/ACM Int'l Conference on Computer-Aided Design (ICCAD), November, 2007.

Disclaimer

BoxRouter2.0 was originally released in 2007. Many interfaces, for example MOSEK, may have been changed. Please use the software only for reference.

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.