Lecture 9: Double Patterning πŸ‘«

@luk036

2022-11-23

Background

  • In the past, chips have continued to get smaller and smaller, and therefore consume less and less power.

  • However, we are rapidly approaching the end of the road and optical lithography cannot take us to the next place we need to go.

Sub-wavelength Lithography

  • Feature size << lithography wavelength
    • 45 nm vs. 193 nm

image

  • What you see in the mask/layout is not what you get on the chip:
    • Features are distorted
    • Yields are declined

image

What is Double Patterning?

image

image

Unlike conventional optical lithography, which exposes the photoresist once under one mask, masks is exposed twice by splitting them into two, each with half its feature density.

Key technologies

  • Layout fracturing algorithm to reduce the number of rectangles and the total cut length.

  • Dynamic priority search tree for plane sweeping.

  • Graph-theoretic approach:

    • Convert the coloring problem to a T-join problem and then solve it with Hadlock's algorithm.
  • Decompose the underlying conflict graph into its tri-connected components using a data structure named SPQR-tree.

Polygon Fracturing Algorithm

  • Allow minimal overlap to reduce the number of rectangles, and thus the number of conflicts.

image

Conflict Detection

  • Rule 1: If the distance between two rectangles is , then the two rectangles are not in conflict.

  • Rule 2: Two overlapping/contacting rectangles are NOT conflict.

  • Rule 3:

    • Definition: A polygon is said to be rectilinearly convex if it is both x-monotone and y-monotone.

    • Two rectangles and are in conflict if they are apart and there is a path from to that reconstructs a "concave" polygon.

    • Conflicting: , , but not , and .

image

Conflict Graph

image

  • Blue edge: positive weight (opposite color preferred)
  • Green edge: negative weight (same color preferred)

Formulation of the Layout Decomposition Problem

  • INSTANCE: Graph and weight function
  • SOLUTION: Disjoint subsets of vertices and so that and .
  • MINIMIZE: total cost where or

πŸ‘‰ Note: the problem is

  • Linear time solvable for bipartite graphs.
  • Polynomial time solvable for planar graphs.
  • But in general, NP-hard (even for tripartite graphs)

Graph-Theoretic Approach

  • Q: How can we produce a high-quality result when the problem is NP-hard?

  • A: Observe that is a nearly planar graph: we can use Hadlock's algorithm.

  • However, the time complexity of this method is still very high.

  • Solution: Graph division methods.

SPQR-Tree

Connected Graph

  • Recall that a graph is a connected if every pair of vertices in is connected by a path.

  • A graph can be divided into its connected components in linear time.

  • Clearly, the color assignment problem can be solved independently for each connected component without affecting any QoR.

Bi-connected Graph

  • A vertex is called a cut-vertex of a connected graph if removing it disconnects .

  • If no cut-vertex is found in , then the graph is called a bi-connected graph.

  • In the following example, , and are cut-vertices.

    An example of a conflict graph with its bi-connected components. Vertices <data class="katex-src" value="a"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">a</span></span></span></span></data>, <data class="katex-src" value="b"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6944em;"></span><span class="mord mathnormal">b</span></span></span></span></data>, and <data class="katex-src" value="c"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">c</span></span></span></span></data> are cut-vertices.

Bi-connected Components

  • A division of into its bi-connected components can be performed in linear time by using a simple depth-first search to identify cut-vertices.

  • It can be easily shown that the color assignment problem can be solved for each bi-connected component separately without affecting any QoRΒ [@chiang_fast_2005]

  • Question: Is it possible to further decompose the graph?

Tri-connected Graph

  • If removing a pair of vertices will disconnect , the pair is called a separation pair of .

  • If no separation pair can be found in , then it is called a tri-connected graph.

  • In the following example, , , , and are separation pairs.

    An example of a conflict graph and its tri-connected components. <data class="katex-src" value="{a,b}"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">a</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">b</span></span></span></span></span></data>, <data class="katex-src" value="{c,d}"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">c</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">d</span></span></span></span></span></data>, <data class="katex-src" value="{c,e}"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">c</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">e</span></span></span></span></span></data>, <data class="katex-src" value="{c,f}"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal">c</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span></span></span></span></span></data> and <data class="katex-src" value="{g,h}"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.03588em;">g</span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">h</span></span></span></span></span></data> are separation pairs.

Tri-connected Graph Division

image

SPQR-tree

image

  • A division of into its tri-connected components can be performed by identifying the separation pairs in linear time with the help of SPQR-treeΒ [@gutwenger_linear_2001].

Skeleton

  • Each tree node of SPQR-tree is associated with a tri-connected component of called skeleton

  • A skeleton represents a contraction of based on a set of virtual edges.

  • A skeleton was classified into four types:

    • Series (S): the skeleton is a cycle graph.

    • Parallel (P): the skeleton contains only two vertices and , and parallel edges between and where .

    • Trivial (Q): the skeleton contains only two vertices and , and two parallel edges between and , one of which is virtual and the other is real.

    • Rigid (R): the skeleton is a tri-connected graph of a type other than the above.

Divide-and-Conquer Method

Divide-and-conquer method

Consists of three basic steps:

  1. Divide a conflict graph into its tri-connected components.

  2. Conquer each tri-connected component in a bottom-up manner.

  3. Combine the solutions into a complete solution in a top-down manner.

We calculate two possible solutions for each component, namely of the same color and of the opposite color.

image

Bottom-up Conquering: S Type

image

P Type

image

R Type

image

Top-down Merging

image

Node Splitting

  • Node splitting (additional rectangle splitting) for resolving conflicts.
  • To reduce the number of "cuts", we apply node splitting after one color assignment and then recolor.

.pull-left[

Before:

image

] .pull-right[

After:

image

]

class: middle, center

πŸ§ͺ Experimental Results

45 nm SDFFRS_X2 Layer 11, 9

image

image

image fft_all, 320K polygons

πŸ§ͺ Experimental Results

#poly#nodes/#edgesw/ spqrw/o spqrtimecost
363131371/5206013.2938.2565.3%4.58%
962883733/138738199.942706.1292.6%2.19%
18360159691/265370400.434635.1491.4%1.18%
31261284957/4772731914.549964.1880.7%1.61%
49833438868/7387593397.2615300.977.8%1.76%
75620627423/10577943686.0717643.979.1%2.50%

: Experimental results of the runtime and cost reduction (with minimizing the number of stitches)