Vertical Power Rail Aware Placement

Problem Formulation

V_{DD}
VDDV_{DD}
V_{SS}
VSSV_{SS}

Violation

Violation

V_{DD}
VDDV_{DD}
V_{SS}
VSSV_{SS}

No violation

V_{DD}
VDDV_{DD}
V_{SS}
VSSV_{SS}

Simply shift the cell

Simple Remedy

Constraints : 

C1. Overlap Constraint

C2. Vertical Power Rail Constraint

Simple Remedy Method : 

  1. Legalize without C2
  2. Detailed Placement without C2
  3. Legalize C2

What we can improve

Method1 : 

  1. Legalization with C2
  2. Detailed Placement with C2

Method2 : 

  1. Legalization without C2
  2. Detailed Placement with C2

Also, we shouldn't increase too much time

Objective of our work

  1. Legalize all violations
  2. With little time increase
  3. With little wire length increase
  4. Preserve some local optimality

Math Formulation

x_{j}-x_{i}\geq w_{i},\quad \forall j> i
xjxiwi,j>ix_{j}-x_{i}\geq w_{i},\quad \forall j> i
y_{i}=nh,\quad \forall i\wedge n\in \mathbb{Z}
yi=nh,inZy_{i}=nh,\quad \forall i\wedge n\in \mathbb{Z}
\lvert x_{i}+p_{ij}^{s} - l_{k} ^{s}\rvert\geq\frac{w_{pin}^{s}+w_{rail}^{s}}{2}
xi+pijslkswpins+wrails2\lvert x_{i}+p_{ij}^{s} - l_{k} ^{s}\rvert\geq\frac{w_{pin}^{s}+w_{rail}^{s}}{2}
s \in \{ DD,\,SS\},\,\forall i,j ,k
s{DD,SS},i,j,ks \in \{ DD,\,SS\},\,\forall i,j ,k

Non-overlap

On power rail

Vertical power constraint

w_{pin}^{DD}
wpinDDw_{pin}^{DD}
w_{pin}^{SS}
wpinSSw_{pin}^{SS}
w_{rail}^{DD}
wrailDDw_{rail}^{DD}
w_{rail}^{SS}
wrailSSw_{rail}^{SS}
x_{i}
xix_{i}
l_{k}^{DD}
lkDDl_{k}^{DD}
l_{k}^{SS}
lkSSl_{k}^{SS}
p_{ij}^{SS}
pijSSp_{ij}^{SS}
y_{i}
yiy_{i}
p_{ij}^{DD}
pijDDp_{ij}^{DD}

Single Row Height

  • Borrow idea from abacus
  • Introduce new constraint
  • Observe property in a row with fixed order

A1

Revise C2 by moving cells in the row

Abacus with L1 norm

\sum\limits_{i=1}^{r}\lvert x_{i} -\tilde{x}_{i} \rvert=\sum\limits_{i=1}^{r}\lvert x_{1}-(\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j} )\rvert
i=1rxix~i=i=1rx1(x~ij=1i1wj)\sum\limits_{i=1}^{r}\lvert x_{i} -\tilde{x}_{i} \rvert=\sum\limits_{i=1}^{r}\lvert x_{1}-(\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j} )\rvert
=\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
=i=1rx1x^i=\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}
x^i=x~ij=1i1wj\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}

Take median

Single Violation

Violation

\delta_{l}
δl\delta_{l}
\delta_{r}
δr\delta_{r}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}
c_{2}
c2c_{2}
c_{2}
c2c_{2}
\delta_{l}
δl\delta_{l}

No violation

Single Violation

Violation

\delta_{l}
δl\delta_{l}
\delta_{r}
δr\delta_{r}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}

Decluster

Single Violation

Violation

\delta_{l}
δl\delta_{l}
\delta_{r}
δr\delta_{r}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}

New

Violation

Single Violation

Violation

\delta_{l}
δl\delta_{l}
\delta_{r}
δr\delta_{r}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}

Multiple Violation

c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}
c_{1}
c1c_{1}
c_{2}
c2c_{2}
c_{3}
c3c_{3}
c_{4}
c4c_{4}
c_{5}
c5c_{5}

Value of A1

  • No guarantee to fix all violation (unless no boundary)
  • The cost might be too large
  • We may leave some violation to the next stage
  • This legalize process might be done with detailed placement
  • A1 could be a measure to choose row just like abacus
  • If A1 no exceed boundary, it's optimal in a row(need to be proved)

Proof

  • For only one cell, place it in original place
  • Assume we have optimal solution when n cells are placed
  • When placing cell n+1, there are two cases:
    • non-overlap->trivial
    • overlap
  • Put the cell n+1 into the last cluster and move the cluster to the left until the value cannot be improved
x_{1}=x^{*}(r)
x1=x(r)x_{1}=x^{*}(r)
\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}
x^i=x~ij=1i1wj\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}
\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
i=1rx1x^i\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
\tilde{x}_{j+1}\leq x^{*}(j)+\sum\limits_{i=1}^{j}w_{i}
x~j+1x(j)+i=1jwi\tilde{x}_{j+1}\leq x^{*}(j)+\sum\limits_{i=1}^{j}w_{i}

Proof

\{r_1, r_2, ..., r_m\}
{r1,r2,...,rm}\{r_1, r_2, ..., r_m\}

Let cell c be the right most cell with

x^{\prime}_{i} \leq x_{i} \quad \forall i \leq c
xixiicx^{\prime}_{i} \leq x_{i} \quad \forall i \leq c

Legalize C2 with Detailed Placement

  • Revise C2 by swapping cells
  • Swapping:
    • Global swapping
    • Vertical swapping
  • Local reordering with C2

A2

Swap with cell satisfy C2

For detail, this is the future work

Recall

\sum\limits_{i=1}^{r}\lvert x_{i} -\tilde{x}_{i} \rvert=\sum\limits_{i=1}^{r}\lvert x_{1}-(\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j} )\rvert
i=1rxix~i=i=1rx1(x~ij=1i1wj)\sum\limits_{i=1}^{r}\lvert x_{i} -\tilde{x}_{i} \rvert=\sum\limits_{i=1}^{r}\lvert x_{1}-(\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j} )\rvert
=\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
=i=1rx1x^i=\sum\limits_{i=1}^{r}\lvert x_{1}-\hat{x}_{i}\rvert
\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}
x^i=x~ij=1i1wj\hat{x}_{i}=\tilde{x}_{i} -\sum\limits_{j=1}^{i-1}w_{j}

Take median

Legalize C1

min heap

max heap

min heap

max heap

Odd

Even

median

median interval

Legalize C1

Cluster 1

Cell to be inserted

Merge

Cluster

x_{1}
x1x_{1}
x_{1}
x1x_{1}

Cluster 1

Take x1 from median heap

Push into median heap

Legalize C1

Cluster 1

Cell to be inserted

New

Cluster

x_{1}
x1x_{1}

Cluster 1

x_{1}
x1x_{1}
x_{1}
x1x_{1}

Cluster 2

Result

Displacement
After abacus 23.9392
Shift to left 56.1538
Shift to right 73.5437
Opt shift 48.7764

After Legalize C1

  • We now have a overlap-free design
  • Fix C2 by using detailed placement techniques
  • Final legalization of C2

Detailed Placement Flow

  • Global swapping
  • Vertical swapping
  • Local reordering
  • Single-Segment clustering -> A1

Global Swapping

  • First swap cells violating C2
  • Swap to gain large benefit
  • We need to estimate the cost for fixing C2
B = (W_{now}-W_{target})+(C_{now}-C_{target})
B=(WnowWtarget)+(CnowCtarget)B = (W_{now}-W_{target})+(C_{now}-C_{target})

HPWL change

Cost to fix C2

Exact value of C

We can perform A1 and get the exact cost for fixing C2, but that might cost too much time

We need reasonable heuristics to and choose candidate carefully to help us

Vertical Swapping

  • Similar to global swapping
  • More conservative
B = (W_{now}-W_{target})+(C_{now}-C_{target})
B=(WnowWtarget)+(CnowCtarget)B = (W_{now}-W_{target})+(C_{now}-C_{target})

Local Reordering

  • Reorder cells in the same segment
  • Window size = 3(Less computation time)
  • Reordering might be useful to solve C2
B = \Delta W +\Delta C
B=ΔW+ΔCB = \Delta W +\Delta C

Worst Case

  • GS, VS and LO all get negative benefit
  • When using A1, we might not fix it
  • In this case, we need to pay some cost to fix it
  • Mark this cell and accept negative benefit

Conclusion

  • Perform A1 to select row
  • Perform A2 to decrease C2 violation
  • Perform A1 to move in the row
  • Sacrifice wire length to fix all violation

Future Work

  • Derive the detail and proof the optimality of A1
  • Perform some experiment to find properties
  • Complete detail of A2 or maybe mixture of A1, A2
  • Conduct experiment on benchmark
  • About carefully final legalization

Vertical power rail aware placement

By 許泓崴

Vertical power rail aware placement

  • 586