PLACEMENT — 연결을 실제 공간으로 옮기는 세 가지 방법
배치, 연결을 실제 공간으로
옮기는 세 가지 방법
연결 관계가 정해져도 “그 게이트를 칩의 어디에 놓을 것인가”는 그대로 남습니다. 이 노트는 mincut, GORDIAN, TimberWolf가 같은 질문에 어떻게 서로 다른 모델과 비용으로 답하는지를 예제 숫자까지 따라갑니다.
큰 그림: 우리는 지금 무엇을 배치하고, 무엇을 최적화하는가WHY PLACEMENT EXISTS
회로의 연결 관계가 정해졌다면 설계가 거의 끝난 것일까요? 아직 중요한 질문이 남아 있습니다. “그 게이트들을 실제 칩의 어디에 놓을 것인가?” 오늘 배우는 placement, 즉 배치는 바로 이 질문을 다룹니다.
협업 관계를 아는 것과 사무실 책상을 배치하는 것은 다릅니다. 자주 협업하는 사람들을 가깝게 두고 싶지만, 모든 책상을 같은 자리에 겹쳐 놓을 수는 없죠. 회로 배치도 연결된 셀들을 가깝게 두려는 요구와 제한된 공간을 나누어 쓰려는 요구를 함께 다룹니다.
교재가 제시하는 전통적인 목표는 배선 길이, 타이밍, 혼잡입니다. 게이트의 위치는 열 집중, 전력 소모, 전원 잡음 같은 문제에도 영향을 줍니다. 다만 오늘의 세 가지 대표 알고리즘과 계산 예제는 주로 배선 길이를 줄이는 배치에 초점을 맞춥니다. 이 강의를 모든 배치 목적을 한꺼번에 해결하는 방법으로 이해하면 안 됩니다.
- Global placement
- 각 게이트가 칩의 어느 지역에 들어갈지 대략적인 위치를 정합니다. 이 단계에서는 셀들이 겹칠 수 있습니다.
- Detailed placement
- 겹침을 제거하고 위치를 구체화합니다. “전체적으로 연결이 짧아 보인다”와 “실제로 겹치지 않게 놓였다”는 서로 다른 평가입니다.
오늘 공부할 방법은 세 가지입니다. Mincut placement는 연결을 적게 끊으면서 회로와 공간을 나눕니다. GORDIAN은 좌표를 변수로 삼아 이차 최적화를 수행하고, 셀들이 퍼지도록 제약을 추가합니다. TimberWolf는 셀을 교환하면서 배치를 개선하되, 교환 때문에 주변 셀을 밀어야 하는 비용까지 고려합니다. 교재에서 앞의 두 방법은 전역 배치에, TimberWolf는 전역 배치와 상세 배치 양쪽에 연결됩니다.
이 강의에서 실제로 익혀야 할 것은 알고리즘 이름이 아닙니다. 연결 관계를 어떤 수학적 모델로 바꾸는지, 무엇을 비용으로 세는지, 공간 사용을 어떻게 통제하는지입니다. 같은 회로라도 이 세 질문에 대한 답이 달라지면 전혀 다른 알고리즘이 나옵니다.
핵심 O/X 퀴즈
1. Global placement 결과에는 셀의 겹침이 남아 있을 수 있다.
2. 이 장의 세 대표 방법은 모두 동일한 형태의 비용함수를 사용한다.
3. 연결 관계가 정해진 뒤에도 게이트의 물리적 위치를 결정하는 문제가 남는다.
공통 언어: 넷, 그래프, 절단 비용, 그리고 HPWLNET → MODEL → COST
넷은 서로 연결되어야 하는 단자 또는 셀들의 집합입니다. 예를 들어 교재의 표 4.1에는 n₁={e,f}, n₂={a,e,i}가 있습니다. 첫 번째는 두 게이트를, 두 번째는 세 게이트를 함께 연결해야 한다는 뜻입니다.
여기서 질문입니다. 세 게이트를 연결하는 넷을 일반 그래프로 표현하려면 어떻게 해야 할까요?
이 절에서는 그 세 정점 사이에 모든 쌍의 간선을 만드는 clique 기반 모델을 사용합니다. 원래 하나의 다단자 연결을 여러 쌍의 연결로 바꾸는 것입니다. 그림 4.2에서 굵은 간선의 가중치는 1, 가는 간선의 가중치는 0.5입니다. 교재는 이 그래프 표현을 KL 분할 알고리즘에 연결하고, FM을 사용하려면 하이퍼그래프 표현도 사용할 수 있다고 설명합니다.
이제 회로를 좌우로 나눕니다. 양 끝이 서로 다른 파티션에 들어가는 간선들은 경계를 가로지릅니다. 그 가중치를 합한 것이 이 그래프에서의 cutsize, 절단 비용입니다. 단순히 선이 몇 개 보이는지 세면 안 됩니다. 가중치가 0.5인 선 두 개와 가중치가 1인 선 하나는 같은 비용을 냅니다.
그런데 절단 비용이 3이라고 해서 실제 배선 길이도 3일까요? 아닙니다. 절단 비용은 양 끝이 서로 다른 편인지에 반응합니다. 반면 물리적 배선 길이는 좌표 차이에 반응합니다. 경계만 넘은 가까운 연결과 칩의 먼 쪽까지 가는 연결을 구별해야 하죠.
교재가 배치 결과를 평가할 때 사용하는 중요한 척도가 HPWL입니다. Half-perimeter wirelength, 넷의 바운딩 박스 반둘레입니다. 넷에 속한 위치들을 전부 포함하는 가장 작은 축 정렬 사각형을 생각하면 됩니다.
뒤의 예제에서는 각 넷의 값을 구해서 전체 비용으로 합합니다. 실제 배선을 상세하게 그려 얻은 길이가 아니라, 바운딩 박스로 평가한 비용이라는 점도 구별해 두세요. 교재의 mincut 예제와 TimberWolf 예제가 이 방식으로 길이를 계산합니다.
알고리즘이 내부에서 최적화하는 값과, 최종 배치를 평가하는 값이 반드시 같지는 않습니다. Mincut은 절단 비용을 줄이지만 최종 결과는 HPWL로 비교합니다. 잠시 뒤 GORDIAN은 또 다른 값인 제곱 배선 길이를 사용합니다.
지금 본 0.5를 모든 clique 모델의 규칙으로 외우지 마세요. 뒤의 GORDIAN에서는 간선 가중치를 2/k로 정합니다.
핵심 O/X 퀴즈
1. HPWL은 바운딩 박스의 가로 폭과 세로 높이의 합이다.
2. 가중 그래프의 cutsize는 경계를 지나는 간선 개수만 세면 된다.
3. 서로 다른 배치 방법에서 사용하는 clique 간선 가중치가 항상 같다고 가정하면 안 된다.
Quadrature mincut: 회로를 나누면서 공간도 나눈다RECURSIVE BIPARTITIONING
첫 번째 발상은 이렇습니다. “강하게 연결된 게이트를 같은 구역에 넣고, 그 안에서 같은 일을 반복하자.” 이것이 재귀적 분할을 이용한 mincut placement입니다.
중요한 것은 두 가지를 함께 나눈다는 점입니다. 회로를 두 부분으로 나누고, 그 회로가 들어갈 배치 영역도 가로 또는 세로로 나눕니다. 분할을 반복해 한 구역에 게이트 하나만 남으면 겹치지 않는 배치를 얻을 수 있습니다. 더 큰 작은 회로 단위에서 멈췄다면, 각 구역 안의 게이트에 고유한 위치를 주는 legalization이 추가로 필요합니다.
교재 예제에는 a부터 p까지 16개 게이트가 있고, 최종 목적지는 4×4 격자입니다. Area skew는 0입니다. 따라서 매번 완전히 균형 잡힌 이분할을 원합니다. 여기서 “연결을 적게 끊기 위해 15개를 왼쪽, 1개를 오른쪽에 두자”는 선택은 허용되지 않습니다. 절단 비용 최소화에는 면적 균형 조건이 붙어 있습니다.
Quadrature는 세로와 가로 절단을 조합해 네 영역을 만들고 이를 재귀적으로 세분화합니다. 교재의 첫 세로 절단에서는 왼쪽에 {a,b,e,f,i,j,m,n}, 오른쪽에 {c,d,g,h,k,l,o,p}가 들어갑니다. 절단 비용은 3입니다.
같은 비용을 갖는 다른 이분할도 존재한다고 원문이 명시합니다. 따라서 그림의 해를 유일한 해로 외우면 안 됩니다.
두 번째 가로 절단 뒤 왼쪽 위는 {b,f,j,n}, 왼쪽 아래는 {a,e,i,m}입니다. 오른쪽 위는 {c,g,k,o}, 오른쪽 아래는 {d,h,l,p}입니다. 이제 첫 번째 수준의 네 사분면이 만들어졌습니다. 세 번째 절단은 왼쪽 영역을 세로로 더 나눕니다. 위에서는 {j,n}과 {b,f}, 아래에서는 {i,m}과 {a,e}가 갈립니다. 네 번째 절단은 오른쪽 영역을 세로로 나누어 위쪽의 {c,g}, {k,o}, 아래쪽의 {d,l}, {h,p}를 구분합니다. 마지막 두 가로 절단은 위쪽과 아래쪽의 두 셀 묶음을 각각 한 셀씩 분리합니다.
| 절단 | 방향 | Cutsize |
|---|---|---|
| 1 | 세로 | 3 |
| 2 | 가로 | 5 |
| 3 | 세로 | 5 |
| 4 | 세로 | 4 |
| 5 | 가로 | 5 |
| 6 | 가로 | 5 |
그림 4.3(f)의 최종 격자를 위에서 아래로 읽으면 다음과 같습니다.
n b c o j f g k m e l p i a d h
교재는 이 배치의 n₁부터 n₁₃까지 HPWL을 순서대로 1, 2, 2, 2, 2, 3, 1, 3, 3, 1, 1, 2, 4로 계산합니다. 합은 27입니다. 특히 n₁₃={k,n,o}는 가로로 넓게 벌어져 있어 비용이 4가 됩니다.
그런데 구역 안에서만 절단을 잘하면, 다른 구역의 이웃과의 거리도 좋아질까요? 빠진 외부 정보를 되살리는 장치가 terminal propagation입니다.
핵심 O/X 퀴즈
1. Area skew가 0인 이 예제에서는 매번 균형 잡힌 이분할을 요구한다.
2. 첫 번째 cutsize가 3이라는 사실만으로 최종 HPWL도 3이라고 결론 내릴 수 있다.
3. 작은 회로 묶음이 남은 상태에서 분할을 멈추면 legalization이 필요할 수 있다.
Terminal propagation: 구역 밖의 이웃에게도 발언권을 준다ANCHORS & MID-THIRD WINDOW
오른쪽 구역의 게이트 x를 위와 아래 중 어디에 둘지 결정한다고 합시다. x는 왼쪽 위 구역의 게이트 y와 연결되어 있습니다. 그런데 오른쪽 내부 연결만 보고 분할하면 어떤 정보가 사라질까요? “x에게는 왼쪽 위에 이웃이 있다”는 정보입니다.
“유도한다”와 “강제로 고정한다”를 구별하세요. 고정되는 것은 단자 p입니다. x의 배정은 다른 내부 연결, 다른 외부 단자, 균형 조건과 함께 결정됩니다. 외부 이웃 하나만 보고 무조건 x의 소속을 확정하는 규칙이 아닙니다.
그런데 외부 이웃을 전부 반영하면 될까요? 교재는 그렇지 않다고 봅니다. 내부 연결과 외부 연결의 영향 사이에 균형이 필요하기 때문입니다. 그래서 cutline과 평행한 두 선으로 window를 만듭니다. 이 예제는 가운데 3분의 1에 해당하는 mid-third window를 사용합니다. 외부 이웃이 그 안에 있으면 전파하지 않고, 밖에 있으면 경계의 고정 단자로 전파합니다.
구역 밖에서 오는 방향 신호를 받되, 위쪽인지 아래쪽인지 분명하지 않은 신호는 이번 결정에 쓰지 않는 것입니다. 이 비유의 핵심은 “연결이 없다고 보는 것”이 아니라, 현재 절단에서 방향 편향을 주는 단자를 만들지 않는 것입니다.
절단 순서도 중요합니다. 교재는 breadth-first recursive bipartitioning을 사용합니다. 처음에는 모든 게이트를 전체 영역의 중심에 있다고 봅니다. 세로로 나눈 뒤에는 각 절반의 중심에 있다고 보고, 왼쪽을 가로로 나눈 다음 오른쪽을 가로로 나눕니다. 이처럼 같은 깊이의 구역들을 차례로 처리하면서 위치 정보가 더 구체화됩니다. 그 위치가 이후 외부 단자 판단에 사용됩니다.
원문 독해 메모. 책 103쪽에는 x와 p를 연결한 다음 “x-p connection을 무시한다”는 표현이 있지만, 바로 뒤에서는 x-p 연결이 절단 비용을 증가시킨다고 설명합니다. 문장 사이에 불일치가 있으므로, 작동 원리는 그림과 뒤 설명에 제시된 고정 단자와의 연결이 분할 비용에 반영된다는 것으로 읽겠습니다.
핵심 O/X 퀴즈
1. 전파된 단자는 고정되어 외부 연결의 방향성을 분할 비용에 반영한다.
2. Mid-third window 안의 외부 이웃도 반드시 단자로 전파한다.
3. 외부 단자와 연결되면 내부 셀의 소속은 다른 조건과 무관하게 확정된다.
Terminal propagation 실습: 같은 회로의 비용이 27에서 23으로15 BIPARTITIONS
같은 16개 게이트와 4×4 격자, 같은 균형 조건을 사용하겠습니다. 달라지는 것은 분할 순서와 외부 단자 처리입니다.
3단계의 g를 주목하세요. g는 서로 반대 방향의 영향을 동시에 받습니다. 여러 연결의 비용을 비교하는 분할 문제에 외부 정보를 추가한 것이지, 단순히 외부 이웃을 따라가는 규칙이 아닙니다. 4단계도 같습니다. 외부 연결이 있다는 사실만으로 전파 여부를 결정하면 안 되고, 현재 cutline에 대한 위치를 다시 확인해야 합니다.
나머지 여덟 번의 절단은 각 두 셀 묶음을 한 셀씩 나누는 단계입니다. 교재는 이 단계의 세부 단자 전파를 생략합니다. 총 15번의 이분할 뒤 그림 4.10(d)는 다음 배치가 됩니다.
m n o p i j k h e f g l a b c d
각 넷의 HPWL은 n₁부터 순서대로 1, 2, 2, 2, 2, 2, 1, 2, 3, 1, 1, 2, 2입니다. 합은 23입니다. 앞의 27과 비교하면 n₆가 3에서 2로, n₈이 3에서 2로, n₁₃이 4에서 2로 줄었습니다. 다른 넷은 교재의 두 결과에서 같습니다. 외부 연결의 위치 정보를 살린 효과를 구체적인 넷 단위로 볼 수 있습니다.
이 예제는 “언제나 정확히 4만큼 좋아진다”거나 “전파를 쓰면 전역 최적해가 보장된다”는 증명이 아닙니다. 두 구성의 예시 결과입니다. 또 앞 절의 6개 절단선 단계와 여기의 15개 개별 이분할은 세는 단위가 달라, 숫자만으로 실행 시간을 비교해서도 안 됩니다.
핵심 O/X 퀴즈
1. 이 예제에서 terminal propagation을 사용하는 최종 배치의 HPWL 합은 23이다.
2. 어떤 외부 셀의 전파 여부는 현재 절단 방향과 window를 고려해 판단해야 한다.
3. 예제에서 비용이 개선되었으므로 terminal propagation의 전역 최적성도 증명되었다.
GORDIAN의 발상: 좌표를 먼저 풀고, 무게중심으로 퍼뜨린다QUADRATIC PROGRAMMING
Mincut에서는 “어느 구역에 넣을까?”를 물었습니다. GORDIAN은 질문을 바꿉니다. “연결 길이를 수식으로 적고, 가장 좋은 좌표를 직접 구하면 어떨까?”
GORDIAN은 회로의 연결 정보에서 이차 목적함수를 만들고 quadratic programming, QP를 풉니다. 목표는 셀 사이의 제곱 배선 길이를 줄이는 것입니다.
연결된 셀들을 용수철로 이어 놓았다고 상상하면 도움이 됩니다. 멀리 떨어진 셀 사이의 연결이 좌표를 서로 가까워지도록 유도하는 것입니다. 이 용수철은 수식의 작용을 이해하기 위한 비유입니다.
하지만 여기에는 함정이 있습니다. 셀을 서로 가깝게 만드는 요구만 있다면 어떻게 될까요? 한곳에 모일수록 유리해집니다. 교재는 경계에 고정된 일부 IO 셀이 필요하며, 그렇지 않으면 모든 셀을 한 위치에 놓는 결과가 나온다고 설명합니다. 고정 IO는 움직이지 않는 연결 기준점이 됩니다.
고정 IO가 있다고 문제가 끝나는 것도 아닙니다. 셀들은 여전히 일부 지역에 몰리고 겹칠 수 있습니다. GORDIAN은 이를 다루기 위해 최적화와 top-down partitioning을 번갈아 수행합니다. 좌표를 구한 뒤 셀들을 파티션으로 묶고, 각 묶음의 면적 가중 무게중심이 해당 영역의 중심과 일치하도록 제약을 겁니다.
“이 팀의 평균 위치는 왼쪽 방 가운데, 저 팀은 오른쪽 방 가운데”라고 요구하는 장면입니다. 개별 좌석은 고정하지 않아도 팀 전체가 한쪽으로 몰리는 것을 제약할 수 있습니다.
수준 l=0에서는 무게중심 제약 없이 QP를 풉니다. l=1에서는 영역을 둘로 나눈 뒤 제약을 추가합니다. l=2에서는 앞 절단에 수직인 절단을 넣어 영역을 더 나눕니다. 이런 과정을 영역이 충분히 작아질 때까지 반복합니다.
파티션은 점점 작아지지만, QP는 전체 회로를 대상으로 풉니다. 구역별로 연결을 끊고 서로 독립적인 최적화를 하는 방식이 아닙니다. 따라서 다른 구역과의 연결도 전역 목적함수에 남습니다.
또한 무게중심을 맞췄다고 셀의 겹침이 자동으로 없어지지는 않습니다. 교재는 GORDIAN 종료 뒤에도 겹침이 남을 수 있고, DOMINO 같은 후처리로 이를 제거한다고 설명합니다. 평균 위치 제약과 비중첩 조건은 서로 다른 요구입니다.
핵심 O/X 퀴즈
1. GORDIAN은 분할 수준이 내려가면 QP를 반드시 각 구역에 독립적으로 적용한다.
2. 무게중심 제약은 셀 집단을 공간적으로 분산시키는 역할을 한다.
3. GORDIAN이 종료되면 별도 처리 없이 셀의 비중첩이 항상 보장된다.
행렬을 만드는 법: 연결표가 C로 바뀌는 과정W, P, D 그리고 C = D − W
행렬의 각 숫자에 “어느 연결에서 왔니?”라고 물어보겠습니다. 예제의 이동 가능한 셀은 a부터 j까지 10개입니다. IO는 w₁부터 w₄, z₁부터 z₄까지 8개이고, 위치가 고정됩니다. 셀 면적과 넷 가중치는 모두 1, 핀은 셀 중심에 있다고 가정합니다.
크기 k인 넷은 k-clique가 되고 각 간선은 2/k의 가중치를 받습니다. 따라서 2단자 넷은 1, 3단자 넷은 2/3, 4단자 넷은 1/2입니다. 같은 셀 쌍이 여러 넷에서 연결되면 그 기여를 더합니다. 그림에 7/6 같은 값이 나오는 것도 이런 합산으로 이해할 수 있습니다.
- W
- 이동 셀끼리의 연결을 적는 adjacency matrix. Wij는 이동 셀 i와 j 사이의 연결 가중치입니다. a의 행에서 0이 아닌 값은 b와의 2/3, e와의 7/6, f와의 1/2입니다. 연결이 없는 자리와 대각 원소는 0입니다.
- P
- 이동 셀과 고정 IO 사이의 연결을 적는 pin connection matrix. 행은 a~j, 열은 w₁,w₂,w₃,w₄,z₁,z₂,z₃,z₄ 순서입니다.
- D
- degree matrix. 대각 원소는 해당 셀이 가진 모든 연결 가중치의 합입니다.
D를 만들 때 W의 행 합만 쓰면 안 됩니다. P의 행 합도 포함해야 합니다. a를 직접 계산하면 이동 셀 연결에서 7/3, 고정 IO 연결에서 11/6을 얻어 총 25/6이 됩니다.
한 가지 검산 요령도 수식에서 바로 나옵니다. C의 한 행을 더하면 이동 셀 연결은 상쇄되고 고정 IO 연결 가중치의 합이 남습니다. 따라서 이 C를 보며 “라플라시안이니 모든 행 합이 반드시 0일 것”이라고 판단하면 안 됩니다. 고정 노드가 별도로 처리된 시스템이라는 점을 보아야 합니다.
핵심 O/X 퀴즈
1. 이 GORDIAN 예제에서 3단자 넷의 clique 간선 가중치는 2/3이다.
2. Degree matrix는 이동 셀끼리의 연결만 합해서 만든다.
3. C의 비대각 원소는 이동 셀 사이 연결 가중치의 음수로 구성된다.
고정 IO와 첫 QP: d 벡터는 왜 음수인가LEVEL 0
이제 고정 IO의 위치를 넣겠습니다. 그림 4.12의 IO 좌표는 w₁=(0,1), w₂=(0,2), w₃=(0,3), w₄=(1,4), z₁=(2,0), z₂=(3,0), z₃=(4,1), z₄=(4,2)입니다. 이 순서를 P의 열 순서와 일치시켜야 합니다.
연결이 존재해도 해당 좌표가 0이면 그 방향의 벡터 기여는 0일 수 있다는 점에 주의하세요.
셀 순서 a~j dx = (-1, 0, -2/3, -2/3, -1, -1, 0, -3, -4, -4) dy = (-2, -13/6, -25/6, -25/6, -4/3, 0, 0, 0, -1, -2)
이 음수 부호가 낯설다면 한 연결의 제곱 항을 펼쳐 보세요. (xᵢ − xp)²를 전개하면 −2xᵢxp라는 교차항이 나옵니다. 고정된 xp와 연결 가중치가 이동 변수 xᵢ의 선형항에 들어가는 구조입니다. 이것은 원문의 d 정의를 이해하기 위한 대수적 전개입니다.
셀 a b c d e f g h i j x 0.95 0.92 1.21 1.32 1.32 1.61 1.98 2.13 2.59 2.51 y 1.27 1.83 2.48 2.61 1.16 1.45 1.84 0.92 1.41 2.03
교재는 QP solver인 MOSEK으로 이 결과를 얻었다고 설명합니다. 연결을 줄이는 좌표는 얻었지만, 전체 4×4 영역을 고르게 사용하는 배치는 아닙니다. 분할과 무게중심 제약이 필요한 이유입니다.
핵심 O/X 퀴즈
1. 고정 핀 벡터에는 연결 가중치뿐 아니라 IO의 좌표도 반영된다.
2. 수준 0의 x와 y 최적화는 서로 다른 연결 행렬 C를 반드시 사용한다.
3. 고정 IO와 연결되어 있어도 그 IO의 x좌표가 0이면 dx에 대한 해당 항의 기여는 0이다.
수준 1: 절반씩 나누고, 평균 위치를 지정한다LEVEL 1 — LQP
이제 수준 0에서 얻은 좌표를 다음 단계의 정보로 사용합니다. 첫 분할은 세로 방향이고 면적 균형 인자 α는 0.5입니다. 셀 면적이 같으므로 x좌표 순서로 정렬한 뒤 다섯 개씩 나누면 됩니다.
교재의 정렬 순서는 {b,a,c,e,d,f,g,h,j,i}입니다. 따라서 왼쪽에는 {a,b,c,d,e}, 오른쪽에는 {f,g,h,i,j}가 들어갑니다. 표에 반올림된 d와 e의 x값은 둘 다 1.32로 보이지만, 원문은 e를 먼저 둡니다. 이 예제에서는 둘 다 같은 왼쪽 그룹에 들어가므로 결과적인 소속에는 차이가 없습니다.
전체 영역이 4×4이고 좌우를 반씩 나누므로 중심은 왼쪽 (1,2), 오른쪽 (3,2)입니다. 이를 벡터로 적으면 ux⁽¹⁾=(1,3)ᵀ, uy⁽¹⁾=(2,2)ᵀ입니다. 각 그룹의 평균 좌표를 계산하는 행렬이 A⁽¹⁾입니다.
a b c d e f g h i j
A(1) = [ 1/5 1/5 1/5 1/5 1/5 0 0 0 0 0 ]
[ 0 0 0 0 0 1/5 1/5 1/5 1/5 1/5 ]
첫 행에 x를 곱하면 a부터 e까지의 x좌표 평균이 나옵니다. 둘째 행은 나머지 다섯 셀의 평균입니다. 따라서 A⁽¹⁾x = ux⁽¹⁾는 두 집단의 평균 x좌표를 각각 1과 3으로 맞추라는 뜻입니다. y도 같은 방식으로 두 집단의 평균을 2로 맞춥니다.
원문 독해 메모. 원문의 설명에는 셀 면적과 “partition area”의 비율이라는 표현이 있습니다. 실제 제시된 1/5는 물리적 반쪽 영역의 넓이 8로 나눈 값이 아니라, 그 그룹에 속한 다섯 셀의 총면적으로 정규화한 값으로 읽어야 합니다. 그렇지 않으면 평균을 구하는 행렬이 되지 않습니다.
목적함수 C와 d는 그대로 두고, 이 선형 등식 제약을 붙여 LQP를 풉니다. 결과는 다음과 같습니다.
셀 a b c d e f g h i j x 0.70 0.71 1.17 1.21 1.22 2.17 3.10 2.84 3.56 3.33 y 1.34 1.94 2.66 2.76 1.30 1.83 2.45 1.32 1.91 2.49
아닙니다. 평균만 1이어야 합니다. 반올림된 값을 더하면 5.01이므로 평균은 1.002, 즉 약 1.00입니다. y좌표 합은 10.00이므로 평균은 2.00입니다. 교재의 중심 (1,2)와 일치한다는 검산은 출력 좌표의 반올림을 고려해 읽으면 됩니다. 개별 셀 대신 집단의 평균을 고정하므로, 각 셀에는 연결을 개선할 자유가 남습니다.
핵심 O/X 퀴즈
1. 수준 1의 A 첫 행은 왼쪽 다섯 셀의 평균 좌표를 계산한다.
2. 평균 x좌표를 1로 제약하면 왼쪽의 모든 셀은 x=1에 놓여야 한다.
3. 수준 1에서는 연결 목적함수를 유지하면서 선형 무게중심 제약을 추가한다.
수준 2: 셀 수가 홀수이면 영역도 기계적으로 반씩 나눌까LEVEL 2 — 2 : 3 SPLIT
이번에는 좌우 각각의 다섯 셀을 위아래로 나눕니다. 다섯 개를 같은 개수의 두 집단으로 나눌 수 있을까요? 불가능합니다. 그래서 가능한 한 균형에 가깝게 두 셀과 세 셀로 나눕니다.
수준 1의 y좌표를 기준으로 왼쪽 위는 {c,d}, 왼쪽 아래는 {a,b,e}가 됩니다. 오른쪽 위는 {g,j}, 오른쪽 아래는 {f,h,i}입니다. 교재는 이 네 파티션을 순서대로 p₁,p₂,p₃,p₄라고 부릅니다.
그림에서 가로 절단이 정확히 높이의 절반을 지나지 않는다는 점을 보세요. 위쪽에는 두 셀, 아래쪽에는 세 셀이 배정되어 있습니다. 교재가 제시한 중심은 위쪽 y=3.2, 아래쪽 y=1.2입니다. 이 좌표를 영역의 기하와 연결하면 절단선은 y=2.4이고, 위쪽 높이는 1.6, 아래쪽 높이는 2.4입니다. 즉 2:3의 구성을 영역에도 반영한 것입니다.
A를 외우는 대신 각 행이 무엇을 평균 내는지 쓰겠습니다.
p1 행: c와 d의 열에 각각 1/2 p2 행: a, b, e의 열에 각각 1/3 p3 행: g와 j의 열에 각각 1/2 p4 행: f, h, i의 열에 각각 1/3 그 밖의 원소는 모두 0
이 네 행을 모은 것이 원문의 A⁽²⁾입니다. 예를 들어 (xc+xd)/2 = 1, (yc+yd)/2 = 3.2가 p₁의 제약입니다. p₂에는 (xa+xb+xe)/3 = 1, (ya+yb+ye)/3 = 1.2가 적용됩니다. 다시 동일한 전역 목적함수에 A⁽²⁾x = ux⁽²⁾와 A⁽²⁾y = uy⁽²⁾를 적용해 풉니다.
셀 a b c d e f g h i j x 0.83 0.78 1.00 1.00 1.39 2.28 2.89 3.06 3.66 3.11 y 1.01 1.78 3.08 3.32 0.82 1.44 3.18 0.59 1.57 3.22
c와 d의 평균은 정확히 (1, 3.2)입니다. g와 j의 평균도 (3, 3.2)입니다. 아래쪽 그룹도 출력의 반올림 오차 안에서 목표 중심에 맞습니다. 그림 4.18에는 이 좌표 위에 clique 연결을 다시 표시해, 공간적으로 나뉜 뒤에도 전체 연결이 유지됨을 보여 줍니다.
짧은 복습입니다. W와 P는 연결을 표현합니다. C와 d는 배선 목적함수를 만듭니다. A와 u는 셀 집단이 공간을 쓰는 방식을 제약합니다. 연결을 짧게 만드는 수식과, 셀을 퍼뜨리는 수식의 역할이 분리되어 있습니다. 이 구분이 GORDIAN의 중심입니다.
핵심 O/X 퀴즈
1. 수준 2에서 두 셀 그룹의 평균 계수는 1/2, 세 셀 그룹의 평균 계수는 1/3이다.
2. 수준 2의 위아래 파티션 중심은 반드시 y=3과 y=1이다.
3. C와 d는 연결 비용을, A와 u는 무게중심 제약을 표현한다.
TimberWolf: 두 셀을 바꾸는데 왜 주변 셀까지 계산할까SIMULATED ANNEALING
이번에는 놓인 셀을 교환하면서 배치를 개선합니다. 교재가 다루는 TimberWolf는 simulated annealing 기반의 배치·배선 도구입니다. 여기서 설명하는 버전과 성능 평가는 교재에 소개된 당시 연구를 기준으로 합니다.
- 높은 온도
- 넷리스트를 두 번 클러스터링한 뒤, 가장 큰 두 번째 수준 클러스터를 배치합니다.
- 중간 온도
- 이를 풀어 첫 번째 수준 클러스터를 배치합니다.
- 낮은 온도
- 원래 게이트 수준까지 풀어 세밀하게 개선합니다.
두 번째 개선이 이 절의 중심인 overlap-free placement입니다. 교재 설명에 따르면 이전 버전은 겹침을 허용하면서 벌점으로 줄이고, 끝까지 남은 겹침은 마지막에 셀을 밀어 제거했습니다. 그런데 이 후처리가 앞서 얻은 배치의 품질을 떨어뜨릴 수 있습니다. 그래서 7.0에서는 annealing 중에도 겹침 없는 배치를 유지하면서 셀 이동을 효율적으로 처리하려고 합니다.
좁은 셀이 있던 자리에 넓은 셀이 들어오면 무엇이 생길까요? 옆 셀과 겹칩니다. 반대로 넓은 셀의 자리에 좁은 셀이 들어가면 빈틈이 생깁니다. 따라서 두 셀의 좌표만 맞바꾸고 끝낼 수 없습니다.
교재는 더 넓은 셀을 받는 행에서 주변 셀을 밀어 겹침을 없앱니다. 방향은 이동시켜야 하는 셀의 수가 적은 쪽을 고릅니다. 좁은 셀을 받은 행의 빈틈은 즉시 없애려고 하지 않습니다. 이후 교환에서 채워질 수 있기 때문입니다. 또 행 길이의 차이가 작게 유지되도록 교환을 선택해 전체 빈틈을 줄이려 합니다.
교환의 이익만 계산하고 공간을 확보하는 비용을 빼먹으면 안 됩니다. ΔW는 교환 셀에 연결된 넷들을 조사해 정확히 계산합니다. 반면 ΔWS는 추정합니다. 밀리는 셀이 많으면 그 모든 넷을 매번 정확히 다시 계산하는 부담이 크기 때문입니다.
다음 절의 Model A와 Model B는 바로 이 shifting 비용을 빠르게 평가하기 위한 모델입니다. 교환 비용 계산 전체를 대충 대신하는 모델이 아니라, 비용식의 특정 항을 추정한다는 점을 기억하세요.
핵심 O/X 퀴즈
1. TimberWolf 7.0의 계층적 배치에서는 높은 온도 구간에 큰 클러스터를 배치한다.
2. 좁은 셀을 받은 행의 빈틈은 교환 직후 반드시 모두 제거한다.
3. ΔWS는 교환으로 생긴 겹침을 제거하기 위한 주변 셀 이동의 배선 비용이다.
Model A와 Model B: 꺾은선을 따라갈까, 현재 기울기를 쓸까SHIFTING COST ESTIMATION
한 셀 z를 수평으로 민다고 합시다. 연결된 넷의 HPWL은 어떻게 달라질까요? 넷의 나머지 셀들이 만드는 가로 범위 안에서 움직이는 동안에는 바운딩 박스의 폭이 바뀌지 않을 수 있습니다. 하지만 그 범위를 벗어나면 z가 새로운 경계가 되어 폭이 늘어납니다.
Model A는 이 구조를 두 breakpoint, a와 b로 표현합니다. [a,b] 안에서는 해당 넷의 길이가 일정합니다. 왼쪽 구간에서는 오른쪽으로 움직일 때 길이가 줄고, 오른쪽 구간에서는 오른쪽으로 움직일 때 길이가 늘어납니다. 여러 넷의 구간별 함수를 합쳐 z의 이동 비용을 평가합니다.
원문 독해 메모. 개요에는 “a의 왼쪽이면 감소한다”는 표현이 있지만, 방향 없이 읽으면 혼동됩니다. 그림 4.21의 꺾은선은 구간 밖으로 더 멀리 나가면 길이가 증가하는 형태입니다. 왼쪽 구간의 ‘감소’는 x가 증가해 구간 쪽으로 다가갈 때의 기울기로 구별해야 합니다. 그림의 형태를 수식으로 쓰면, 나머지 위치를 고정했을 때 가로 길이는 max(b, x) − min(a, x)입니다.
Model B는 전체 꺾은선을 다루는 대신 현재 위치에서의 기울기를 사용합니다. 교재의 규칙은 넷 i에서 z가 왼쪽 경계면 Di(0) = −1, 오른쪽 경계면 +1, 어느 쪽도 아니면 0입니다. 연결된 모든 넷에 대해 더하면 셀의 gradient가 됩니다.
Di(0)의 0은 현재 이동량 0에서 평가한다는 뜻입니다. 셀이 칩의 x=0에 있다는 뜻으로 읽으면 안 됩니다.
| 상황 | gradient | 이동량 | 비용 기여 |
|---|---|---|---|
| 오른쪽 경계의 셀을 오른쪽으로 2 | +1 | +2 | +2 |
| 왼쪽 경계의 셀을 왼쪽으로 1 | −1 | −1 | +1 |
두 번째 예를 보세요. 왼쪽 이동이라고 비용이 줄어드는 것이 아닙니다. 바운딩 박스를 왼쪽으로 더 넓혔으므로 길이가 증가합니다.
왜 추정이라고 부를까요? 지금의 기울기를 전체 이동 구간에 적용하기 때문입니다. 이동 중 breakpoint를 지나 경계 역할이 바뀌면 현재의 기울기만으로는 변화 전체를 표현하지 못할 수 있습니다. 교재는 인용 연구에서 Model B가 Model A와 비슷한 정확도를 내면서 더 빨랐다고 소개합니다. 이를 모든 입력과 모든 이동에서 두 값이 반드시 같다는 명제로 확대하면 안 됩니다.
핵심 O/X 퀴즈
1. Model B는 연결 넷에서의 경계 역할을 합산한 gradient를 사용한다.
2. 왼쪽 경계의 셀을 왼쪽으로 밀면 부호가 음수이므로 배선 비용은 반드시 감소한다.
3. 현재 기울기가 0이라고 해서 아무리 멀리 이동해도 배선 길이가 변하지 않는 것은 아니다.
첫 교환 (b,e): 정확한 교환 비용 19, 이동 비용 1ΔC = 19 + 1 = 20
좌표 규칙이 바뀝니다. 앞의 GORDIAN에서는 핀을 셀 중심에 놓았지만, 여기서는 셀의 왼쪽 아래 모서리를 위치로 사용합니다. 눈에 보이는 셀 중심을 이용해 계산하면 교재 값과 달라집니다.
n1={a,e,g} n2={f,o} n3={b,c,k,n}
n4={d,h,i} n5={j,l,m} n6={d,k,j}
n7={c,e,f,h,n} n8={d,l} n9={b,g,i,m}
n10={a,k,o}
초기 HPWL은 n₁부터 순서대로 19, 14, 19, 19, 11, 21, 28, 12, 19, 23입니다. 예를 들어 n₄는 가로 5와 세로 14를 더해 19가 됩니다. n₇은 가로 14, 세로 14여서 28입니다.
첫 교환은 (b,e)입니다. 더 넓은 b가 위쪽 행으로 들어가므로 그 옆의 h를 오른쪽으로 1만큼 밀어야 합니다. 반대편으로 여러 셀을 미는 것보다 h 하나를 미는 쪽을 택합니다. 아래쪽에는 좁은 e가 들어가므로 작은 빈틈이 남습니다.
| 넷 | 변화 | Δ |
|---|---|---|
| n3 | 19 → 24 | +5 |
| n9 | 19 → 26 | +7 |
| n1 | 19 → 26 | +7 |
| n7 | 28 → 28 | 0 |
| ΔW | 5+7+7+0 | 19 |
셀이 움직였다고 연결된 모든 넷의 길이가 반드시 달라지는 것은 아닙니다. n₇처럼 바운딩 박스가 유지되는 넷도 있습니다.
이제 h의 shifting을 계산합니다. h는 n₄={d,h,i}와 n₇={c,e,f,h,n}에 속합니다. 그림 4.20에서 h는 n₄의 오른쪽 경계이므로 +1, n₇에서는 어느 가로 경계도 아니므로 0입니다. 따라서 gradient(h) = 1입니다. 이동량은 오른쪽 1이므로 ΔWS = 1×1 = 1, 전체 변화는 ΔC = 19 + 1 = 20입니다.
교재는 실제 값도 확인합니다. h를 밀면 n₄는 19에서 20으로 증가하고, n₇은 28을 유지합니다. 실제 증가량 역시 1입니다. Model A로 보아도 같습니다. n₄의 breakpoint는 i와 d, n₇의 breakpoint는 f와 n입니다. 그림 4.21에서 h의 작은 오른쪽 이동은 n₄의 증가 구간에 있고 n₇의 평평한 구간 안에 있습니다.
핵심은 +20이라는 숫자보다 교환 대상의 넷과 밀리는 셀의 넷을 구별하고 두 변화량을 합치는 순서입니다.
핵심 O/X 퀴즈
1. 이 TimberWolf 예제는 셀의 왼쪽 아래 모서리를 좌표로 사용한다.
2. (b,e) 교환의 ΔW가 19이므로 h의 이동까지 포함한 전체 변화도 19이다.
3. 이 예제에서 Model B가 추정한 h의 이동 비용 1은 실제 증가량과 일치한다.
이어지는 두 교환: 빈틈, 음수 이동, 그리고 중복 계산 주의(m,o) 그리고 (k,m)
앞의 교환이 끝난 배치에서 이어갑니다. 최초 그림으로 돌아가면 이후 넷 길이가 맞지 않습니다.
먼저 (m,o)입니다. 넓은 m이 들어가는 자리를 확보하기 위해 d와 g를 오른쪽으로 각각 2만큼 밉니다.
교재의 교환 항: n5: 11 → 12, +1 n9: 26 → 22, -4 n2: 14 → 7, -7 n10: 23 → 23, 0 → 교재의 ΔW = -10
d의 gradient는 n₄에서 0, n₆에서 +1, n₈에서 +1이므로 2입니다. g는 n₁과 n₉ 모두의 오른쪽 경계여서 gradient가 2입니다. 두 셀을 오른쪽으로 2씩 미므로 ΔWS = 2×2 + 2×2 = 8입니다. 원문은 이를 합해 ΔC = −10 + 8 = −2를 제시합니다.
다음 교환은 (k,m)입니다. 이번에는 중간 행에 더 넓은 k가 들어갑니다. 왼쪽의 빈틈을 활용하면서 c를 왼쪽으로 1만큼 이동시킵니다. 그림에서는 o까지 실제로 움직일 필요는 없습니다. 짧은 쪽에 있는 모든 셀을 무조건 같은 거리만큼 미는 것이 아니라, 겹침을 없애는 데 필요한 이동을 해야 합니다.
교재는 k와 m의 연결 넷에 대해 n₃의 변화 +1, n₆의 변화 −7, n₁₀의 변화 −10, n₅의 변화 +9, n₉의 변화 0을 제시하여 ΔW = −7로 계산합니다. c는 n₃의 왼쪽 경계이고 n₇의 가로 경계는 아니므로 gradient(c) = −1입니다. 이동량도 −1이므로 ΔWS = (−1)×(−1) = +1, 원문의 최종 값은 ΔC = −6입니다.
숫자를 외우기 전에 확인할 것. 이 두 예제의 원문 숫자에는 교환과 shifting을 분리하는 원칙과 맞지 않는 부분이 있습니다. 아래는 교재의 답을 바꾸어 인용한 것이 아니라, 그림의 격자와 왼쪽 아래 좌표를 이용해 별도로 검산한 내용입니다.
(m,o)에서 g를 아직 밀지 않으면 n₉의 좌표는 b(8,14), g(12,7), i(6,0), m(7,7)입니다. 따라서 길이는 (12−6) + (14−0) = 20입니다. g를 오른쪽으로 2 민 뒤에야 22가 됩니다. 원문은 ΔW 계산에 이미 22를 사용하고, ΔWS에서 g에 의한 증가 2를 다시 포함합니다. 순수 교환과 이동을 분리하면 ΔW = −12, ΔWS = 8이고 합은 −4입니다.
(k,m)에서도 c를 아직 밀지 않으면 n₃의 x범위는 4~14, y범위는 0~14이므로 길이는 24입니다. c를 왼쪽으로 1 밀었을 때 25가 됩니다. 원문의 교환 항에는 이미 그 증가 1이 들어 있고, shifting 항에서 또 1을 더합니다. 그림을 기준으로 두 단계를 분리한 검산값은 ΔW = −8, ΔWS = 1, 합은 −7입니다. 이 검산은 그림 4.22와 4.25에 그려진 배치를 기준으로 합니다.
| 교환 | 교재의 ΔC | 순수 교환·shifting 분리 검산 |
|---|---|---|
| (m,o) | −2 | −4 |
| (k,m) | −6 | −7 |
이 차이는 Model B의 근사 오차로 설명할 문제가 아니라, 어느 상태의 길이를 ΔW에 넣었는지의 문제입니다. 오늘 가져갈 가장 중요한 계산 습관은 교환 전, 교환만 수행한 중간 상태, shifting까지 끝난 상태를 구분하는 것입니다. 같은 넷이 두 단계에서 변하는 것은 가능하지만, 같은 변화를 두 번 세면 안 됩니다.
핵심 O/X 퀴즈
1. 연속 교환의 비용을 계산할 때마다 최초 배치의 넷 길이를 기준으로 사용한다.
2. Gradient가 −1인 셀을 왼쪽으로 1 이동시키면 Model B의 비용 기여는 +1이다.
3. 교환 항에 이미 포함된 shifting 효과를 이동 항에서 다시 더하면 중복 계산이 된다.
추가 연습: 그림을 바꿔도 같은 절차를 적용할 수 있는가EXERCISES — 그림 4.27
이제 풀이가 없는 추가 문제를 보겠습니다. 여기서 확인할 것은 숫자를 기억했는지가 아니라, 입력이 바뀌었을 때 모델과 계산 순서를 다시 구성할 수 있는지입니다.
- mincut 2문제
- 새로운 회로를 2×4 격자에 놓습니다. 하나는 quadrature mincut, 다른 하나는 terminal propagation을 사용하는 재귀적 이분할입니다. 둘 다 세로 절단부터 시작하고 area skew는 0. 두 번째 문제에서는 mid-third window 내부의 단자를 무시합니다. 매 단계의 소속, 현재 절단선, 전파되는 외부 단자를 함께 표시해 보세요.
- GORDIAN 수준 3
- 네 파티션에 세로 절단을 추가합니다. p₁과 p₃는 균등하게, p₂는 왼쪽 두 셀과 오른쪽 한 셀로, p₄는 왼쪽 한 셀과 오른쪽 두 셀로 나눕니다. p₁의 동률은 c를 왼쪽에 두어 해결합니다. 새 그룹에 맞춰 A와 중심 벡터 u를 다시 구성해야 합니다.
- GORDIAN-L / 새 회로
- 같은 회로의 수준 0,1,2를 GORDIAN-L로 수행하는 문제와, 그림 4.27의 회로에 GORDIAN을 적용하는 문제입니다. 후자의 고정 IO는 w₁=(0,2), w₂=(0,3), w₃=(1,4), z₁=(4,1), z₂=(4,2)입니다. 앞 예제의 d 벡터를 복사하지 말고 새 연결과 새 IO 좌표에서 다시 계산해야 합니다.
- TimberWolf
- 초기 배치에서 (a,k), (h,j), (m,f)를 이 순서대로 수행합니다. 왼쪽 아래 좌표를 쓰고, 이동하는 셀 수를 줄이며, x좌표가 음수가 되면 안 됩니다.
“왼쪽에 셀이 더 적다”는 이유만으로 경계 밖으로 밀 수는 없습니다. 위치의 허용 조건과 이동 비용을 함께 확인해야 합니다. 또한 GORDIAN-L의 구체적인 반복 갱신식은 이 발췌문에 제시되어 있지 않으므로, 여기서 임의의 식을 교재 내용처럼 추가하지는 않겠습니다.
핵심 O/X 퀴즈
1. GORDIAN의 파티션 구성이 달라지면 무게중심 행렬 A도 다시 구성해야 한다.
2. 고정 IO의 좌표가 바뀌어도 dx와 dy는 항상 그대로이다.
3. 추가 TimberWolf 문제에서는 이동 셀 수뿐 아니라 x좌표의 비음수 조건도 고려해야 한다.
더 깊이 보기와 종합: 세 방법은 어떻게 확장되고 결합되는가PROBING FURTHER — 책 134~137쪽
「Probing Further」는 포괄적 문헌 조사가 아니라 대표 연구의 소개입니다. 당시 소개된 연구들이 어떤 약점을 보완하는지 연결하겠습니다.
먼저 mincut 계열입니다. 가장 자연스러운 질문은 “둘로 나누는 것, cutsize를 최소화하는 것, 정해진 절단 순서를 쓰는 것이 각각 꼭 최선인가?”입니다.
- Suaris & Kedem
- 네 부분으로 분할하고, 표준 셀 배치에 맞게 수평보다 수직 연결을 선호하는 비용을 사용합니다.
- Zhong & Dutt
- 각 수준에서 현재 절단선을 넘어 전체 회로를 다시 보고, 넷 전체 정보로 gain을 계산하며, cutsize 대신 HPWL을 줄입니다. 전역 정보를 직접 쓰면 terminal propagation을 따로 두지 않는 구성이 가능합니다.
- Capo
- 혼잡을 고려하는 재귀적 이분할에 다수준 분할과 작은 허용 오차의 분할 기법을 결합합니다.
- Ou & Pedram
- 타이밍 중심 방법. 경로가 잘리는 횟수를 통제하고, 사전 고정과 타이밍을 고려한 단자 전파를 사용합니다.
- Dragon
- 전역 배치에서 사분할과 단자 전파 뒤 annealing으로 개선하고, 상세 배치에서 겹침 제거와 탐욕적 셀 교환을 수행합니다.
- Fengshui
- 절단 순서를 동적 계획법의 대상으로 삼습니다. 교재가 말하는 최적 절단 순서는 단순화된 모델 아래의 결과입니다.
- ACG
- 분석적 엔진으로 분할의 균형 조건을 정해 여유 공간을 배분합니다.
- Placement feedback
- 먼저 분할하고, 소속은 되돌리되 얻은 위치 정보는 남겨서, 더 구체적인 외부 위치로 단자 전파와 분할을 다시 수행합니다.
다음은 GORDIAN과 분석적 배치 계열입니다. 질문은 “제곱 길이가 우리가 궁극적으로 원하는 선형 길이와 얼마나 잘 맞는가? 셀을 어떻게 퍼뜨려야 연결 관계를 덜 망가뜨리는가?”입니다.
- GORDIAN-L
- 이차 solver를 이용하면서 선형 길이를 줄이는 반복 방법. 이차 목적은 긴 연결을 강하게 줄이는 대신 짧은 연결을 희생할 수 있습니다.
- Vygen
- 이차 배치 뒤 사분할을 적용하면서 용량을 지키고 변위를 줄여 배치의 품질을 보존합니다.
- Kraftwerk
- 배선에 따른 힘 외에 겹침을 줄이는 힘을 추가합니다.
- Mongrel
- 분석적 엔진으로 조합적 탐색을 이끌고 상세 배치를 추가 개선합니다.
- mPL
- 회로를 아래에서 위로 묶고 위에서 아래로 배치하면서 이차 완화와 클러스터 해제·개선 과정을 강화합니다.
- Grid-warping
- 게이트를 하나씩 옮기는 대신 게이트가 놓인 격자 자체를 탄성적으로 변형합니다.
- APlace
- 서로 다른 크기의 객체에 대한 다수준 분석적 배치에서 배선, 혼잡, 타이밍과 기하 제약을 다룹니다.
- mFAR
- 고정점을 의사 셀처럼 넣어 밀집 지역의 셀을 끌어냅니다.
- FastPlace
- 효율적인 셀 이동과 clique·star 혼합 넷 모델로 이차 최적화를 가속합니다.
- DPlace
- 확산에 기반해 셀을 부드럽게 퍼뜨려 기존 이웃 관계를 보존합니다.
표현은 달라도 “가깝게 연결하면서 겹치지 않게 퍼뜨리기”라는 긴장은 동일합니다.
마지막은 TimberWolf의 확장입니다. 신호 방향의 cone을 묶어 soft macro로 배치한 뒤 행 기반 표준 셀 배치로 바꾸는 연구가 소개됩니다. 타이밍 확장에서는 지연식을 annealing 비용에 넣고, 개선할 critical path 집합을 반복해서 갱신합니다. 병렬화 연구들은 작업 분배와 통신, 병렬 이동, 여러 Markov chain 등을 다룹니다. 교재는 소개된 비교에서 speculative computation이 효과적이지 않았다는 결과도 함께 전합니다. MGP는 증분 전역 배선으로 혼잡 비용을 갱신하고 계층적 밀도를 제어하며, 최상위 클러스터의 배치에 TimberWolf를 사용합니다.
이제 첫 질문으로 돌아가겠습니다. 게이트를 어디에 놓을 것인가? 우리는 세 가지 답을 배웠습니다. 연결을 적게 끊도록 공간을 나누고, 밖의 이웃은 단자로 반영합니다. 연결을 이차식으로 만들고, 집단의 무게중심을 제약해 공간에 퍼뜨립니다. 이미 놓인 셀을 교환하되, 주변 셀을 밀어 자리를 만드는 비용까지 계산합니다.
세 방법의 공통점은 하나입니다. 연결의 논리와 공간의 제약을 동시에 다룬다는 것입니다. 그래프에서 좋은 분할이 곧 좋은 물리적 배치인 것은 아닙니다. 좋은 연속 좌표가 곧 합법 배치인 것도 아닙니다. 두 셀의 유리한 교환이 주변 이동까지 포함해 유리한 것도 아닙니다. 이 간극을 어떻게 모델링하고 메우는지, 그것이 오늘 공부한 배치 알고리즘의 핵심입니다.