모든 이야기

셀 좌표를 반올림해도 합법 배치가 되지 않는 이유

배치 화면에서 셀들이 적절하게 퍼져 있어도 그 좌표가 제조 가능한 배치를 뜻하지는 않는다. 셀은 정해진 행과 사이트에 맞아야 하고, 다른 셀이나 장애물과 겹쳐서는 안 된다. Legalization은 전역 배치에서 얻은 위치를 이 조건에 맞게 옮기는 과정이다. 논리 연결은 그대로여도 셀 위치가 바뀌므로 배선과 타이밍 결과는 달라질 수 있다.

반올림만으로 겹침이 없어지지 않는다

길이 단위를 사이트 폭으로 정한 가상 행을 보자. 셀 A·B·C는 모두 폭이 2이고, 전역 배치가 선호하는 왼쪽 좌표는 각각 0.4·1.2·3.6이다. 합법 좌표는 정수라고 가정한다. 세 좌표를 가장 가까운 정수로 반올림하면 0·1·4가 된다.

하지만 A는 [0,2), B는 [1,3)을 차지해 겹친다. 사이트 정렬은 만족해도 비중첩 조건은 만족하지 못한다. C가 사이트에 맞았다는 사실도 앞 두 셀의 문제를 해결해 주지 않는다. Legalization은 각 셀의 가까운 위치를 독립적으로 고르는 작업이 아니라 여러 셀이 같은 자리를 요구하는 문제를 함께 푸는 작업이다.

후보 좌표 0·2·4를 사용하면 세 셀의 구간은 [0,2)·[2,4)·[4,6)으로 겹치지 않는다. 왼쪽 좌표의 절대 이동량 합은 0.4 + 0.8 + 0.4 = 1.6이다. 후보 1·3·5도 겹치지는 않지만 이동량 합은 0.6 + 1.8 + 1.4 = 3.8이다. 이 간단한 비교에서는 첫 후보가 덜 움직인다. 이는 두 후보의 비교일 뿐 실제 배치 전체에서 전역 최적해를 증명한 것은 아니다.

OpenROAD의 detailed placement 문서도 전역 배치의 셀을 행의 합법 사이트로 이동하면서 displacement를 줄이는 역할을 설명한다. 현재 문서는 negotiation 방식의 legalizer와 기존 diamond search 방식을 구분한다. 따라서 legalization을 한 가지 단순 탐색 알고리즘으로만 정의할 필요는 없다. OpenROAD Detailed Placement

장애물 하나가 이동의 범위를 바꾼다

이제 사이트 [4,6)을 사용할 수 없는 장애물로 놓고, 행은 [0,12)까지 있다고 하자. 앞의 0·2·4 후보에서 C가 차지한 공간은 막혔다. A와 B를 0·2에 두고 C를 6으로 옮기면 [6,8)에 들어갈 수 있다. 전체 이동량 합은 0.4 + 0.8 + 2.4 = 3.6으로 증가한다.

이때 각 셀의 수평 이동을 1 이하로 제한하면 C의 가능한 정수 왼쪽 좌표는 3과 4뿐이다. [3,5)와 [4,6)은 모두 장애물과 겹친다. 행 전체에 빈자리가 남아 있어도 이 이동 제한에서는 C를 배치할 수 없다. 제약을 강화하면 항상 더 좋은 결과가 나오는 것이 아니라, 가능한 해 자체를 없앨 수 있다.

실제 설계에는 여러 높이의 셀과 사용할 수 있는 행, fence region, 잘린 행, 배치 padding 등이 추가된다. 어떤 셀을 특정 영역에만 두도록 제한하면 다른 영역의 빈자리를 사용할 수 없다. 단순한 전체 사용률보다 각 셀에 허용된 위치의 분포가 중요한 이유다. OpenROAD도 이런 조건을 지원하고, 최대 displacement와 탐색 창을 구분한다. Detailed Placement의 지원 조건과 옵션

기능이 같아도 경로 조건은 다시 확인한다

가상 예제에서 A의 핀을 왼쪽 좌표보다 1만큼 오른쪽에 있다고 하자. 고정된 송신 핀은 x=2에 있다. 전역 위치에서 A의 핀은 1.4이므로 수평 거리는 0.6이다. A가 합법 좌표 0으로 옮겨지면 핀은 1에 있고 거리는 1로 늘어난다. 반대로 C의 핀과 x=8의 목적지 사이 거리는 초기 3.6+1에서 8까지 3.4였지만, C를 6으로 옮기면 1로 줄어든다.

같은 배치 조정이 한 연결은 늘리고 다른 연결은 줄인다. 이 길이만으로 실제 지연을 계산할 수는 없다. 실제 배선의 층과 우회, 저항·정전용량, 드라이버와 입력 slew까지 필요하다. 다만 이전 위치를 바탕으로 한 타이밍 추정을 합법화 후의 확정값처럼 쓰면 안 된다는 점은 이 좌표 계산만으로도 알 수 있다.

Legalization은 논리 기능의 변경을 목표로 하지 않지만, 이후 셀 크기 조정이나 버퍼 삽입이 일어나면 새 겹침을 정리하는 데도 사용된다. 따라서 한 번 합법화했다는 기록만으로 모든 후속 단계가 합법이라고 판단하지 않는다. OpenROAD는 배치의 적법성을 검사하는 check_placement를 별도로 제공한다. 배치 검사 명령

합법화 결과를 읽을 때는 남은 위반과 함께 이동량이 큰 셀의 위치를 확인하면 좋다. 장애물이나 영역 제한이 원인인지, 너무 좁은 이동 범위를 지정했는지에 따라 수정 방법이 달라진다. 이동이 큰 셀이 중요한 경로에 속한다면 배선 추정과 타이밍을 다시 읽어야 한다.

Legalization의 성공은 모든 셀을 가까운 정수 좌표에 놓았다는 뜻이 아니다. 각 셀이 사용할 수 있는 행과 공간에서 함께 공존할 수 있는 위치를 찾았다는 뜻이다. 그 과정에서 바뀐 거리를 후속 분석에 반영할 때, 보기 좋은 전역 배치가 실제로 사용할 수 있는 배치로 이어진다.

셀 좌표를 반올림해도 합법 배치가 되지 않는 이유 · ariser