[SOUND].
So, here in Lecture 9.2, we're going to start talking about the real technical
part of ASIC placement. And to first order any placer for logic
gates optimizes things. And what it optimizes is an estimate of
the amount of wire it's going to take to connect all those gates.
That estimate is usually called the Wirelength, right?
And the reason we estimate it is because the actual physical act of connecting
those wires, which is called routing those wires, is computationally pretty
complicated. So, we actually have to build some
appropriate mathematical estimators that our optimization algorithms can use.
So, to start things off, talking about the technology of ASIC placers, we're
going to start with some classical forms of wirelength estimation.
So, let's go see how that works. The easiest way to talk about how a
placer works is to build, so let's build a very simple basic placer to start.
And so, we need to start with a simple model of the chip surface itself, and so
the simplest thing is to just use a grid. So, think of this as like a chessboard.
there is a set of slots, or cells that we can use.
And the gates, which are the cells from our standard-cell libraries can go in the
grid slots. And any gate can go in any slot.
You're allowed to put exactly one gate in each one of those slots, and it's okay if
the slots are empty. This is a very simple model of the gates
because it assumes that the gates are all exactly the same size.
And that is extremely unrealistic. But it dramatically simplifies things.
And so, we're just going to go with that in order to get started on, on looking
how we, how we deal with a real placer. So, a grid.
Every slot can hold exactly one gate or exactly zero gates.
It's not okay to put more than one gate in a slot.
All of the gates are the same size. So, we know what the representation is.
What are we trying to do? What does a placer do?
A placer optimizes the ability of the router to connect all the nets.
That's the first thing a placer does. But, the router, which is the tool that
actually puts the wires down and finds paths to make all the wires, you know,
possible. Routers are computationally expensive
things. You can't run one inside the placer.
I need a simplifying approximation. And so, what every real placer does, and
this is no exaggeration, what every real placer does is it minimizes an
appropriate mathematical model of the expected wirelength.
And, to be more precise about that, for each wire in the design, there is an
estimate, an approximation of the expected length of the routed wire.
And we add all of those expected lengths together, those estimated lengths
together for every single wire. So, we sum over all of the wires in the
design, the estimated length of the wire, we add them up and we minimize that.
That is what a placer does. A placer optimizes the estimated lengths
of the wires and solves for locations for the gates that minimize that estimated
wirelength. That's what a placer does.
And, you know, to first order, you could actually categorize the very many
different kinds of placers that there are by the mathematical model they choose to
use for the wirelength. Now, we need a little terminology so that
we can all talk about these things the way people who really do ASIC layout talk
about them. So, the first common term is that the
term for a wire in a layout is a net. So, we call them nets.
And the whole set of gates and wires together is called the netlist.
So, the thing that comes out of multi-level logic synthesis, and then
followed with technology mapping is a netlist.
The thing that goes into your placer is a netlist.
And nets are actually categorized by how many things it connects, and we tend to
call these points. So, I've got a nice simple little example
on the left. I've got a grid that goes from 0 to 4,
it's got five columns on the x direction and the y vertical direction, it goes
from 0 to 5. It's got, you've got six rows and I've
got a two-point net, so I've got a gate at x,y, 1,4, and I've got a gate at 3,1,
and I've got a little blue wire connecting them.
And so, it's really clear that this is a two-point net because there's two gates
that it's connecting. and if everything in every netlist looked
like this, we probably wouldn't be talking about this and we wouldn't be
giving it special terminology. But the problem is they don't look like
this. They also look like this.
So, on the right-hand side, I'm showing you a four-point net.
And so, again, the x grid goes from 0 to 4.
The y grid goes from 0 to 5. There's a gate at 1,4, there's also two
gates at 3,1 and 3,3, and another gate at 4,5.
This is a four-point net because there is a wire connecting four separate points.
This is, in some sense, why we don't just call it a wire.
Because there's a lot of wires that are going to get created to actually route
this thing and connect this thing all together.
And in answer to the first maybe obvious question, which is how is it the case
that there are actually things like wires that have more than two things that they
connect? the obvious answer is, there's fanout.
And I've even got it drawn with the gates sort of showing their directions as
though. There's a little AND gate at each one of
these grid cells, and the inputs appear to be coming from the left.
And the output appears to be going to the right.
And so, there's a gate in the 1,4 location in this grid that appears to be
driving the inputs to three other gates. The ones at 3,1, 3,3, and 4,5.
So, how is it possible to have things with more than two pins, two points?
The answer is fanout. And in modern[UNKNOWN] there are lots of
things that happen to connect to many things at the same time.
So some, some elements of scan chains and the testability components of logic you
know, there are things in the clocks that actually synchronize all the flip-flops.
There's some very, very high fanout nets. In fact, there are often special kinds of
routing technologies to connect those things.
So, it's not just like you can have K.net where K is 4 or 5, you can have K be
hundreds. So, about the wirelength estimation,
there are many, many different kinds of estimators.
And in fact different placers depend for their foundational methods to a large
degree on the kind of wirelength estimator that you pick.
So, why is it hard to estimate the length of wire that's going to be used to
connect the nets? And the answer is that multi-point nets
can be routed in many different paths. And in a dense layout, nets do not all
get routed in their shortest path. I mean, the inside of an ASIC and the
inside of a 20 million or 50 million gate ASIC, it's a very crowded place.
Even with lots of physical layers for wiring, it's a very crowded place.
Nets just don't get to go in at their minimum possible length.
So, a concrete example here. I've got the same diagram that I had on
the previous slide. a grid.
x goes from 0 to 4 on the bottom. y goes from 0 to 5 on the top.
There's a gate at 1,4. Gates at 3,1, 3,3, and 4,5.
And there's a very straight little wire connecting them.
You know, this is basically about the best I can do to wire this, this
particular design. I can't really probably do better than
this than this, this little example here. But in the middle, I'm showing something
that you know, it's a kind of a different looking wire.
Now does this have a little more wire? Yeah, this is, this is just a slightly
longer than the, you know, than the previous wire is just because of the way
things escape from the, from the topmost gate.
But, you know, this is still okay. I, I would even say maybe this is good.
You know, this is a particular, this is a good path.
You know, it's just a little bit worse than the previous path.
But now on the right-hand side, I'm showing an appallingly bad gate
wirelength. it's again, the same example you know, x
is you know, 0 to 4, and y is 0 to 5. but the, the wires are snarled all over
the place. They seem to go way out of their way to
connect things. And, and there's nothing else to say
other than, you know, this is pretty bad. And the reason this is pretty bad is
probably there's 20 million other wires that are trying to get routed, and this
one just didn't get able to be routed short.
And in real designs, that just happens. So, estimating what the length of the
wire is, is actually quite challenging. We have to estimate something that is a
reasonable model of what the wire might actually be.
And so, what we tend to do is, is estimate a best wirelength.
We tend to estimate the best and then we, we do some other techniques to sort of
deal with the fact that they're not always going to come out this good.
So, the most famous estimation for a wire is called the Half-Perimeter Wirelength,
and sometimes abbreviated HPWL. But it's also called the Bounding Box
Wirelength, usually BBOX, BBOX. And you'll see us using them
interchangeably in this lecture. The idea is pretty simple.
I'm going to describe it in words first. You put the smallest bounding box you can
around all the gates. So, let's assume in the little grid
things that I'm showing you. The gate lives in the center of the grid
slot. And the coordinates that are labeling x
equals 0, 1, 2, 3, 4 in the example I'm showing on the bottom left, y equals 0,
1, 2, 3, 4, 5. Let's assume the xy coordinates are the
center of the cell, the grid. And that the gate lives on that, that
coordinate. And so, what we do is we put the smallest
possible box around all of the gates. And then, we measure the width of the
box, delta x, and the height of the box, delta y, and we add them together, and
that's our wirelength estimate. So, for this little example where there's
a gate at 1,4 and a gate at 3,1, the first thing we do is we put a bounding
box. And so, the box goes from x equals 1 to 3
and y equals 1 to 4. And then, we simply we do the math.
Delta x is 3 minus 1, that's 2. Delta y is 4 minus 1, that's 3.
We add them together, 3 plus 2 is 5. The half-perimeter wirelength is 5.
And one of the great things about the half-perimeter wirelength is that it's
easy to do a multi-point net. So, here's a four-point net again on the
x equals 0 to 4, y equals 0 to 5 grid gates at 1,4, 3,3 3,1, 3,3, and 4,5.
We again put the smallest bounding box, and that goes from x equals 1 to 4 and y
equals 1 to 5. And then, we again, we can do the math.
Delta x is 4 minus 1, that's 3. Delta y is 5 minus 1, that's 4.
The half-perimeter wirelength estimate for this gate is 3 plus 4, is 7.
So, the great thing about the half-perimeter wirelength, it's easy and
it works for multi-point nets. So, more generally, the half-perimeter
wirelength, the general formula that I'm showing here is, you look at all of the
x-coordinates of all your gates, you take the max.
You look at all the x-coordinates of your gates and you take the min and you take
the max minus the min. Then, you look at all the y-coordinates
for your gates, you take the max. You look at all the y-coordinates for
gates, you take the min. You take the max minus the min, and
that's what you add together. The maximum, the x-coordinates for the
gates minus the min of the x-coordinates for the gates plus the max of the
y-coordinates for the gates minus the min of the y-coordinates for the gates,
that's the half-perimeter wirelength. One of the important things to note is
that this is always a lower bound on the real wirelength.
Which is to say, it is always less than or equal to the real wirelength no matter
how complex the final routed path is. You need at least this much wire.
And look, this just makes sense. You need to go from the gate on the far
left to the gate on the far right. That's delta x amount of wire from the
previous diagram. And you need to go from the bottom most
gate to the top most gate, and that's delta y amount of wire.
And no matter how you route this path, you need delta x plus delta y amount of
wire. So an important aside to note is that,
all of the wiring on big chips and most of the wiring on big printed circuit
boards is strictly horizontal and vertical.
There's no arbitrary angles for manufacturing reasons.
That's rigidly true for integrated circuits these days, big modern digital
SOC designs. there is some funny all angle wiring to,
to do things like get out of complicated pin arrangements underneath the big
chips. But once you escape from the pins near
the chip then you know, it already actually go across the board strictly
horizontal and strictly vertical. So that's just another reason the HPWL is
a good estimator because it just does a nice job of estimating the lower bound on
the amount of wire. No matter how many points you have, no
matter how many pins you have, no matter how many gates you have on your net.
this is just interesting, this is what the actual half-perimeter wirelength
estimation distribution looks like for a little design.
So this is old data. So this is 165,000 gate ASIC from the
late 1990s from Jens Vygen's group at Bond/g.
this is 181,000 net. So you know, call it about 200,000 nets.
I'm showing you this because it's just sort of an, an interesting piece of data.
the horizontal axis here shows a histogram buckets for the wirelength.
So, 0 to 0.5, 0.5 to 1, 1 to 1.5, 1.5 to 2, 2 to 2.5, 2.5 to 3, 3 to 3.5, etc., up
to 4, 4.5, 5, 6, 7, 8, 9, 10. And then, note at the end the buckets get
bigger, 10 to 15, 15 to 20. this is actually in millimeters, this is
a really old chip. So, it's one of the things to be aware of
is that this is a really old chip. so don't think about this as being
anything other than a a normalized number.
And note that the vertical scale is a log scale, right?
So, the vertical scale is a log scale. The vertical scale says, how many nets
have this length? So, you know, question.
How many nets are the shortest possible length between 0 and 0.5 in whatever
units are appropriate? And the answer is 100,000 of almost
200,000 nets. How many nets are between 0.5 and 1?
and the answer is, as far as I can tell, probably about 30 or 40,000.
Remember, this is a log scale, maybe 20,000.
the idea is that most nets are short, most nets are very short.
But unfortunately, there's a really long tail, and there are nets out here that
are you know, 40 times longer than the shortest net, and those nets are not zero
in number. So, real routers deal with the fact that
most of the nets are short but there's a non-trivial number of nets that are long.
And so, is just an interesting data that shows you that in a concrete way.
[MUSIC]