0% found this document useful (0 votes)
5 views23 pages

Stockmeyer

The Stockmeyer Algorithm aims to optimize the orientation of blocks in a floorplan to minimize area, often serving as a post-processing step. The implementation involves parsing a Polish expression to build a tree structure, calculating dimensions, and determining the optimal layout. Results show varying improvements in area depending on the initial configuration, with significant enhancements possible if the critical path is not already minimized.

Uploaded by

Kunga Jamphel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views23 pages

Stockmeyer

The Stockmeyer Algorithm aims to optimize the orientation of blocks in a floorplan to minimize area, often serving as a post-processing step. The implementation involves parsing a Polish expression to build a tree structure, calculating dimensions, and determining the optimal layout. Results show varying improvements in area depending on the initial configuration, with significant enhancements possible if the critical path is not already minimized.

Uploaded by

Kunga Jamphel
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Implementation of the

Stockmeyer Algorithm
ECE 6133
Amanda Cummings
The Algorithm itself
 The goal of the algorithm is to find the
optimal orientation of the blocks in the
floorplan for the minimal area.
 Often used as a post-process to further
optimize the area objective
How it was implemented
 Will use the example on pg 65 in the
book.
◦ Polish expression for the book example is “3-
7-H-5-1-V-8-2-H-V-4-V-6-V-H”.
◦ The slicing tree and the original floorplan:
Polish Expression
 Postorder traversal
 Assume that xyH means x is top and y is
bottom, and xyV means x is left and y is
right
◦ The area of the cut xyH has a width =
max(Wx , Wy) and a height = Hx + Hy
◦ The area of the cut xyV has a width = Wx +
Wy and a height = max(Hx , Hy)
Inputs into Stockmeyer Code
 The input is a .ple file
◦ The first line has the polish expression of the
floorplan consisting of blocks starting a 0 and
the ‘-’ delimeter
◦ The rest of the lines contain the width and
height of a block separated by a space
 2nd line has the width and height of block 0, 3rd line
has the width and height of block 1, etc.
Parse Input file
 My code takes the polish expression
string out to parse
 Then, it places all of the widths and
heights into a vector of pairs.
◦ wh[0].first = width of block 0
◦ wh[0].second = height of block 0
Start to build a Tree
 Created a structure called node that will
be used to build a tree
 While loop with the condition of the
polish expression string does not equal
null, then parse the string using the ‘-’
delimeter
◦ If the parse is an H or a V, then it is a root, and
special calculations need to happen
◦ Else create a leaf with NULL left and right
pointers
Connecting the root nodes to its
children
 Postorder expression gives you
left,right,root:
Calculations Needed
 First, sort width and height combinations
(stored in a vector) of the children according
to the root
◦ H sorts into decreasing widths
◦ V sorts into increasing widths
 Calculate width and height combinations of
the root and store in a vector
◦ Store information of what child combinations
created the root combination in a separate
vector
Calculations (cont’d)
New Area and traversal
 Once all of the width and height
calculations are done, sort through the
Main Root’s width and height
combinations to get the minimum area
 Traverse back down the tree to change
the orientations of the leaves that is
needed to obtain the
 Calculate the coorinates of the leaves
while traversing back down the tree
New Area and traversal (cont’d)
Plotting Floorplan
 Not part of the Stockmeyer Algorithm!
 Output the old coordinates, old width
and heights, and block number into a .txt
file
 Output the new coordinates, new width
and heights, and block number into a .txt
file
 Use Matlab to plot
Floorplan of Example
 The blocks that rotated were 6, 2, 5 and 7
Results
# Blocks Original Area New Area % improvement Performance Time # Blocks Rotated Blocks rotated

5 65 65 0 0.009017778 1 0

10 147 95 35.37414966 0.009522222 4 1, 3, 5, 7


2, 15, 16, 18, 22,
30 1075 748 30.41860465 0.010381111 8 23, 24, 27, 28
1, 2, 3, 5, 7, 8, 10,
11, 16, 18, 21, 23,
26, 32, 33, 41, 42,
49, 50, 54, 55, 62,
63, 64, 66, 68, 74,
75, 76, 77, 78, 80,
81, 82, 87, 90, 91,
100 7119 4264 40.10394718 0.015953333 38 96
3, 7, 8, 10, 18, 20,
23, 25, 31, 32, 34,
35, 39, 44, 45, 46,
47, 58, 63, 64, 65,
66, 70, 71, 72, 73,
74, 78, 79, 82, 83,
85, 86, 88, 91, 97,
98, 99, 102, 105,
113, 114, 118,
119, 121, 124,
134, 135, 137,
139, 141, 142,
143, 144, 146,
150 14104 8316 41.0380034 0.018414444 56 147
5 Block Problem
10 Block Problem
30 Block Problem
100 Block Problem
150 Block Problem
Conclusion
 The Stockmeyer Algorithm can improve
the area significantly, or not at all,
depending on the original placement and
the critical path
◦ If critical path is already minimized, then the
area will stay the same.
 Wire routing would become a significant
real world problem that the algorithm
does not take into account
Any Questions?
Sources
 Lim, Sung Kyu, “Practical Problems in VLSI
Physical Design Automation”
 L. Stockmeyer, "Optimal Orientation of
Cells in Slicing Floorplan Designs"

You might also like