Please see this web site for the project description
http://www.cerc.utexas.edu/~ashutosh/PDClassProjectDescription.htm
The latest benchmark can be downloaded from here
ftp1.easic.com:outgoing/benchmarks_eprize1_080925.tgz
The ePrize announcement is here
http://www.easic.com/index.php?p=university
The following are the project spec for global routing.
Project
Goal:
The goal of this project is to implement a routability-driven global router which takes ISPD98/ISPD07 benchmark as input,
and produce output in specific format. From this project, you'll learn the algorithms and its implementations
of steiner tree, maze routing and global routing.
Input
Format:
ISPD98 and ISPD07 benchmarks will be given as input which has the following input format. It is available in [1].
- format
grid [int x] [int y]
vertical capacity [int cap]
horizontal capacity [int cap]
num net [int #nets]
[char *net0Name] [int net0ID] [int numPins]
[int pin0x] [int pin0y]
...
[int pinNx] [int pinNy]
[char *net1Name] [int net1ID] [int numPins]
[int pin0x] [int pin0y]
...
[int pinNx] [int pinNy]
...
...
[char *netNName] [int netNID] [int numPins]- example from ibm01.modified.txt
grid 64 64 //this design has 64 (in x direction) x 64 (in y direction) grids
vertical capacity 12 //between two grids vertically aligned, there are 12 routing capacity
horizontal capacity 14 //between two grids horizontally aligned, there are 14 routing capacity
num net 11507 //there are 11507 nets to be routed
net10122 3 7 //a net with name "net10122" has net ID 3 and 7 pins to be connected
17 61 //the first pin is in grid (17,61)
23 62
25 62
21 62
18 61
23 61
21 61
- note
some net may have multiple pins in the same grid. you may treat such pins as one single pin
if all the pins of a net are in the same grid, you don't need to route the net.
What
To Do:
Basically, you need to connect all the pins of each net under the capacity constraint, but with minimal wirelength.
The challenge here is to distribute those connections such that it satisfies the vertical/horizontal capacity as
much as possible with shorter wirelength. The final output should shows a list of routs of each net which connect
the pins of the net. You can implement the global router in C/C++ or modify the existing open source global router [1].
Output
Format:
The PERL script to evaluate your solution will be provided later.
- format
net[net ID from the input] [# of routs] [# of pins]
([x11],[y11])-([x12],[y12])
([x21],[y21])-([x22],[y22])
...
...
!- example from net10122 in ibm01.modified.txt
net3 6 7 //a net with name "net10122" has net ID *3* and is routed with *6* routes to connection *7* pins
(21,61)-(21,62) 1 //the 1st route is from (21,61) to (21,62) and the length is 1
(23,61)-(23,62) 1
(21,62)-(23,62) 2
(23,62)-(25,62) 2
(17,61)-(18,61) 1
(18,61)-(21,61) 3 //the last route is from (18,61) to (21,61) and the length is 3
! //this menas the end of routs for the net. please put this to make PERL script happier.
- note
all the routes in the output should be either horizontal or vertical. For example (18,61)-(19,62) is not acceptable,
as it is diagonal. Remember that each route should be different only either in x locations or in y locations.
Evaluation:
The output will be evaluated in three aspects; routability, wirelength and cpu time.
The number of overflow will be used as a metric of routability, which shows excessive local routing demand.
For example, between grid (18,61) to grid (19,61) in ibm01.modified.txt, there are 14 routing resources.
-If you routing solution puts 11 routes between grid (18,61) to grid (19,61), then it means ZERO overflow.
-If you routing solution puts 14 routes between grid (18,61) to grid (19,61), then it means ZERO overflow.
-If you routing solution puts 15 routes between grid (18,61) to grid (19,61), then it means ONE overflow.
-If you routing solution puts 16 routes between grid (18,61) to grid (19,61), then it means TWO overflows.
As this project is about routability-driven global routing, the number of overflow is the most important objective.
But, you have to find good trade-off between them, as unacceptable long wirelength or cpu time will be penalized anyway.
[1] http://www.ece.ucsb.edu/~kastner/labyrinth/ and http://www.ispd.cc
[2] BoxRouter2.0 (open source) http://www.cerc.utexas.edu/utda/download/BoxRouter.htm
[3] FLUTE (open source) http://class.ee.iastate.edu/cnchu/flute.html
[4] Minsik Cho and David Z. Pan, "BoxRouter: A New Global Router Based on Box Expansion and Progressive ILP", DAC, July, 2006
[5] R. T. Hadsell and P. H. Madden, "Improved Global Routing through Congestion Estimation", DAC, June 2003.
[6] J. Westra, C. Bartels, and P. Groeneveld, "Probabilistic Congestion Prediction", ISPD, April 2004.
· All the papers can be downloaded from IEEE Explorer or ACM Digital Library, directly accessible from any UT machines. If you use your home computer, you can go to UT Library web page, http://www.lib.utexas.edu/indexes/ first, and then select the correct data base (IEEE or ACM). It will ask for your UT EID and password. Login, you will be able to have full access to these databases.
· You may also be interested to find “free” CAD tools and benchmarks (even source codes) from GSRC bookshelf (http://vlsicad.eecs.umich.edu/BK/Slots/ ).
· Check the newest ICCAD, DAC, ISPD, ISLPED papers then search backwards