Professional Documents
Culture Documents
Winter 2006
I. Project Description
The objective of this project is to let you gain better understanding of standard cell based circuit
placement, especially for simultaneous wirelength and density optimization. You are given a global
placement solution optimized for wirelength, and you are asked to make refinement to the solution
so that it minimizes the cell density overflow. In particular, you are asked to develop a C++
program based on the Linux/Unix platform and solve the following problem: Given a netlist
(specified in BookShelf format [5]) and a global placement result produced by mPL [9], improve
the Scaled HPWL (defined below) which penalize the density overflow.
Through this project, you will also get some concrete experience about developing VLSI layout
programs in general, representing and manipulating the netlists, and applying combinatorial
optimization techniques to VLSI layout.
II. Input Circuits, Netlist Parser, Data Structure, Utility Tools and Objective
Definition
The project testcases, parser source code and utility tool can be downloaded at:
http://ballade.cs.ucla.edu/~nksze/cs258f_w06.tar.gz
For each circuit we have the following files:
.aux A list of the component files for a problem instance
.nodes Library file describing the cell library for the problem
.pl Describe the location and orientation of each node (in this case, describing global placemet)
.nets Describe each net and the pins it connects
.scl Describe the standard cell row, i.e., its location, height, starting position of each row
.wts Describe the weight associated with each net
The circuit statistics are shown below:
Netlist data structure is put in “netlist/netlist.h”. It has the class for cell, pin, net, and hypergraph:
– Vertex (represents cell, has (x(), y()) as the cell center location; wth(),
hgt() and area() as the cell’s width, height and area respectively.
Pin_list() is a list of pins on the cells that provides the connections with
other cells; has degree() the number of pins on the cell; cell has types:
is_pad() (terminal), is_fixed() (fixed cell))
– Hedge (represents net, has pin_list() containing a list of pins, where each
pin belong to a cell, an hence describing the connection between the cells;
has degree() the number of pins connected by the net)
– Pin (located on cell; has the (loc_cx(), loc_cy()) as the relative location
with respect to cell center; cells are connected through pins; has vtx() as
the cell it belongs to and has net() as the net it belongs to)
– Hgraph (A hypergraph represents the netlist; it has a vertex_list()
containing a list of cells and a hedge_list() containing a list of nets)
A class called parser_main (“local-main/parser_main.h”) is used to read in the netlist and necessary
information for the circuit. It has the member values:
– ip_graph (the netlist Hgraph)
– lx, ly, rx, ry ( (lx, ly) is the lower left corner of the placement region,
and (rx, ry) is upper right corner the placement region)
– nrows (# of rows)
– rows_ury (contains center location each row height)
– std_cell_hgt (=row_hgt)
A binary (both Unix and Linux version) is provided for placement plot and reporting circuit
statistics, HPWL, and Scaled HPWL of a given circuit. Your program performance will be
measured by this binary. Please read the readme.txt for more detailed information and suggestions
regarding the source code and the binary usage for the project.
Scaled HPWL
• HPWL of a net = rightmost pin x-loc – leftmost pin x-loc + rightmost pin
y-loc – leftmost pin y-loc
• HPWL = sum of HPWL of each net
• Scaled HPWL = HPWL * (1 + SBO/100)
QoR (quality ratio)
• QoR of your solution = scaled HPWL / HPWL of the given global placement
Objective: Move the cells to minimize the scaled HPWL of the circuit. The one who can produce
the smallest average scaled HPWL or QoR over all the testcases in the table above will be the
winner. Your program needs to be scalable and the runtime for the largest testcase should not
exceed 24 hours.
The above figure is plotted by the utility tool. The fixed cells are drawn in yellow color; the
terminals (pads) are the tiny rectangles lying just right next to the placement region; the movable
cells are in blue colors.
The following are the statistics and scaled HPWL reported by the utility tool:
Circuit Statistics
IV. Requirements
2. You need to email me a one-page proposal by Feb. 20th describing an outline of your approach.
3. You need to turn in a class project report by Friday, March 17, 5pm PST. A typical report has 8-
10 pages, including:
• A brief summary of related work on this topic,
• Detailed description of your approach,
• Justification of your approach,
• A table of about test circuits, including the numbers of cells, nets, and pins for each test
circuit,
• A table summarizing your solutions, including scaled HPWL, QoR and runtime for each
solution and machine configuration.
• Some implementation details, such as the computer and compiler used for implementation
and experiment.
Please use figures and tables effectively to improve the quality of your presentation.
4. You need to inform me and Kenton Sze <nksze@cs.ucla.edu> (via e.mail) where your program
(executable and source codes) and output files are located on the departmental servers, so that
Kenton and I can verify your results if necessary. Please make sure that I have the proper access
right to these data for 3 weeks from the date you turn in the report.
5. Each person will give a 20-min presentation of their work on Monday, March 20th, 8-11am PST.
V. Grading
Basic: You'll receive 75% credit if your program works correctly for all test cases, and produces
reasonably optimized solutions (QoR <= 1.5).
Competitive: The remaining 25% credit will be assigned based on how good your solution
compared to others.
VI. References