조합 회로 합성을 위한 논리 프로그래밍 프레임워크
본 논문은 Prolog의 백트래킹과 통합 변수 전파를 활용해 조합 회로를 정확히 합성하는 방법을 제시한다. 비트스트링을 이용한 빠른 진리표 연산과 최소 게이트 라이브러리 탐색을 결합해, 특히 “<”(엄격 부등호)와 상수 1을 이용한 라이브러리가 NAND·NOR 대비 낮은 트랜지스터 비용을 보임을 입증한다.
저자: Paul Tarau, Brenda Luderman
본 논문은 논리 프로그래밍 언어와 조합 회로 합성 도구가 공유하는 “논리식에 대한 조합 탐색”이라는 근본적인 특성을 재조명하고, Prolog를 이용해 정확한 회로 합성 프레임워크를 구축한다. 서론에서는 논리 프로그래밍이 제공하는 백트래킹, 통합 변수, 그리고 문법 기반 생성 메커니즘이 회로 설계에 자연스럽게 매핑될 수 있음을 강조한다. 특히 Prolog term과 Leaf‑DAG(리프‑다이렉트 비순환 그래프) 사이의 구조적 유사성을 이용해 회로를 트리 형태로 표현하고, 리프 노드가 여러 번 공유될 수 있는 DAG 형태로 확장한다.
2장에서는 정확한 합성을 위한 기본적인 조합 객체 생성 방법을 상세히 설명한다. 먼저, 크기 제한이 있는 이진 트리를 생성해 연산자 노드와 리프 노드를 배치한다. 이때 Catalan 수를 이용해 트리 개수를 정량화하고, 트리 생성은 DCG(문맥 자유 문법) 형태의 재귀 predicate로 구현한다. 다음으로, 입력 변수와 상수들을 논리 변수 바인딩 형태로 열거하는 “functions_from/2”를 도입한다. 이 방법은 실제 term을 만들지 않고 변수 주소만 트레일에 기록하므로, N개의 변수와 M개의 리프에 대해 N^M개의 매핑을 백트래킹 비용 없이 탐색할 수 있다. 두 과정을 결합해 Leaf‑DAG를 생성하고, 이를 “synthesize_leaf_dag/4” predicate가 비용 증가 순서대로 탐색한다. 이 과정에서 상수 함수는 입력 변수 리스트에 단순히 추가함으로써 처리된다.
3장에서는 비트스트링을 이용한 진리표 인코딩 기법을 제시한다. 변수마다 2^n 비트 길이의 정수값을 할당하고, Prolog 내장 비트 연산(&, |, # 등)을 사용해 연산자 결합 시 즉시 새로운 진리표를 계산한다. 이렇게 하면 함수 동등성 검증이 백트래킹 없이 O(1) 정수 연산으로 수행된다. 64비트(6입력)까지는 기본 정수형으로 충분하고, 그 이상은 임의 정밀도 정수 라이브러리를 활용한다.
4장에서는 다양한 보편적 부울 함수 라이브러리의 표현력을 비교한다. 각 라이브러리별로 16개의 2‑입력 부울 연산자를 구현하는 데 필요한 최소 게이트 수를 계산하고, 중복성을 검사한다. 결과는 NAND·NOR만 사용할 경우 46개의 게이트가 필요하지만, “<, 1”(엄격 부등호와 상수 1) 조합은 28개의 게이트만으로 모든 연산자를 구현할 수 있음을 보여준다. 특히 “<, =, 1”은 21개의 게이트로 동일 목표를 달성한다. 이러한 데이터는 전통적인 NAND/NOR 기반 설계가 최적이 아님을 시사한다.
5장에서는 “<, 1” 라이브러리를 중심으로 이론적·실용적 분석을 진행한다. 먼저 “<” 연산이 (A < B) = ¬A ∧ B 로 표현될 수 있음을 보이며, 이를 통해 부정·곱 연산을 구현한다. 또한 XOR는 (A < B) ⊕ (B < A) 로 분해될 수 있어, “<”가 복잡한 비선형 함수 구현에 기여함을 강조한다. 5.2절에서는 “<, 1” 전용 재작성 규칙을 제시해, 합성 과정에서 초기에 식을 간소화하고 탐색 공간을 크게 줄인다. 이러한 재작성은 Prolog의 CHR(제약 처리 규칙)와 결합해 더욱 강력한 최적화가 가능하다.
6장에서는 “<” 게이트의 CMOS 트랜지스터 구현을 제시한다. 기본 NAND 게이트가 4개의 트랜지스터(2개의 PMOS, 2개의 NMOS)로 구현되는 반면, “<”는 2개의 PMOS와 2개의 NMOS로 구현될 수 있어 트랜지스터 수가 동일하거나 약간 적다. 상수 1은 단순히 전원에 연결하면 되므로 추가 비용이 거의 없다. 따라서 전체 ( <, 1) 라이브러리는 NAND·NOR 대비 면적·전력 효율이 높다.
7·8장은 기존 연구와 향후 과제에 대해 논의한다. 기존 회로 합성 도구는 주로 C/C++ 기반의 SAT/SMT 솔버와 BDD를 활용했으며, 논리 프로그래밍 접근은 거의 시도되지 않았다. 저자는 Prolog와 CHR를 결합해 레이아웃, 라우팅, 기술 매핑까지 포괄하는 통합 설계 플로우를 구축할 가능성을 제시한다. 또한, 현재 구현은 6입력 이하의 함수에 최적화돼 있으나, 임의 정밀도 정수와 병렬 비트 연산을 활용하면 더 큰 규모도 다룰 수 있다.
마지막으로 9장은 연구 결과를 요약한다. Prolog 기반의 정확한 합성 프레임워크는 구현이 간결하고, 비트스트링을 이용한 진리표 연산으로 탐색 속도가 빠르며, “<, 1” 같은 비전통적 라이브러리가 트랜지스터 비용 측면에서 경쟁력을 가짐을 입증한다. 이는 회로 설계 분야에서 논리 프로그래밍의 새로운 활용 가능성을 열어준다.
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기