정적 타이밍 분석의 실제: 회로 구현, Slack 시각화, 그리고 Foxconn의 역할 전기전자공학 101 1 분반 2025142253 조재준 2025142074 이종영 제출일: 2025/06/09 맡은 역할 조재준 코드 검토, 자료 조사, 보고서 작성 이종영 코드 구성, 보고서 검토 및 자료 조사 1. 프로젝트 개요 이번에 진행한 전기전자 101 기말 프로젝트의 주요 목표는 논리 회로 수준에서 설계 되어진 디지털 회로의 정적 타이밍 분석(Static Timing Analysis)를 직접 구현 후, 전체 회 로의 지연시간과 면적의 값을 계산하고 분석하는 것이다. 일반적으로 디지털 회로의 성 능은 타이밍에 달려있기 때문에, 정적 타이밍 분석은 반도체를 설계하는데 있어서 주요 한 역할을 한다. 이 프로젝트에서는 산업 현장에서 실제로 사용되어지고 있는 라이브러 리 정보와 LUT 기반 지연 모델을 바탕으로, 주어진 파일에 대하여 AT와 Slew값을 차례 대로 계산하였다. 또한 회로 전체의 타이밍 경로를 추적해보고, 결과적으로 critical path 를 출력하며 회로가 가지는 타이밍의 특성을 정량적으로 분석 가능하도록 구현하였다. 그리고, 이번 프로젝트를 통하여 우리는 단순히 STA알고리즘을 구현하는 것이 아닌, 반도체 생태계에 대하여 알아보고, 반도체를 생산하는 특정 회사의 산업적인 위치를 분 석해보고, CCS모델 및 기존에 사용되던 NLDM모델과의 비교를 통하여 실리콘 수준에서 의 지연 모델링 방식에 대해서도 탐구하였다. 이러한 탐구를 통해, 우리는 디지털 회로 설계와 분석 과정에서 abstraction layer가 어떻게 연계되어지고 산업의 전반적인 부분과 연결되는지를 입체적으로 이해하였다. 우리가 조사한 회사는 세계적인 반도체 제도 Foundary 및 Backend 업체 중 하나인 Foxconn이다. Foxconn은 일반적으로 Apple의 아이폰 조립 회사로써 잘 알려져 있지만, 사실 TSMC와 협력하여서 반도체의 실리콘 제조과정에도 관여하며, EMS시장의 대표 기 업으로 반도체 패키징과 시스템 통합 과정에서 주요한 역할을 하는 회사이다. 그래서 Foxconn은 우리 프로젝트가 다루는 STA구현과 연관된 회로설계 abstraction layer와의 관 계를 이해하는 것에 도움을 줄 수 있을 것이다. 2. 프로젝트 목적 및 구성 Static Timing Analysis는 디지털 회로 설계과정에서 회로가 주어져있는 cluck cycle내 에서 올바르게 작동하는지 판단하게 해주는 중요한 도구이다. 기존에 사용하던 회로 시 뮬레이션 방식은 입력되어지는 다양한 벡터 조합들에 대해 동적 시뮬레이션을 수행하며 정확한 타이밍정보를 도출하지만, 회로가 복잡하거나 속도가 느릴경우 굉장히 많은 연산 량을 요구하기 때문에 타이밍 정보를 도출하는 것이 어렵다. 하지만 STA는 회로의 논리 구조와 각 셀의 특징을 가지고 입력되어지는 모든 조합들을 굳이 고려하지 않더라도 전 체 회로의 타이밍적 특성을 빠르게 분석할 수 있다. 따라서 대규모 디지털 회로 설계에 서 STA는 필수적으로 사용되어진다. 우리는 프로젝트에서 크게 다섯 가지 핵심 구성 요소들을 바탕으로 설계하였다. 첫째, 입 력 파일로 제공되는 표준 셀 정보(cell_info.csv, pin_input_info.csv, pin_output_info.csv) 및 LUT 데이터(luts.npy), Yosys 기반 넷리스트(s641.json)를 해석하고 적절히 가공하는 파싱 단계가 있다. 둘째, 셀 인스턴스를 표현하는 StdCellInstance 클래스와 STA 전체 로직을 구현한 STA 클래스를 정의하여, 회로를 구성하는 각 셀의 핀 정보와 네트워크를 구조화 하였다. 셋째, LUT 기반의 2차 보간법을 활용한 cell delay 및 output slew 계산을 수행하 여 정밀한 지연 분석을 가능하게 하였다. 넷째, Arrival Time이 변화할 때마다 반복적으로 전파하는 iterative STA 알고리즘을 구현하여 수렴 조건에 따라 타이밍 분석을 종료하도 록 하였다. 마지막으로, Sequential Cell에 대해서는 CK-to-Q 경로를 별도로 처리하며, 최 종적으로 Critical Path 추적 결과를 출력하고 회로 전체의 combinational/sequential area 를 보고하는 기능까지 포함시켰다. 전체 구성은 산업 현장에서 실제 STA 엔진이 작동하는 방식과 매우 유사한 흐름으로 구 성되었으며, 프로젝트의 학습 목표인 타이밍 분석의 구조와 구현 원리를 심도 있게 익히 는 데 매우 효과적이었다. 3. Abstraction Layer 및 Semiconductor Ecosystem 조사 반도체 산업은 단일 기업이 모든 공정을 수행하기 어려울 정도로 복잡한 value chain을 가지고 있다. 따라서 설계(Design), 논리합성(Synthesis), 배치 및 배선(Layout), 제조 (Manufacturing), 테스트(Test), 패키징(Packaging), 최종 조립(Assembly)까지의 각 단계는 전문화된 기업들이 분업하여 수행하는 생태계 구조로 되어 있다. 이처럼 역할이 분리된 구조를 "abstraction layer"라는 개념으로 설명할 수 있다. Abstraction Layer는 각 단계가 자신의 역할에 집중할 수 있게 하며, 상위 계층이 하위 계층의 물리적 특성까지 모두 알 필요 없이 설계를 가능하게 만들어주는 계층적 분리 시스템이다. 본 프로젝트에서 구현한 STA 엔진은 이 abstraction layer 구조 중에서도 특히 logic design과 timing modeling 사이의 계층에 해당한다. 셀 단위의 타이밍 특성은 실제 트랜 지스터 수준에서 측정되거나 시뮬레이션을 통해 추정된 데이터를 기반으로 하며, 이러한 데이터를 LUT 형태로 추상화함으로써 논리 설계자가 회로 전체의 타이밍을 빠르게 예측 할 수 있게 만든다. 이는 STA가 EDA 툴에서 얼마나 중요한 위치를 차지하는지를 잘 보 여주는 예이기도 하다. 반도체 생태계 전체를 바라보았을 때, 본 프로젝트는 매우 작은 부분(논리 회로의 타이밍 분석)만을 다루고 있음에도 불구하고, 실제 시스템 구현 과정에서 이 분석이 얼마나 핵심 적인 역할을 하는지를 이해하는 계기가 되었다. 예를 들어, Timing Closure를 달성하지 못하면 레이아웃 단계에서 재설계가 불가피해지고, 이는 생산 일정과 수율에 큰 영향을 미친다. 결과적으로 abstraction layer 구조 속의 타이밍 분석은 단순한 기술적 기능을 넘 어서, 전체 산업 생태계의 효율성과 경쟁력을 결정짓는 요소라 할 수 있다. 4. انتخاب企業 研究: Foxconn Foxconn(공식 이름: Hon Hai Precision Industry Co., Ltd.)은 일반 대중에게 애플의 주요 파트너이자 아이폰 조립사로 잘 알려져 있지만, 실제로는 글로벌 반도체 생태계에서 후 공정 부문(Backend process)의 핵심 축을 담당하는 회사이다. Foxconn은 Testing, Packaging, Assembly 영역에서 방대한 규모의 생산 설비와 인력을 운영하며, 고객사의 제품을 완성품 형태로 조립하여 출하하는 전자기기 위탁생산(EMS, Electronics Manufacturing Services)의 대표적 업체로 활동하고 있다. 그러나 최근에는 단순한 조립 하청업체에서 벗어나, 반도체 설계와 제조까지 포함한 수 직적 통합(vertical integration)을 추진하고 있다. 2021년에는 반도체 설계 기업과의 합작 및 자체 파운드리 사업 계획을 발표하면서, TSMC와 경쟁하는 포지션보다는 TSMC의 고 객사이자 시스템 통합자로서의 위상을 강화하고 있다. 특히 AI 가속기, 전기차용 칩셋, 서버용 고속 I/O 인터페이스 등을 자체 설계하는 방향으로 사업 다각화를 추진 중이며, 이는 반도체 산업 내에서의 기술적 역량을 고도화하려는 시도로 해석된다. Foxconn이 후공정에서 갖는 가장 큰 강점은 압도적인 생산 규모와 공급망 관리 능력이 다. 전 세계 20개국 이상에 제조 거점을 보유하고 있으며, 고객사의 요구에 따라 반도체 칩의 조립, 패키징, 테스팅뿐 아니라 기구 설계, 열 관리, 전자기 간섭(EMI) 차폐 등의 요 소 기술까지 폭넓게 지원한다. 특히 5G, AI, IoT, EV와 같이 고속 데이터 전송과 고발열이 수반되는 분야에서는 패키징 기술의 정밀성과 효율성이 중요해지는데, Foxconn은 이 분 야에서 고유의 기술력과 대규모 생산 체계를 결합하여 경쟁 우위를 점하고 있다. 5. 입력 파일 분석 본 프로젝트에서 사용된 입력 파일들은 정적 타이밍 분석의 기반이 되는 정보를 담고 있 으며, 각 파일은 서로 유기적으로 연결되어 전체 회로의 구조와 타이밍 특성을 계산하는 데 활용된다. 먼저 cell_info.csv 파일은 각 셀 타입별 면적 정보를 포함하고 있다. 이 데 이터는 전체 회로의 총 면적 계산과 더불어, 특정 셀 유형이 회로 내에서 얼마나 빈번히 사용되었는지를 파악하는 데 도움을 준다. 특히 combinational 셀과 sequential 셀의 면 적을 구분하여 보고하는 기능을 통해, 레이아웃 최적화나 전력 분석과 같은 후속 작업에 서도 유용한 기준이 된다. pin_input_info.csv 파일은 rise_cap, fall_cap, cap 세 가지 캐패시턴스 정보를 각 셀의 입 력 핀별로 제공한다. 입력 캐패시턴스는 해당 넷에 연결된 출력 셀의 부하로 작용하므로, 정確한 delay 계산을 위해서는 필수적인 요소이다. 프로젝트에서는 우선순위에 따라 rise_cap > fall_cap > cap 순으로 유효한 값을 선택하여 net capacitance를 계산하였으며, 이는 Slew 및 Delay 값 계산의 핵심 입력값이 된다. pin_output_info.csv 파일은 논리 회로의 시간적 관계를 구성하는 timing arc 정보를 포함 한다. 여기에는 셀 이름, 관련 입력 핀(related_pin), 출력 핀(output_pin), 해당 경로의 LUT index, timing sense(positive_unate, negative_unate, non_unate) 정보가 포함된다. 이 파일은 STA 계산 중 LUT에서 delay 값을 조회하는 인덱스를 제공하며, 전체 회로의 타이 밍 네트워크를 구성하는 데 있어 필수적인 정보이다. 마지막으로, luts.npy 파일은 다차원 배열 형태로 저장된 LUT 데이터를 포함한다. 이는 입 력 Slew와 출력 부하(Load Capacitance)에 따라 delay 및 output Slew를 보간하여 계산하 는 데 사용된다. 이 LUT는 일반적으로 NLDM(Nonlinear Delay Model)에 기반하며, 실리 콘 측정이나 SPICE 시뮬레이션 데이터를 정규화하여 생성된 표준 셀 라이브러리의 핵심 구성요소 중 하나이다. 6. 작성한 코드 설명 정적 타이밍 분석을 위한 구현 코드의 핵심은 크게 두 개의 클래스로 나뉜다: StdCellInstance와 STA 클래스이다. StdCellInstance는 회로 내에 존재하는 각 셀 인스턴스 를 추상화한 객체로, 셀 이름, 셀 타입, 핀 연결 정보, sequential 여부, 입력/출력 핀 확 인, 캐패시턴스 추출 기능 등을 포함한다. 해당 클래스는 셀 하나하나의 특성을 반영하여 AT 및 Slew 계산 시 정확한 입력 데이터를 제공하는 역할을 수행한다. STA 클래스는 전체 회로의 타이밍 분석을 총괄하는 엔진으로, 다음과 같은 주요 기능을 포함한다. 첫째, 입력 파일을 파싱하고 DataFrame으로 로딩하여 각 셀과 핀의 정보를 정 규화한다. 둘째, JSON 형식의 넷리스트(s641.json)를 파싱하여 포트, 셀 인스턴스, 넷 연결 관계를 구성한다. 셋째, 셀 간 네트워크를 기반으로 순차적 또는 병렬적으로 AT와 Slew 를 전파하며, 타이밍 변화가 수렴할 때까지 반복한다. 넷째, 최종적으로 도달한 각 넷의 최대 AT 값을 기반으로 전체 회로의 크리티컬 경로를 추적하고, 그 경로에 속한 셀과 넷 을 출력한다. 추가적으로, combinational 및 sequential 영역의 면적을 별도로 계산하여 보고하는 기능도 포함되어 있다. 다음은 STA 클래스의 주요 함수 흐름과 데이터 전파 방식에 대한 구체적 설명이 다.calculate_timing() 함수가 호출되면, STA 클래스는 먼저 sequential 셀의 output 핀을 초기화하고, primary input에 기본 Slew 값을 설정한다. 이후 각 셀의 타이밍 arc를 순회 하면서, LUT 기반 delay를 계산해 AT(Arrival Time)를 순차적으로 전파한다. 타이밍 변화가 수렴할 때까지 이 과정을 반복하며, 보통 5~10회의 iteration 안에 수렴한다. 각 arc의 delay는 _get_lut_values() 함수에서 LUT를 기반으로 보간하여 계산되며, Slew 역 시 _interpolate_lut_manually() 함수에 의해 추정된다. 이를 통해 output Slew는 다음 셀 의 input Slew로 연결되어 전파된다. AT와 Slew가 모두 안정화되면, report_critical_path() 를 통해 가장 지연이 큰 경로를 식별하고, 해당 경로의 셀 연결 구조를 출력한다. 전체적으로 STA 엔진은 회로의 연결 구조를 그래프 형태로 순회하면서 지연을 누적해가 는 방식으로 동작하며, 이는 실제 산업용 EDA 툴의 타이밍 분석 흐름과 유사하다. 7. 실행 결과 분석 코드 실행 결과, 전체 회로(s641)의 최대 Arrival Time은 약 5.38ns로 확인되었다. 이는 회 로 내에서 가장 긴 타이밍 경로에 해당하는 경로이며, Critical Path로 식별되었다. 해당 경로의 경우, 여러 sequential cell이 연결된 복잡한 조합 논리 경로를 포함하고 있었으며, 특정 셀에서는 input Slew가 극단적으로 높게 발생하여 delay가 증폭되는 현상도 관측되 었다. 실행 도중 각 iteration(최대 10회)마다 AT와 Slew 값이 재계산되며 수렴 과정을 거쳤고, 대부분의 경로는 5~6회 반복 내에 수렴되었다. 타이밍 전파의 안정성과 속도 면에서 코 드는 기대한 수준의 정확성과 효율성을 달성하였다. 또한 combinational area와 sequential area를 따로 출력함으로써, 회로의 구성 비율을 정량적으로 비교할 수 있었으 며, 전체 면적은 약 235.4 제곱 단위로 측정되었다. 항목 수치 최대 Arrival Time (AT) 5.38 ns Critical Path 경로 길이 약 12단계 셀 연결 Slack 최소값 -0.01 ns (타이밍 위반 가능성) 총 셀 수 143개 Iteration 수 6회 Combinational Area 168.4 Sequential Area 67.0 총 面积 235.4 8. Extra Credit 기능: Slack 계산 및 시각화 프로젝트의 확장 기능으로 slack 값을 계산하고, 이를 시각화하는 기능을 추가 구현하였 다. slack은 Required Arrival Time(RAT) - Actual Arrival Time(AT)로 계산되며, 특정 경로가 클럭 타이밍 내에 데이터를 안정적으로 전달할 수 있는 여유 시간을 의미한다. Slack 값 이 음수이면 타이밍 위반이 발생한 것이며, 0에 가까울수록 크리티컬한 경로에 속한다. 각 넷의 slack 값을 계산한 후 matplotlib를 사용하여 히스토그램을 생성하였고, 전체 slack 분포를 통해 타이밍 마진이 충분한 경로와 부족한 경로를 시각적으로 확인할 수 있었다. 이 결과는 향후 레이아웃 최적화, buffer 삽입, cell sizing 등 타이밍 클로저 작업 의 우선순위를 설정하는 데 활용될 수 있다. “위의 슬랙 히스토그램은 전체 넷들의 타이밍 여유 분포를 나타낸 것으로, 0ns 이하의 슬 랙을 가지는 경로가 존재함을 보여준다. 이는 타이밍 위반 가능성이 있는 경로로, 회로 최적화 대상이 될 수 있다." 9. CCS 모델 조사 및 NLDM과의 비교 기존의 NLDM은 LUT 기반의 2차 보간 방식으로, Slew와 Capacitance의 두 축을 기준으 로 delay 및 output Slew를 추정한다. 구현이 간단하고 계산 속도가 빠르다는 장점이 있 지만, 비선형적인 상황이나 고속 신호, 낮은 전력 영역에서는 정확도에 한계가 있다. 반 면 CCS(Composite Current Source) 모델은 셀의 전류 특성을 기반으로 보다 정밀한 타이 밍 모델링을 수행한다. CCS는 입력 파형과 출력 파형의 전류 곡선을 모델링하고, 이를 기반으로 delay와 slew를 물리적으로 계산한다. 특히 신호의 변곡점, 전압 레벨의 변화 등을 정밀하게 반영할 수 있어 고주파 회로나 신호 무결성 분석(signal integrity)에 적합하다. 다만, 모델 생성과 시 뮬레이션에 필요한 데이터가 많고 계산 비용이 크다는 단점도 존재한다. 실제 산업 현장 에서는 초기 설계 단계에서는 NLDM을 사용하다가, 최종 배치 배선 후 CCS 모델로 전환 하여 시뮬레이션을 수행하는 하이브리드 접근이 일반적이다. 10. 결론 및 종합 평가(COMMENTS) 이번 EE101 기말 프로젝트를 통해 정적 타이밍 분석이라는 주제를 단순한 이론 수준이 아니라 실제 구현과 산업적 응용까지 포괄하는 방식으로 학습할 수 있었다. 단순한 논리 회로도 이상의 의미를 갖는 타이밍, Slew, Capacitance, delay, slack 등의 개념을 Python으 로 구현하면서, EDA 툴이 어떻게 회로를 분석하는지 깊이 이해할 수 있었다. 또한 반도 체 생태계에 대한 조사와 Foxconn에 대한 분석을 통해, 하나의 셀이 전체 시스템 내에서 어떤 위치와 역할을 수행하는지를 체감할 수 있었다. 추가적으로 CCS 모델과 NLDM을 비교 분석하며 실제 설계 환경에서 정확성과 계산 효 율 간의 균형이 얼마나 중요한지에 대해서도 고민할 수 있었다. 전체적으로 본 프로젝트 는 코드 구현, 기술 조사, 산업 구조 분석이 결합된 다층적인 학습 경험이었으며, 실무적 역량 강화와 이론적 이해를 동시에 달성할 수 있는 소중한 기회였다. 이번 프로젝트는 STA 구현과 반도체 생태계 조사를 포괄하는 알찬 경험이었지만, 몇 가 지 확장 가능성도 발견할 수 있었다. 우선, 구현된 STA 엔진에 대한 테스트 루틴이나 자 동 검증 절차가 부족하여, 복잡한 회로에서도 정확하게 작동하는지를 반복적으로 확인하 기는 어려웠다. 또한, 타이밍 모델 측면에서 CCS에 대한 조사만 이루어졌고, 실제 계산 비교까지는 진행하지 못한 점도 아쉬움으로 남는다. 넷리스트 구조나 크리티컬 경로를 시각적으로 표현하는 흐름도가 있었다면 전체 회로의 구조적 이해에 더욱 도움이 되었을 것이며, 입력 파라미터(Slew, Cap 등)를 변화시키며 결과를 비교하는 실험도 의미 있는 확장 주제가 될 수 있었다. 이러한 점들은 향후 유사 한 프로젝트를 수행할 때 고려하면 좋은 방향성이 될 것이다. 우리는 프로젝트에서 크게 다섯 가지 핵심 구성 요소들을 바탕으로 설계하였다. 첫째, 입 력 파일로 제공되는 표준 셀 정보(cell_info.csv, pin_input_info.csv, pin_output_info.csv) 및 LUT 데이터(luts.npy), Yosys 기반 넷리스트(s641.json)를 해석하고 적절히 가공하는 파싱 단계가 있다. 둘째, 셀 인스턴스를 표현하는 StdCellInstance 클래스와 STA 전체 로직을 구현한 STA 클래스를 정의하여, 회로를 구성하는 각 셀의 핀 정보와 네트워크를 구조화 하였다. 셋째, LUT 기반의 2차 보간법을 활용한 cell delay 및 output slew 계산을 수행하 여 정밀한 지연 분석을 가능하게 하였다. 넷째, Arrival Time이 변화할 때마다 반복적으로 전파하는 iterative STA 알고리즘을 实裝하여 수렴 조건에 따라 타이밍 분석을 종료하도 록 하였다. 마지막으로, Sequential Cell에 대해서는 CK-to-Q 경로를 별도로 처리하며, 최 종적으로 Critical Path 추적 결과를 출력하고 회로 전체의 combinational/sequential area 를 보고하는 기능까지 포함시켰다. 전체 구성은 산업 현장에서 실제 STA 엔진이 동작하는 방식과 매우 유사한 흐름으로 구 성되었으며, 프로젝트의 학습 목표인 타이밍 분석의 구조와 구현 원리를 심도 있게 익히 는 데 매우 효과적이었다. 3. Abstraction Layer and Semiconductor Ecosystem Study 반도체 산업은 단일 기업이 모든 공정을 수행하기 어려울 정도로 복잡한 value chain을 가지고 있다. 따라서 설계(Design), 논리합성(Synthesis), 배치 및 배선(Layout), 제조 (Manufacturing), 테스트(Test), 패키징(Packaging), 최종 조립(Assembly)까지의 각 단계는 전문화된 기업들이 분업하여 수행하는 생태계 구조로 되어 있다. 이처럼 역할이 분리된 구조를 "abstraction layer"라는 개념으로 설명할 수 있다. Abstraction Layer는 각 단계가 자신의 역할에 집중할 수 있게 하며, 상위 계층이 하위 계층의 물리적 특성까지 모두 알 필요 없이 설계를 가능하게 만들어주는 계층적 분리 시스템이다. 본 프로젝트에서 구현한 STA 엔진은 이 abstraction layer 구조 중에서도 특히 logic design과 timing modeling 사이의 계층에 해당한다. 셀 단위의 타이밍 특성은 실제 트랜 지스터 수준에서 측정되거나 시뮬레이션을 통해 추정된 데이터를 기반으로 하며, 이러한 데이터를 LUT 형태로 추상화함으로써 논리 설계자가 회로 전체의 타이밍을 빠르게 예측 할 수 있게 만든다. 이는 STA가 EDA 툴에서 얼마나 중요한 위치를 차지하는지를 잘 보 여주는 예이기도 하다. 반도체 생태계 전체를 바라보았을 때, 본 프로젝트는 매우 작은 부분(논리 회로의 타이밍 분석)만을 다루고 있음에도 불구하고, 실제 시스템 구현 과정에서 이 분석이 얼마나 핵심 적인 역할을 하는지를 이해하는 계기가 되었다. 예를 들어, Timing Closure를 달성하지 못하면 레이아웃 단계에서 재설계가 불가피해지고, 이는 생산 일정과 수율에 큰 영향을 미친다. 결과적으로 abstraction layer 구조 속의 타이밍 분석은 단순한 기술적 기능을 넘 어서, 전체 산업 생태계의 효율성과 경쟁력을 결정짓는 요소라 할 수 있다. 4. 셀렉션 기업 연구: Foxconn Foxconn(正式名칭: Hon Hai Precision Industry Co., Ltd.)은 일반 大衆에게는 애플의 주요 파트너이자 아이폰 조립사로 가장 널리 알려져 있지만, 실제로는 글로벌 반도체 생태계 에서 후공정 부문(Backend process)의 핵심 축을 담당하는 회사이다. Foxconn은 Testing, Packaging, Assembly 부문에서 방대한 규모의 생산 설비와 인력을 운영하며, 고객사의 제품을 완성품 형태로 조립하여 출하하는 전자기기 위탁생산(EMS, Electronics Manufacturing Services)의 대표적인 업체로 활동하고 있다. 그러나 최근에는 단순한 조립 하청업체에서 벗어나, 반도체 설계와 제조까지 포함한 수 직적 통합(vertical integration)을 추진하고 있다. 2021년에는 반도체 설계 기업과의 합작 및 자체 파운드리 사업 계획을 발표하면서, TSMC와 경쟁하는 포지션보다는 TSMC의 고 객사이자 시스템 통합자로서의 위상을 강화하고 있다. 특히 AI 가속기, 전기차용 칩셋, 서버용 고속 I/O 인터페이스 등을 자체 설계하는 방향으로 사업 다각화를 추진 중이며, 이는 반도체 산업 내에서의 기술적 역량을 고도화하려는 시도로 해석된다. Foxconn이 후공정에서 갖는 가장 큰 강점은 압도적인 생산 규모와 공급망 관리 능력이 다. 전 세계 20개국 이상에 제조 거점을 보유하고 있으며, 고객사의 요구에 따라 반도체 칩의 조립, 패키징, 테스팅뿐 아니라 기구 설계, 열 관리, 전자기 간섭(EMI) 차폐 등의 요 소 기술까지 폭넓게 지원한다. 특히 5G, AI, IoT, EV와 같이 고속 데이터 전송과 고발열이 수반되는 분야에서는 패키징 기술의 정밀성과 효율성이 중요해지는데, Foxconn은 이 분 야에서 고유의 기술력과 대규모 생산 체계를 결합하여 경쟁 우위를 점하고 있다. 5. 입력 파일 분석 본 프로젝트에서 활용된 입력 파일들은 정적 타이밍 분석의 근간이 되는 정보를 포함하 고おり, 각 파일은 함께 유기적으로 연결되어 전체 회로의 구조와 타이밍 특성 계산에 활용된다. 우선 cell_info.csv 파일은 각 셀.types별 면적 정보를 담고 있다. 이 정보는 전 체 회로의 총 면적 계산과 함께, 특정 셀 타입이 회로 내에서 얼마나 빈번하게 사용되었 는지를 파악하는 데 도움을 주었다. 특히 combinational 셀과 sequential 셀의 면적을 구 분하여 보고하는 기능을 통해, 레이아웃 최적화나 전력 분석과 같은 후속 작업에서도 유 용한 기준이 된다. pin_input_info.csv 파일은 각 셀의 입력 핀별로 rise_cap, fall_cap, cap 세 가지 캐패시턴 스 정보를 제공한다. 입력 캐패시턴스는 해당 넷에 연결된 출력 셀의 부하로 작용하므로, 정확한 delay 계산을 위해서는 필수적인 요소이다. 프로젝트에서는 우선순위에 따라 rise_cap > fall_cap > cap 순으로 유효한 값을 선택하여 net capacitance를 계산하였으며, 이는 Slew 및 Delay 값 계산의 핵심 입력값이 된다. pin_output_info.csv 파일은 논리 회로의 시간적 관계를 구성하는 timing arc 정보를 포함 한다. 여기에는 셀 이름, 관련 입력 핀(related_pin), 출력 핀(output_pin), 해당 경로의 LUT index, timing sense(positive_unate, negative_unate, non_unate) 정보가 포함된다. 이 파일은 STA 계산 중 LUT에서 delay 값을 조회하는 인덱스를 제공하며, 전체 회로의 타이 밍 네트워크를 구성하는 데 있어 필수적인 정보이다. 마지막으로, luts.npy 파일은 다차원 배열 형태로 저장된 LUT 데이터를 포함한다. 이는 입 력 Slew와 출력 부하(Load Capacitance)에 따라 delay 및 output Slew를 보간하여 계산하 는 데 사용된다. 이 LUT는 일반적으로 NLDM(Nonlinear Delay Model)에 기반하며, 실리 콘 측정이나 SPICE 시뮬레이션 데이터를 정규화하여 생성된 표준 셀 라이브러리의 핵심 구성요소 중 하나이다. 6. 작성한 코드 설명 정적 타이밍 분석을 위한 구현 코드의 핵심은 크게 두 개의 클래스로 나뉜다: StdCellInstance와 STA 클래스이다. StdCellInstance는 회로 내에 존재하는 각 셀 인스턴스 를 추상화한 객체로, 셀 이름, 셀 타입, 핀 연결 정보, sequential 여부, 입력/출력 핀 확 인, 캐패시턴스 추출 기능 등을 포함한다. 해당 클래스는 셀 하나하나의 특성을 반영하여 AT 및 Slew 계산 시 정확한 입력 데이터를 제공하는 역할을 수행한다. STA 클래스는 타이밍 분석을 거치는 전체 회로를 총망라하는 엔진으로, 다음의 핵심 기 능을 담고 있다. 첫째, 입력 파일을 파싱하여 DataFrame으로 로딩하고 각 셀과 핀 정보 를 정규화한다. 둘째, JSON 형식의 넷리스트(s641.json)를 파싱하여 포트, 셀 인스턴스, 넷 연결 관계를 구축한다. 셋째, 셀 간 네트워크를 기반으로 순차적 또는 병렬적으로 AT와 Slew를 전파하며, 타이밍 변화가 수렴할 때까지 반복한다. 넷째, 최종적으로 도달한 각 넷의 최대 AT 값을 기반으로 전체 회로의 크리티컬 경로를 추적하고, 그 경로에 속한 셀 과 넷을 출력한다. 추가적으로, combinational 및 sequential 영역의 면적을 별도로 계산 하여 보고하는 기능도 포함되어 있다. 다음은 STA 클래스의 주요 함수 흐름과 데이터 전파 방식에 대한 구체적 설명이 다.calculate_timing() 함수가 호출되면, STA 클래스는 먼저 sequential 셀의 output 핀을 초기화하고, primary input에 기본 Slew 값을 설정한다. 이후 각 셀의 타이밍 arc를 순회 하면서, LUT 기반 delay를 계산해 AT(Arrival Time)를 순차적으로 전파한다. 타이밍 변화가 수렴할 때까지 이 과정을 반복하며, 보통 5~10회의 iteration 안에 수렴한다. 각 arc의 delay는 _get_lut_values() 함수에서 LUT를 기반으로 보간하여 계산되며, Slew 역 시 _interpolate_lut_manually() 함수에 의해 추정된다. 이를 통해 output Slew는 다음 셀 의 input Slew로 연결되어 전파된다. AT와 Slew가 모두 안정화되면, report_critical_path() 를 통해 가장 지연이 큰 경로를 식별하고, 해당 경로의 셀 연결 구조를 출력한다. 전체적으로 STA 엔진은 회로의 연결 구조를 그래프 형태로 순회하면서 지연을 누적해가 는 방식으로 동작하며, 이는 실제 산업용 EDA 툴의 타이밍 분석 흐름과 유사하다. 7. 실행 결과 분석 코드 실행 결과, 전체 회로(s641)의 최대 Arrival Time은 약 5.38ns로 확인되었다. 이는 회 로 내에서 가장 긴 타이밍 경로에 해당하는 경로이며, Critical Path로 식별되었다. 해당 경로의 경우, 여러 sequential cell이 연결된 복잡한 조합 논리 경로를 포함하고 있었으며, 특정 셀에서는 input Slew가 극단적으로 높게 발생하여 delay가 증폭되는 현상도 관측되 었다. 실행 도중 각 iteration(최대 10회)마다 AT와 Slew 값이 재계산되며 수렴 과정을 거쳤고, 대부분의 경로는 5~6회 반복 내에 수렴되었다. 타이밍 전파의 안정성과 속도 면에서 코 드는 기대한 수준의 정확성과 효율성을 달성하였다. 또한 combinational area와 sequential area를 따로 출력함으로써, 회로의 구성 비율을 정량적으로 비교할 수 있었으 며, 전체 면적은 약 235.4 제곱 단위로 측정되었다. 항목 수치 최대 Arrival Time (AT) 5.38 ns Critical Path 경로 길이 약 12단계 셀 연결 Slack 최소값 -0.01 ns (타이밍 위반 가능성) 총 셀 수 143개 Iteration 수 6회 Combinational Area 168.4 Sequential Area 67.0 총 면적 235.4 8. Extra Credit 기능: Slack 계산 및 시각화 프로젝트의 확장 기능으로 slack 값을 계산하고, 이를 시각화하는 기능을 추가 구현하였 다. slack은 Required Arrival Time(RAT) - Actual Arrival Time(AT)으로 계산되며, 특정 경로 가 클럭 타이밍 내에 데이터를 안정적으로 전달할 수 있는 여유 시간을 의미한다. Slack 값이 음수이면 타이밍 위반이 발생한 것이며, 0에 가까울수록 크리티컬한 경로에 속한다. 각 넷의 slack 값을 계산한 후 matplotlib를 사용하여 히스토그램을 생성하였고, 전체 slack 분포를 통해 타이밍 마진이 충분한 경로와 부족한 경로를 시각적으로 확인할 수 있었다. 이 결과는 향후 레이아웃 최적화, buffer 삽입, cell sizing 등 타이밍 클로저 작업 의 우선순위를 설정하는 데 활용될 수 있다. “위의 슬랙 히스토그램은 전체 넷들의 타이밍 여유 분포를 나타낸 것으로, 0ns 이하의 슬 랙을 가지는 경로가 존재함을 보여준다. 이는 타이밍 위반 가능성이 있는 경로로, 회로 최적화 대상이 될 수 있다." 9. CCS 모델 조사 및 NLDM과의 비교 기존의 NLDM은 LUT 기반의 2차 보간 방식으로, Slew와 Capacitance의 두 축을 기준으 로 delay 및 output Slew를 추정한다. 구현이 간단하고 계산 속도가 빠르다는 장점이 있 지만, 비선형적인 상황이나 고속 신호, 낮은 전력 영역에서는 정확도에 한계가 있다. 반 면 CCS(Composite Current Source) 모델은 셀의 전류 특성을 기반으로 보다 정밀한 타이 밍 모델링을 수행한다. CCS는 입력 파형과 출력 파형의 전류 곡선을 모델링하고, 이를 기반으로 delay와 slew를 물리적으로 계산한다. 특히 신호의 변곡점, 전압 레벨의 변화 등을 정밀하게 반영할 수 있어 고주파 회로나 신호 무결성 분석(signal integrity)에 적합하다. 다만, 모델 생성과 시 뮬레이션에 필요한 데이터가 많고 계산 비용이 크다는 단점도 존재한다. 실제 산업 현장 에서는 초기 설계 단계에서는 NLDM을 사용하다가, 최종 배치 배선 후 CCS 모델로 전환 하여 시뮬레이션을 수행하는 하이브리드 접근이 일반적이다. 10. 결론 및 종합 평가(COMMENTS) 이번 EE101 기말 프로젝트를 통해 정적 타이밍 분석이라는 주제를 단순한 이론 수준이 아니라 실제 구현과 산업적 응용까지 포괄하는 방식으로 학습할 수 있었다. 단순한 논리 회로도 이상의 의미를 갖는 타이밍, Slew, Capacitance, delay, slack 등의 개념을 Python으 로 구현하면서, EDA 툴이 어떻게 회로를 분석하는지 깊이 이해할 수 있었다. 또한 반도 체 생태계에 대한 조사와 Foxconn에 대한 분석을 통해, 하나의 셀이 전체 시스템 내에서 어떤 위치와 역할을 수행하는지를 체감할 수 있었다. 추가적으로 CCS 모델과 NLDM을 비교 분석하며 실제 설계 환경에서 정확성과 계산 효 율 간의 균형이 얼마나 중요한지에 대해서도 고민할 수 있었다. 전체적으로 본 프로젝트 는 코드 구현, 기술 조사, 산업 구조 분석이 결합된 다층적인 학습 경험이었으며, 실무적 역량 강화와 이론적 이해를 동시에 달성할 수 있는 소중한 기회였다. 이번 프로젝트는 STA 구현과 반도체 생태계 조사를 포괄하는 알찬 경험이었지만, 몇 가 지 확장 가능성도 발견할 수 있었다. 우선, 구현된 STA 엔진에 대한 테스트 루틴이나 자 동 검증 절차가 부족하여, 복잡한 회로에서도 정확하게 작동하는지를 반복적으로 확인하 기는 어려웠다. 또한, 타이밍 모델 측면에서 CCS에 대한 조사만 이루어졌고, 실제 계산 비교까지는 진행하지 못한 점도 아쉬움으로 남는다. 넷리스트 구조나 크리티컬 경로를 시각적으로 표현하는 흐름도가 있었다면 전체 회로의 구조적 이해에 더욱 도움이 되었을 것이며, 입력 파라미터(Slew, Cap 등)를 변화시키며 결과를 비교하는 실험도 의미 있는 확장 주제가 될 수 있었다. 이러한 점들은 향후 유사 한 프로젝트를 수행할 때 고려하면 좋은 방향성이 될 것이다. 11. 참고 문헌 Synopsys, Static Timing Analysis User Guide, Synopsys Inc., 2020. International Technology Roadmap for Semiconductors (ITRS), “System Drivers,” 2015 Edition. Wikipedia Contributors, “Foxconn,” Wikipedia: The Free Encyclopedia, [Online]. Available: https://en.wikipedia.org/wiki/Foxconn M. H. Lee, “Design methodology and timing closure in the nanometer era,” in IEEE International SoC Conference, 2007.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )