프로세서와 DRAM 사이의 버스를 배선하는 과정은 여전히 인쇄 회로 기판(PCB) 설계에서 대부분 수동으로 이루어지며, 발표된 알고리즘들은 교차점이나 레이어 개수 같은 근사치(proxies)를 최적화합니다. 우리는 구리 배선을 하기 전에 두 개의 BGA 간 버스의 모든 레인(lane)을 계획하고, 그 계획을 설계 규칙 검사(DRC-clean)가 완료된 구리로 구현하는 라우터(router)를 제시합니다. 이 라우터의 핵심은 정확한 제약 조건 프로그래밍 모델(exact constraint-programming model)로, 필요한 모든 교차점이 어디에서 발생해야 하는지, 어떤 순서로(모든 레인 삼중 조합에 대한 규칙을 통해), 그리고 각 레인이 비아 공간(via room)과 함께 어느 레이어로 변경되어야 하는지를 한 번에 선택합니다. 양 끝단은 주어진 상태에서 모델 내에서 최적의 계획임을 증명합니다. 이 모델은 물리 현상처럼 자연스럽게 해석됩니다: 월드라인(worldlines), 좌절된 Ising 스핀(frustrated Ising spins), 접촉력(contact forces) 등이 그것입니다. 선형 계획법(linear program)은 레인을 밀리미터 단위로 배치하며, 위반해야 하는 제약 조건들은 모델 내의 컷(cuts)으로 돌아오고, 감사 결과는 협상된 혼잡 가격(negotiated congestion prices)으로 작용하여, 그 계획이 생산 라우터의 규칙을 통과하거나 깨끗하게 배선될 때까지 반복됩니다. 우회로(escapes)는 동일한 목적 함수 추정치를 통해 선택되며, 차분 쌍(differential pairs)은 극성(polarity)을 가지고 이동하며, 양 끝단이 불일치하는 지점에서는 자동 비아 교차(automatic via crossover)가 발생합니다.
Allwinner H3와 Zynq-7020에 각각 DDR3 장치를 연결했을 때, 이 라우터는 H3의 경우 최대 51개 네트(전체 버스)에서, Zynq의 경우 43개 네트를 가진 두 개의 사다리계(ladders)의 모든 단을 완료했습니다. 이 배선은 연결되어 있으며 DRC-clean 상태이며, 인간 설계자가 사용한 비아 수보다 적습니다 (상단 단에서 각각 80개 vs 88개, 62개 vs 100개). 또한 더 적은 양의 구리를 사용합니다. 기존 툴킷의 생산 라우터는 10개의 단 중 4개 단에 네트를 열어두거나 아예 완료하지 못하는 반면, Freerouting은 아무것도 완성하지 못했습니다. Zynq 보드 자체에서는 버스 네트 45개를 설계자가 사용한 105개 비아와 함께 완료했습니다. 또한 세 개, 네 개, 여섯 개의 라우팅 레이어를 가진 생성된 버스의 경우, 모든 실행에서 완벽하게 완료되었으며, 알려진 최적값을 가진 경우 그 값을 달성했습니다.