Lec 18
Lec 18
Lec 18
Lecture - 18
Global Routing (Part 1)
So, we shall now start our discussion on Global Routing. So you recalled in our
earlier lectures we have looked at the measure or area routing, where 2 arbitrary
points on a 2 dimensional surface could be connected, but one point was there you
recall the entire path was laid out on a signal layer that was one of the restriction or
requirement whatever you say. But here in global routing and outer subsequently
detailed routing that you consist of that kind of restrictions not there. We are allowing
to use multiple layers for interconnections.
So, global routing and detailed routing, they are not independent they go hand in
hand. When contrast the grid routing algorithms which you discussed they are used
not directly associated with global or detail routing but whenever we run into some
problem we use are routing.
Because area routing is considered to be one, where you can find path between 2
points which are otherwise not so easy to connect. So if there is a path existing it will
find a path, but in these method detail or area routing we are basically concentrating
on small paths of our design or the layout and you are trying to solve the routing
problem in an incremental fashion. So let see the basic objectives of this two.
Global routing is a step very define something called routing regions. So we shall be
looking at this. And we generate a tentative route for each net. We do not tell you the
exact route to follow. Like for example, if you want to go from a city a to city b, I can
give your tentative routes saying that well you first go to town d, then go to town x
from there you can go to city b.
But I do not tell you exactly which row the routes to follow to go to your other 2
towns intermediate towns. There can be multiple ways to go there, but I give you a
tentative route, this is my global routing. I only specify the tentative route I do not
layout the exact wires at this stage. So each interconnection net is assigned to a set of
routing regions in this step. As I said it does not specify the actual wire layouts. So
where as in detail routing we actually complete the interconnections. So we consider
this problem on a region by region basis. Typically, any solve each of the regions by
completing all wire layouts vertical and horizontal and this is what is done in detail
routing.
So, here we shall see later there are 2 kinds of detail routing sub problems channel
routing and switch box routing. So we shall see this later. Now this is just an example.
So here you see some blocks and this dotted lines show you the nets the points which
need to be connected. So in global routing here only some rough paths are shown, like
for example, when you connect let say point here to point here, it says that you have
to follow roughly this path. And alternative could have been you follow this path. Or
it could have seen you can follow this path. So global routing does this one, global
routing process is done so each of this rough connections and actually map to
horizontal and vertical segments.
Now, again I repeat. Here the solution that is shown is 2-layer routing solution, but
the horizontal lines are laid out on one layer vertical lines are laid out on another
layer. And any crossing here this corresponds to something called the wire connection
which means this is connection between the 2 metal layers. Now this detail routing
problem can be identified as routing or interconnecting points between 2 parallel
surface. This is called a channel. Or you consider a problem like this where you have
an enclosed region by pins on all 4 sides. This is called a switch box. This can be a
switch box routing.
Now, let us come to the concept of routing regions. Routing regions are those so
which interconnecting wires are laid out. Now the question is how to define this
region like.
(Refer Slide Time: 05:46)
Let me take an example. Let say I have a rectangular layout surface where layer least
some blocks like this. One block here, one block here, one block here. Let say one
block here and one block here.
Now, now you have once I have placed it. So I can define some regions for routing.
So roughly I am showing this is one region. This is one region. This is one region.
This is one region. This is one and this is one. When addition you can use this as
regions also because you can also make connections through this side. These are all
routing regions.
Now, you look at let say places like this. Where your connections coming from 3
different sides. Some wires may come from top some from bottom some from this
side and also some from pins here. So this can be a switch box kind of problem where
pins are coming from all 4 sides, but problem like this where you have a parallel layer
where some pins here and some pins here need to connected. This is channel. This is a
horizontal channel this is a vertical channel, vertical channel.
So, the types of routing regions can be either horizontal channel which is parallel to
the x axis with the pins corresponding to the nets at that top and bottom boundaries.
Vertical channel is a ninety degree rotated version of that. This parallel to the y axis
pins on the left and right. And switch box as I said it is a rectangular region with pins
coming from all 4 sides. This is the more complex sub problem among the 3. Say
horizontal and vertical channel routing problem are the same it is just a 90-degree
rotation nothing else.
So, the point to note is that during the global routing phase the first important step is
to identify the routing regions. So, we shall see that how routing regions can be
typical identified later on. And routing regions for most of the design styles do not
have pre fixed capacities. Like sometimes you can move the blocks around like in a
standard cell, you have this cells arranged in rows, but if you find that the space you
have kept for the channel is not sufficient, you can always move the 2 blocks away
little bit makes space for the channel or if you see that; that means, you do not require
that must space you can bring them means you can bring them closer together.
So, the width of the channels can be adjusted as per the situation. And also there is
another point which you shall see and little later, the order in which the routing
regions are considered is also important. Because the overall routing quality and also
the complexity depends on the order in which the routing regions are been considered.
(Refer Slide Time: 09:25)
Talking about that the channel junctions, so 3 types of channel junctions occur in
layout. First is called L type you see. This is block which is placed. There is a channel
here vertical orientation. There is a channel here horizontal orientation the 2 channels
are connected as a L, this looks like an L. This is the L type channel. This typically
occurs at the corners of the layout circles. So here the ordering is not important you
can either route the vertical on first and then horizontal or the reverse.
And simple channel routing algorithms can be used for this. Well you shall see these
red is algorithms later, T type means this wide block and 2 smaller width blocks
below it. So you see there is a channel here there is a channel here 2 horizontal
channels and one vertical channel here, so the 3 channels from T. Now the idea is that
you see, here the concept is that the leg of the channel; that means, this vertical
channel has to be routed first.
(Refer Slide Time: 10:51)
Let us try to understand why. This is an obstacle let say this is an obstacle there is
some cells and these are some pins which you want to connect. This is some pins are
here, some pins are here and some pins are also here.
So, what we say is that, first we interconnect this leg of the T. Let say we connect
these points. So these points can be extended here, because they may also get
connected to the other points will be this this is also getting connected here. This is
also connected here fine. Now the reason why this channel has to be connected first is
that, once you complete this, the position of these 3 signals are fixed. So now, this
whole channel looks like a consisting channel routing problem. Fixed in location on
the top fixed in location on the bottom, but if you do not consider this first, if you are
considering this one initially, so in the middle you really do not know the exact
position of these signal it can be here. That is why once you do this, then you can
route the other points like this.
You can route this. You can complete the routing. This you can possibly connect to
this. So for a T junction the leg of the T has to be routed first and then the shoulder,
but for a plus type like here when there are 4 blocks like this, you see the central point
here there are pins coming from all 4 sides. This is switch box routing problem. And
you just use switch box routers. So you see during placement also it is advisable to
place the blocks in this way, so that switchbox problems do not appear. Because
channel routing problems are much simpler to solve as compare to the switch box
routing problem.
So, if you can change or modify your placement and little bit in such a way that such
switchbox kind of regions do not appear, then your routing problem can become
simpler.
There are some design style specific issues also. Like for example, in the full custom
design style, the problem formulation is exactly same as what we have discussed just
now. So all the types of routing regions like channel and switchboxes and the channel
junctions L type, T type and plus type they can occur. And I mentioned the channels
can be expanded some blocks will be moved here. And there so some violation in the
channel capacity can be allowed, but major violations are not allowed because if you
say that I have to move a block too much then other blocks might get disturbed.
(Refer Slide Time: 14:36)
So, some placement may need to be change significantly there is. Standard cell. So in
a standard cell if you recall, the cells are placed along rows so after you complete the
placement the location of each cell is fixed. The capacitor location of each feed
through is fixed. So recall I mention what is the feed through. Feed through are some
special standard cells which allow a connection from top to go to the bottom so that
across rows you can take a connection and you can connect. Those are the feed
through cells. So what it says is that so after placement you have already place the
feed through cells. And feed through cells have some predetermined capacity how
many such wires can be run across cells.
But if you see that your routing problem is such that you cannot complete the routing
using that many feed through; that means, you are in a problem you have to again go
back change the feed through and again come back to the routing. And first standard
cell there are no vertical channels only horizontal channels. And again you can move
the rows so that heights can be adjusted. So as I mentioned if feed thoughts are not
sufficient routing might fail and over this cell routing is a method which we shall be
discussing later which can be used to further reduce the channel height.
(Refer Slide Time: 16:04)
Like an example I have shown here, like say these are three standard cell rows I am
showing. And some interconnections have already been done across rows. So there
was one feed through cell here, one feed through cell here, only two. But suppose
additionally you also have to interconnect A and B. So you do not have another feed
through are available. So this routing will fail. So what it means is; that means, either
your placement is not good this block should have been placed here or means one
more feed through cell should have been included here, so that you can completes
routing. Now this is one problem.
So, routability like for example, I mean if between these cells that is path only to run
to parallel interconnection tracks. And so already have some connections like this and
like this. So the red connection that is shown this will fail you cannot complete this.
Because this will need third track right. So again for gate array your placement should
be good enough so that your routing can be completed.
So, in global routing we use some graph theory based models, so which can be used to
model the problem and also identified the regions. So some of the important graph
models are shown here we shall be looking at them. The grid graph model is more
suitable for grid routing, but you shall anyway talk about it here.
This is more suitable for area or grid routing. Checker board model is also similar, but
channel intersection graph is something which is the most suitable for global routing
and is most wide used. Let see this data structures one by one.
(Refer Slide Time: 18:22)
Grid graph model. This actually models the same 2 dimensional grid pattern that we
are discussed earlier for Bayes routing algorithm, like for example, Lee’s algorithm.
So we had a set of cells m by n each cell contains some information and they were
represented by obstacle or something.
So, in general in the grid graph model, the layout is considered as a collection of
square cells or grid. So we define a graph where each cell c i represents a vertex v i.
And 2 vertices are connected by an edge if the corresponding cells are adjacent right.
Now a terminal in cell c i suppose, I want to connect point from c i the terminal is
assigned to the corresponding vertex v i. There are 2 kinds of vertices some cells are
occupied which are represented as filled circles, but the unoccupied cells can be
represent as clear circles as you shown example.
So, in this model the capacity and the length of each edge is assumed to be 1. So for
every 2 terminal net the task is to find a path between the corresponding vertices.
(Refer Slide Time: 19:45)
Let us take an example like this. So I have a 2 dimensional grid like this. Where the
shaded regions represent the obstacles. So I can map it to a graph, for every region
corresponds to a vertex the adjacent regions are connected by an edge, the obstacles
are denoted by solid vertices.
If suppose I want to make a connection from this cell to this cell. This cell to this cell,
which in this graph represents this vertex and this vertex. So now, the graph theoretic
sub problem is find a path through this graph not going through this solid vertices,
find a path which can take you from here to here. So once you get a path like this your
found out a path. So any area routing algorithm like Lee’s algorithm or headlocks
algorithm can be used to solve this.
(Refer Slide Time: 20:50)
Now, checker board model is more area efficient. It approximates the layout not as I
uniform array of fix size cells or grids, but as a course grid, some grid can be bigger
some grid can be smaller.
Also the edge capacities between 2 blocks are different. Like for example, there are 2
blocks. There can be one block like this so 2 scenarios I am showing. These are 2
blocks this is one scenario. The other scenario is let say this is the block B 1 and B 2.
This is the block B 1, B 2 and B 3. So for this problem let say I have a vertex for B 1 I
have a vertex for B 2 they are adjacent. So they are connected together and you see
their boundary is totally unblocked, you can use the entire boundary for connection.
So I give a weight of two, but in this case B 1, B 2 and B 3. So between B 1 and B 2
you see only a half of it is available, the other half is shared with B 3. So I give a
weight of 1, similarly between B 1 and B 3 I give a weight of 1, but between B 2 and
B 3 the entire boundary is available. So I give a weight of 2.
So, weights can be assigned accordingly depending on whether the whole boundary
between the blocks are available for routing or it is only partially available right. So
this is what the checker board model is.
So, here I am showing in example. There are 5 blocks placed in a rectangular region
so how many regions are there 1, 2, 3, 4, 5 6, 7 and 8. So there are 8 vertices. So all
the vertices are partially block so they are shown as solid. Now this weights, between
these 2 regions you see that the whole boundary is available for interconnection. So it
is 2. Between these 2 regions, this block is partially blocking the boundary that is why
weight is 1.
Now, let us come to the representation which is most widely used for you can say
global routing particularly in connection with the standard cell routing problem which
is most widely used. So just to recall in a standard cell routing problem we have label
here.
Like here I have the blocks place like this. Let us take some examples like this. So
here also there are interconnection channels which I have placed in between the
blocks. So you can this identifying the inter the interconnection regions of channels
like here. For example, I can have a channel here, I can have a channel here, I can
have a channel here, a channel here, a channel here. In fact, this whole thing can be
considered as single channel. This whole can be considered as single channel, and so
on.
Similarly, this can be regarded as channels. These are all channels, similarly this side.
These are all channels. So there are so many channels. So there are channels and some
of the channels are intersecting, like for example, this channel and this channel are
intersecting here. This channel and this channel are intersecting, this channel and this
channel is intersecting, this channel this channel is also intersecting.
So, with this channel there is a intersection with 1, 2, 3, 4 mode channels. The channel
intersection graph basically models this kind of intersection between the channels
right. So here each vertex represents a channel intersection. Now the edges represent
channels right. And 2 vertices are connected by an edge if they are there is a channel
intersection between them. Now edge weight represents the capacity of the channel.
(Refer Slide Time: 26:58)
Let us take an example, suppose I have a just example like this you ignore this this
embedded graph which is again shown here. There are 5 blocks placed in a
rectangular region. So as I showed in that example earlier these are all examples of
channels, these are all channels.
And this red dots indicate the intersection between the channels right. In the channel
intersection graph I only extract that information. The channel information is
extracted as vertices and the 2 channel intersection between which there is a common
channel that is connected by an edge. Now depends on the width of the channel how
many wires it can handle, you can assign some weights to the different edges right.
Now you see the channel intersection graph directly keeps track of the channels and
intersections which is important for global routing. We could in global routing what
we are trying to do, we are trying to find out an approximate path between 2 points
that are require to be connected.
For example, I need to connect point here on this channel to a point here. Then I
means I can identify the nearest vertex. So here also I can find out the nearest vertex.
So my problem is to find a path between these 2 vertices. This means I can find out
which sequence of channels I need to follow to complete this routing right.
(Refer Slide Time: 28:50)
Now, a slight extension makes it more meaningful. Now in this extended channel
intersection graph we use not only the channel intersections as vertices, but also the
pins as vertices. Now the rest remains same. So let see that how it looks like here.
The same example I am showing here. I addition I am showing some pins just for
illustration. What I am saying is, that whenever there is a pin there will be vertex
added in the corresponding channel edge.
So, now if I want to connect the pin this, to a pin this. I do not have to find out the
nearest node, but I have a node or vertex corresponding to this pin directly. So I have
to find out path between this and this. So there can be many paths I can for this path.
For example, right so going back this is the global routing problem is basically to find
a path in the channel intersection graph. The capacities of the edges must not be
violated for 2 terminal nets we consider sequentially for multi terminal nets we can
have a approximation to minimum Steiner tree.
Let me take an example to illustrate how this region are generated very simple
example I take fine.
So, let us name the channels let us call this channel as C 1. Let us give them separate
C 2. Let us call it C 3. Let us call it C 4. Let us call it C 5, C 6, C 7, C 8, C 9, C 10, C
11 and C 12. Let us now also consider some example nets like for example, pin here
let us call it 1. This has to be connected to a pin here let us call it 1. Let us pin here 2
this has to be connected to a pin here this is 2. Let us take another one pin here 3 this
has to be connected to a let say pin here 3. So there will be many such nets let say yes
these are all 2 terminal net. There is net number 1, net number 2, net number 3, so
what does this global routing problem or algorithm generates as output.
So, I have shown the channel intersection graph model. You can get this information
from there, represent it as a graph and find some path through that graph. Now let say
suppose I want to connect point 1 to point 1. So for net 1, so you identify path, let say
the path I follow will be this which means I will be following the channels C 1, C 3.
There is m the channel a mist. It let us call it C 13. C 13 for N 2, 2 and 2, let say will
be following this path in a different column is show. So N2 will be following first C
3, then C 13 then C 9 then C 8. Then N 3 well, N 3 let say I am following this path.
So, net 3 will start with C 6 then C 1 then C 2. So for each of the nets I generate
sequence of the channels are the approximate paths that are to be followed. Now from
this what I get, I get a complete specification routing specification I mean, for let say
channel C 1. Now in this example 2 of this nets are passing through C 1. So for the
first net it is coming from here it is going here. For the second net it is coming from
here it is going here. So with respect to a channel, so a channel is a rectangular region
so we assume that pins are on the top or the bottom and the tracks will be laid out like
this. So from this sequence of net list and the information we have obtained from
global routing, we obtain the complete specification for C 1 for this particular channel
C 1 and this is with respect to detailed router.
So, now detailed router will be having the exact specification for this channel, how
many nets are going through it from where it is coming from when it is going and so
on. This is the basic idea. The global router will give information like this from where
you can compile information for every channel and the information from every
channel will be solved in individually and independently by the detailed router. So it
is like a divide and concur problem fine. So for next lecture we should looking at
some more global routing algorithms, so how they work and then we will shall be
moving towards detailed routing in the next week.
Thank you.