The workbook http://home.comcast.net/~pstlarry/FFRevenu.xls
contains three spreadsheets and a VBA (Visual Basic) user-defined function. [Download
the workbook by right-clicking your mouse and either “Open or “Save Target
As...” to you computer. Left clicking on the link no longer works.] One
spreadsheet and a VBA function count the exact number of squares that fit in a
circle or dies per wafer (DPW). Figure 1 shows the wafermap pattern used in the
spreadsheet; other patterns are available, including wafers with flats. The
other two spreadsheets simulate fab revenue as a function of DPW and other
factors. Although IC mask makers could count the dies on a wafer, people who do
fab scheduling, reliability and service analysis, and revenue estimation,
simulation, and optimization need DPW counters for planning and layout.

The DPW problem of packing squares in a circle does not appear to have a
mathematical solution except for small counts approximately 300 or so. There
can be as many as 50,000 LEDs on a 300 mm wafer. So I programmed a
squares-in-a-circle counter, constrained by straight cuts for DPW. I also wrote
VBA DPW counter functions for rectangular dies, die-centered-in-wafer pattern,
alternative offsets from die-centered to four die corners in wafer center, and
for wafers with one or two flats. For large numbers of dies per wafer, it
appears that the pattern with four die corners in the wafer center yields more
dies than the die-centered-in-wafer pattern. Some offsets yield more DPW than
either symmetrical pattern layout. Furthermore, it is possible to pack more
dies on wafers, if the straight-cut restriction is relieved slightly. Add four
more rows, one on each side of the pattern, and slice them off first.

The “CircleSq” spreadsheet lists available mathematical solutions to the
square-in-circle packing problem, up to 300 squares in a circle. Some
mathematically correct solutions are not feasible for die cutting, because
their boundaries are staggered. Table 3 of the CircleSq spreadsheet uses a VBA
function to determine the exact number of squares that fit in a circle. The VBA
function works on the assumption that the circle is centered on (0,0), and four
squares have corners there too as do the rectangles in figure 1. Figure 1 shows
that eight rectangles fit in the circle.

Figure
1. How many rectangles fit in a circle, with (0,0) as origin with four die
corners in the center of the wafer?

The CircleSq spreadsheet includes traditional approximation formula,

DPW = Wafer area/die area – Wafer
circumference/die diagonal length,

which is biased, usually low. You can see the bias in table 1, from table 3
of the CircleSq spreadsheet. It is for a 300 mm wafer. There are no exact
mathematical solutions for more than ~300 dies, and the solution listed for a 15
mm square is not feasible for straight cut dies. There is another approximation
in terms of wafer diameter d and die area S, [Wikipedia]

DPW = d*p*[d/(4S)-1/Ö(2S)].

Fortunately, you don’t need the approximation.

Table
1. Square dies per 300 mm wafer as a function of side dimension, mm

Side, mm

Exact

Approx.

Exact VBA

1

70019

70064

2

17338

17348

3

7631

7628

4

4251

4272

5

2694

2692

6

1852

1844

7

1347

1364

8

1021

1028

9

798

812

10

640

640

11

523

540

12

435

440

13

366

376

14

313

316

15

276

269

268

Since the original was posted on the Internet, people have asked for alternative
patterns:

The “Revenue” spreadsheet computes revenue for specified values of the
variables. Change the values of the variables to suit. The spreadsheet also
includes a simple optimization by linear programming using Solver. Additional
constraints should be added to handle buffer capacity and so on.

The “Random Yield Revenue” spreadsheet simulates revenue for random yield,
assumed normally distributed. Other distributions can and probably should be
used. If you want alternative distributions, contact pstlarry@yahoo.com. Yield is assumed
constant as a function of time, but that’s easily changed.

This is a prototype of fab scheduling intended to facilitate incorporation
of reliability and service operations as well as alternatives for production
opportunities. It could be run as an integer program, if you have the Premium
Solver. If you would like additions, please let me know.