본문으로 건너뛰기Skip to content 1:1 문의 — [email protected]로 이메일 작성 Contact us — email [email protected]

Logic Synthesis compile은 실제로 무엇을 바꾸나: Yosys/ABC로 추적한 5개의 회로 상태

Logic Synthesis compile을 다섯 개의 관찰 가능한 회로 상태로 분해하고, 실제 Yosys/ABC 로그와 Nangate45 mapping 결과로 첫 번째 깨진 contract를 찾는 방법을 정리합니다.

Symbolic RTL to internal representation to AIG to library-cell progression; not a physical product image
Original editorial concept by VLSI Korea. Symbolic software representations, not a physical product image.

Logic Synthesis의 compile은 RTL을 한 번에 gate로 번역하는 명령이 아니다. 더 정확히 말하면, HDL 의미를 확정하고, 절차형 process를 회로 상태로 내리고, 산술·논리 구조를 다시 묶고, generic gate로 분해한 뒤, Liberty가 허용하는 standard cell로 매핑하는 연속적인 상태 전이이다. 실무에서 compile 결과가 이상할 때 가장 먼저 물어야 할 질문도 “최종 WNS가 왜 나쁜가?”가 아니라 “어느 상태 전이부터 두 run이 달라졌는가?”다.

Logic synthesis compile을 다섯 개의 관찰 가능한 회로 상태로 나눈 다이어그램
Figure 1. Treating compile as a chain of Elaborated, Process-lowered, Coarse-optimized, Fine-grain and Library-mapped states makes the first divergence observable. Visual by VLSI Korea. Open full-resolution figure

이 글은 기존 RTL-to-GDSII Logic Synthesis 개론을 반복하지 않는다. 대신 4-bit SystemVerilog teaching design을 Yosys 0.67+post와 Berkeley ABC로 직접 통과시키고, 각 pass 뒤의 JSON·RTLIL·netlist·log를 저장했다. 목표는 상용 synthesis tool의 PPA를 평가하는 것이 아니라 compile 안에서 실제로 무엇이 사라지고, 생기고, 이름을 바꾸며, 어느 결과를 Physical Design 팀에 넘겨야 하는지 관찰하는 것이다.

VLSI Korea view: Compile은 “RTL에서 gate로” 가는 단일 변환이 아니라, 각 단계가 다음 단계에 의미·제약·증명 가능성을 넘기는 representation contract의 연쇄다. 최종 report만 비교하면 첫 번째 깨진 contract를 놓치기 쉽다.

1. 왜 지금 compile 내부를 다시 봐야 하나

공개 Yosys 문서는 coarse-grain 연산을 유지하는 단계와 bit-level gate로 내려가는 단계를 구분한다. 버전이 고정된 pass 문서와 실제 실행 artifact를 함께 보면, 이 구분을 외운 지식에서 디버깅 가능한 관찰로 바꿀 수 있다. 이 글의 출발점은 학회 프로그램을 보며 생긴 질문이지만, 공개되지 않은 발표의 방법이나 성능은 근거로 쓰지 않았다.

The probe exposes specific transformations
Source: saved compile_probe.sv; conceptual feature inventory, not a gate-level schematic. Original explanatory figure by VLSI Korea. Open full-resolution figure

Physical Design Engineer에게도 이 문제는 front-end 팀의 내부 사정이 아니다. 같은 RTL이라도 elaboration parameter, clock/reset 해석, SDC coverage, dont-use 목록, library corner, physical guidance, tool build가 달라지면 다른 mapped graph가 나온다. 그 차이는 placement density, high-fanout topology, buffering 여지, congestion hot spot, path grouping, ECO 난이도로 이어진다. 즉 compile은 P&R의 입력 파일 하나를 만드는 절차가 아니라 P&R이 풀어야 할 문제의 모양을 결정하는 단계다.

이번 probe에는 5-bit 결과를 만드는 두 개의 덧셈, XOR 경로, select mux, active-low asynchronous reset, enable, zero detector, parity reduction을 넣었다. 일부러 all-ones mask와 fanout이 없는 reduction cone도 넣었다. 그러면 constant simplification, dead-code cleanup, process lowering, enable 추출, arithmetic aggregation, technology mapping을 작은 회로에서 관찰할 수 있다.

Cell counts across five Yosys synthesis stages
Figure 2. Stage statistics from the reproduced run. The 10→7→59→53 cell sequence is not a QoR curve because the unit being counted changes with the representation. Source: Yosys stat -json -width artifacts from this experiment. Open full-resolution figure

2. 00 Elaborated: 문법이 아니라 설계 의미를 고정한다

read_verilog -sv와 hierarchy -check -top compile_probe 뒤의 첫 snapshot에는 30 wires, 102 wire bits, 1 process, 10 cells가 있었다. 여기서 cell은 standard cell이 아니다. 두 개의 $add, 비교, mux, reduction, XOR 같은 Yosys internal operator다. 아직 always block은 하나의 process로 남아 있다.

Elaboration에서 중요한 것은 parameter를 적용하고 generate·width·signedness·hierarchy·top을 확정하는 일이다. RTL text가 같아도 top parameter, define, file order, black-box declaration이 달라지면 이 첫 state부터 다르다. 따라서 “같은 RTL을 합성했다”는 말은 source commit만 같다는 뜻으로는 부족하다. compile manifest에는 top, parameter override, define, include path, source list와 순서가 있어야 한다.

An elaborated cell is not a standard cell
Source: 00_elaborated.json and stat output; design-specific observations. Original explanatory figure by VLSI Korea. Open full-resolution figure

이 단계의 실전 점검 항목은 단순하다. 예상 hierarchy가 존재하는가, unintended latch나 undriven net 경고가 있는가, 폭 확장과 sign extension이 설계 의도와 같은가, memory가 어떤 shape으로 인식됐는가를 본다. 두 run의 최종 area가 다를 때 이 snapshot의 operator 종류와 bit width부터 같지 않다면 뒤 단계 report를 비교할 이유가 없다.

2.1 01 Process-lowered: always block이 mux와 state element가 된다

proc pass 뒤에는 process가 1개에서 0개로 줄었다. 대신 asynchronous reset을 가진 5-bit state element $adff 1개와 mux 2개 등이 명시적으로 나타났다. 통계는 34 wires, 110 bits, 10 cells다. Cell 수가 그대로여도 의미는 크게 달라졌다. “posedge clock, negedge reset, enable일 때만 update”라는 절차형 기술이 resettable register와 data-selection network라는 구조적 계약으로 바뀐 것이다.

always process가 resettable register와 mux network로 내려가는 과정을 보여주는 다이어그램
Figure 3. Process lowering fixes priority, reset polarity and enable semantics as structural state and selection logic. Source: the process-lowered JSON and graph from the experiment. Open full-resolution figure

여기서 자주 생기는 문제는 source line을 보며 예상한 register와 netlist의 state point가 일치하지 않는 것이다. reset branch 우선순위, incomplete assignment, blocking/nonblocking 사용, array access, clock-enable pattern이 인식 결과를 바꾼다. Retiming이나 clock-gating 이전인데도 register count가 예상과 다르면 process-lowered snapshot을 먼저 본다. 최종 mapped cell 이름까지 내려가 버리면 원래 always branch와의 대응이 더 어려워진다.

공식 문서의 다른 process 예제는 reset branch에서 상수가 아니라 RV를 읽는다. 아래 $aldff의 AD 입력은 그 차이를 그대로 보여준다. 이름이 비슷해도 비동기 load와 상수 reset은 다른 계약이며, 우리 probe의 $adff와 혼동하면 안 된다.

Official Yosys diagram with RV data entering AD, R entering ALOAD and C entering CLK of an asynchronous-load flip-flop
Source figure A. The official Yosys process example produces $aldff: AD receives RV, ALOAD receives R, and CLK receives C. This variable asynchronous-load example is not the constant-reset $adff in our probe. Source: YosysHQ documentation; ISC License; rasterized with a VLSI Korea watermark. Original figure; license. Open full-resolution figure

또 하나 중요한 점은 “register 하나”의 단위다. 이 probe의 $adff는 width 5인 word-level cell 하나이지만, fine-grain 단계에서는 bit-level flip-flop 5개가 된다. 따라서 통계상의 cell 1과 standard-cell count 5는 같은 회로 상태를 다른 granularity로 센 것이다. 이 차이를 무시하면 pass 전후 cell count 증감을 optimization 성패로 오판한다.

2.2 02 Coarse-optimized: 회로를 줄이면서 동시에 더 큰 연산으로 묶는다

다음에는 opt_expr, opt_clean, wreduce, peepopt, share, alumacc, opt를 적용했다. 결과는 23 wires, 84 bits, 0 processes, 7 cells였다. all-ones mask와 fanout 없는 reduction cone은 이미 process-lowered snapshot에서 사라져 있었다. proc 안의 opt_expr -keepdc 등 앞선 처리를 건너뛰고 이 제거를 coarse optimization만의 효과로 돌려서는 안 된다. 이 coarse state에서 두 덧셈은 각각 낮은 수준 gate로 즉시 분해되지 않고 $alu 두 개로 표현됐다. Enable은 state element와 결합된 $adffe 형태로 나타났다.

이 단계는 “cell을 최대한 줄이는” 단계로 이해하면 안 된다. Coarse IR의 목적은 word-level 연산과 공유 가능성을 보존하면서 불필요한 논리를 제거해 다음 최적화가 더 좋은 선택을 하게 하는 데 있다. 어떤 pass는 여러 operator를 하나의 큰 cell로 묶고, 다른 pass는 그 cell을 다시 작은 primitive로 푼다. 그래서 cell count는 pass의 단조로운 목적함수가 아니다.

Coarse optimization preserves word-level meaning
Source: saved 02_coarse_optimized.json and stat output. Original explanatory figure by VLSI Korea. Open full-resolution figure
정확한 반대 의견: “Compile이 진행될수록 cell 수와 wire 수는 계속 감소해야 한다”는 직관은 틀릴 수 있다. 표현 단위가 word-level operator에서 bit-level gate로 바뀌면 논리 기능이 같아도 cell 수가 급증한다. 비교 가능한 지표는 동일 representation, 동일 library, 동일 constraint, 동일 report definition 안에서만 만든다.

이번 equivalence proof의 gold는 RTL을 다시 읽고 proc와 opt_clean을 수행해 만들었다. Gate는 저장된 coarse snapshot이다. equiv_make 뒤에 async2sync와 opt_clean을 적용한 검증 모델에서 equiv_simple -seq 4가 27개, equiv_induct -seq 4가 5개 비교점을 증명했다. 결과는 32 proven, 0 unproven이다. 이 변환은 비동기 신호가 clock에 동기화된 경우를 모델링하고 negative hold time을 가정한다. Reset이 clock edge에서 해제되면 다음 cycle에도 reset 값을 유지한다는 전제다. 증명은 이 변환된 검증 모델 안에서만 유효하다. 아날로그 reset release, metastability나 제한 없는 비동기 timing을 검증하지 않았고, RTL-to-mapped 전체 LEC나 production signoff도 아니다.

The proof checks a transformed reset model
Source: equivalence.ys and equivalence.log; no analog reset or mapped-netlist proof. Original explanatory figure by VLSI Korea. Open full-resolution figure

techmap 뒤의 fine-grain state에는 41 wires, 108 bits, 59 cells가 있었다. 구성은 AND 18, OR 12, XOR 19, mux 4, NOT 1, bit-level DFFE 5다. 직전 coarse state의 7 cells보다 수가 여덟 배 이상 많지만 기능이 악화된 것이 아니다. 5-bit word 연산이 Boolean primitive로 펼쳐졌기 때문이다.

그 다음 NangateOpenCellLibrary typical Liberty를 읽고 dfflibmap과 abc -liberty를 실행했다. dfflibmap은 DFFR_X1 5개를 매핑했고, ABC는 조합논리를 library 함수와 area 정보를 이용해 48개 cell로 매핑했다. 최종 합계는 53개다. 앞선 59개 fine-grain cell 전체를 ABC가 단독으로 매핑한 것은 아니다. DFFR_X1 5개, MUX2_X1 5개, XOR2_X1 10개, XNOR2_X1 10개 외에 NAND, NOR, AOI, OAI 조합이 생겼다. Yosys report의 library area 합계는 90.174, sequential area는 26.600이었다.

Nangate45에 매핑된 53개 standard cell 구성과 실험 경계를 보여주는 차트
Figure 4. The mapped cell mix is specific to this teaching design and pinned Nangate45 Liberty file. With no SDC timing target, placement or RC, it is not a benchmark for commercial-tool QoR or silicon PPA. Source: Yosys/ABC log and mapped JSON. Open full-resolution figure

여기서 technology mapping의 본질이 보인다. Generic Boolean graph에는 동일 함수를 구현하는 여러 cut와 구조가 있다. Library에는 각 cell의 Boolean function, timing arc, input slew/output load table, area가 있다. Mapper는 legal function 조합 안에서 cost를 최소화한다. 하지만 이번 run에는 clock period와 I/O delay를 넣지 않았다. 따라서 “90.174 area로 timing을 만족했다”는 문장은 성립하지 않는다. 정확한 표현은 “이 Liberty의 area 단위를 사용한 무제약 교육용 mapping 결과가 90.174로 보고됐다”이다.

Synopsys Design Compiler와 Cadence Genus의 공개 문서는 physically aware 또는 topographical context, congestion 예측, placement correlation, multi-bit register, clock-gating, datapath optimization 같은 기능을 설명한다. 그런 설명은 vendor가 공개한 기능 주장으로 취급해야 하며 이 open experiment가 같은 algorithm이나 QoR를 재현했다고 말할 수 없다. 다만 RTL·constraint·library·physical context가 함께 mapped graph를 결정한다는 interface는 공통적으로 관찰할 수 있다.

RTL SDC Liberty physical context가 synthesis와 mapped netlist report handoff를 연결하는 다이어그램
Figure 5. Mapping quality depends on contracts outside the RTL. A change in SDC, Liberty or physical context can produce a different legal graph and a different report from identical source. Visual by VLSI Korea, based on public tool documentation. Open full-resolution figure

3.1 SDC가 빠진 compile과 physical-aware compile을 혼동하지 말 것

이번 probe가 의도적으로 하지 않은 것이 중요하다. SDC clock가 없고, input/output delay가 없고, max transition·capacitance·fanout constraint가 없으며, multi-mode multi-corner scenario가 없다. Floorplan, macro blockage, placement, routing congestion, extracted RC도 없다. 따라서 이 실험은 logical transformation을 관찰하기에는 좋지만 timing closure를 논할 수는 없다.

Which inputs are missing from a timing claim?
Sources: OpenSTA input documentation; experiment compile_probe.ys. Original explanatory figure by VLSI Korea. Open full-resolution figure

Timing-driven compile에서는 같은 Boolean function도 path criticality에 따라 다른 구조가 선택될 수 있다. 더 큰 drive cell, buffer tree, replicated driver, 다른 mux decomposition, carry structure가 필요할 수 있다. Physical feedback이 들어오면 wire delay와 congestion 때문에 논리적으로 짧아 보이는 구조가 실제로는 나쁠 수 있다. 반대로 logical area가 조금 큰 구조가 배치·배선 후 WNS와 routability를 개선할 수 있다.

OpenSTA가 읽는 대표 입력에는 Verilog netlist, Liberty, SDC, SDF, SPEF가 포함된다. OpenROAD Flow Scripts의 public platform bring-up 문서는 Liberty뿐 아니라 LEF, GDS, SDC 같은 platform artifact를 요구한다. 이는 synthesis report의 숫자가 독립된 진실이 아니라 분석 view와 library·constraint·physical abstraction에 묶인 결과라는 뜻이다. Physical Design 팀이 netlist만 받고 “나머지는 알아서” 하는 handoff는 같은 문제를 재현할 수 없는 handoff다.

4. 최종 WNS 대신 첫 번째 깨진 contract를 찾는 디버깅 순서

합성 및 Physical Design handoff를 위한 다섯 단계 디버깅 순서
Figure 6. Check front-end semantics through the equivalence boundary in order. Starting with the final metric can conceal the earlier cause. Visual by VLSI Korea. Open full-resolution figure

첫째, front-end semantics. Source commit, top, parameter, define, include, black box, width/sign, reset polarity가 같은지 확인한다. Elaboration warning과 operator/bit-width histogram을 비교한다. 이 단계가 다르면 constraint나 mapping을 논의하지 않는다.

둘째, constraint coverage. 모든 sequential clock가 정의됐는지, generated clock의 master와 divide 관계가 맞는지, input/output budget의 기준 clock가 맞는지, false/multicycle path가 지나치게 넓지 않은지 확인한다. “Unconstrained endpoint 0”만으로 충분하지 않다. constraint가 존재하는 것과 설계 의도를 정확히 표현하는 것은 다른 문제다.

셋째, mapping legality. target/link library, corner, operating condition, dont-use, tie/filler/clock cell policy, max transition·capacitance·fanout 규칙이 같은지 본다. Unmapped internal cell이나 black box가 남았는지, sequential cell의 reset polarity와 enable 구현이 legal한지 점검한다.

A legal mapped netlist can still express the wrong intent
Sources: Yosys cell-library mapping, OpenSTA; VLSI Korea acceptance interpretation. Original explanatory figure by VLSI Korea. Open full-resolution figure

넷째, physical correlation. Floorplan version, macro location, utilization, blockage, routing layer, RC corner, clock assumption, congestion estimate가 어느 run에서 왔는지 확인한다. Synthesis와 P&R이 서로 다른 physical snapshot을 참조하면 correlation 문제를 tool 성능 문제로 오인한다.

다섯째, proof boundary. Formal equivalence가 어떤 두 artifact 사이에 수행됐는지 적는다. RTL vs post-synthesis인지, pre/post-retiming인지, scan insertion 전후인지, ECO 전후인지, black-box assumption이 무엇인지가 필요하다. “LEC pass”라는 한 줄은 증명 범위를 설명하지 못한다.

이번 실험에서 증명한 process-lowered와 coarse-optimized 사이 경계를 표시한 다이어그램
Figure 7. All 32 points passed after async2sync in the synchronized reset verification model. Analog reset release, metastability and the mapped-netlist boundary are outside this proof. Source: equivalence.ys and equivalence.log. Open full-resolution figure

5. Physical Design 팀에 넘겨야 하는 것은 netlist가 아니라 재현 가능한 compile state다

좋은 handoff의 최소 단위는 netlist 한 파일보다 크다. 첫 묶음은 identity다. RTL commit, source manifest, top, parameter·define, synthesis script, tool name·build, run ID를 넣는다. 두 번째는 constraints다. SDC와 scenario manifest, clock table, exception review, unconstrained-path report를 묶는다. 세 번째는 technology다. Liberty corner와 hash, LEF/technology data, dont-use와 mapping policy, physical guidance version을 기록한다. 네 번째는 proof and reports다. Mapped netlist hash, area/timing/power report, warnings, check 결과, equivalence boundary와 proof log를 포함한다.

합성에서 Physical Design으로 넘기는 identity constraints technology proof 네 열의 계약
Figure 8. Release only when all four columns refer to the same compile and scenario set. VLSI Korea synthesis-to-Physical-Design handoff contract. Open full-resolution figure

이 구조를 쓰면 두 run의 차이를 “툴이 이상하다”에서 구체적인 diff로 바꿀 수 있다. Elaboration operator가 달라졌는가, process-lowered state point가 달라졌는가, coarse arithmetic sharing이 달라졌는가, generic graph는 같은데 library mapping만 달라졌는가, netlist는 같은데 SDC·RC view가 달라 timing report만 달라졌는가를 구분할 수 있다.

Physical Design Engineer의 승인 질문도 바뀐다. “Netlist가 왔는가?”가 아니라 “이 netlist를 만든 constraint와 library·physical context를 같은 버전으로 다시 열 수 있는가?”, “주요 path group과 high-fanout net의 synthesis decision을 설명할 artifact가 있는가?”, “P&R에서 remap·resize·buffer·clone한 뒤 어떤 equivalence와 timing view로 돌아갈 것인가?”를 묻는다.

6. 이 실험이 말하는 것과 말하지 않는 것

말할 수 있는 것은 세 가지다. 첫째, compile은 관찰 가능한 여러 IR state를 만든다. 둘째, raw cell count는 representation이 바뀌면 직접 비교할 수 없다. 셋째, 디버깅과 handoff에는 최종 netlist뿐 아니라 각 contract의 provenance가 필요하다.

말할 수 없는 것도 분명하다. 이 결과로 Synopsys Design Compiler, Cadence Genus 또는 다른 상용 tool보다 Yosys/ABC가 좋거나 나쁘다고 판단할 수 없다. Nangate45 typical은 교육용 공개 library이며 production PDK가 아니다. Timing constraint, placement, RC, power activity가 없으므로 silicon PPA와 correlation을 주장할 수 없다. 작은 4-bit block의 32-point proof는 SoC-level LEC 난이도를 대표하지 않는다.

What the measured values can support
Source: experiment scripts, saved statistics and proof log. Original explanatory figure by VLSI Korea. Open full-resolution figure

다음 단계의 유용한 실험은 하나씩 contract를 추가하는 것이다. 먼저 clock period와 I/O delay를 넣어 mapping mix가 어떻게 바뀌는지 본다. 그다음 max transition·fanout rule을 추가해 buffering과 cloning을 관찰한다. OpenROAD에서 placement와 estimated RC를 만든 뒤 synthesis estimate와 post-place timing의 차이를 기록한다. 마지막으로 retiming이나 clock-gating처럼 state correspondence가 달라지는 변환을 추가하고 LEC 관문을 다시 정의한다.

국내 RTL·PD 협업에서 먼저 바꿀 선택

RTL 담당자는 첫 구조 차이를 찾고, PD 담당자는 handoff를 재현할 수 있는지 판단한다. 국내 fabless와 design-service 팀이 서로 다른 tool build나 library view를 쓸 때 이 구분이 유용하다. 개발용 probe에는 공개 library를 쓰되 고객 RTL, foundry PDK와 내부 report를 공개 예제로 옮기지 않는다. 납기 판단에는 단순 cell 감소율 대신 같은 representation에서의 재현 여부와 실제 constrained timing view를 쓴다. 이는 한국 기업의 채택률에 대한 관측이 아니라 이 실험에서 도출한 협업 제안이다.

Handoff 검토에서도 cell 이름의 의미를 먼저 읽는다. 공식 counter 예제의 $sdffe는 synchronous reset과 enable을 담는다. 앞서 측정한 비동기 reset 회로와 통계 숫자를 직접 비교하지 않고, 각 state element가 어떤 제어 의미를 보존하는지 확인하는 참고 도해다.

Official Yosys coarse counter diagram showing an add operator feeding an enabled flip-flop with synchronous reset
Source figure B. The official Yosys counter example preserves $add and $sdffe at coarse grain. The synchronous-reset counter is a separate reference circuit, not the asynchronous-reset probe measured here. Source: YosysHQ documentation; ISC License; rasterized with a VLSI Korea watermark. Original figure; license. Open full-resolution figure

이 논지가 틀릴 수 있는 조건도 있다. 첫째, 동일한 manifest를 반복 실행해도 첫 diff 위치가 안정되지 않는다면 pass snapshot만으로 원인을 찾는 방법의 효용은 제한된다. 둘째, 차이가 최종 physical optimization 안에서만 생기고 중간 state를 노출하지 않는 flow라면 이 다섯 상태만으로 충분하지 않다. 그때는 vendor가 지원하는 database checkpoint와 post-place 분석을 추가해야 한다.

다음 관측점은 실험 설계상의 검토 날짜다. 2026-12-07에는 같은 source·build·library를 고정한 반복 run의 재현성을 확인한다. 2027-03-07에는 공개 clock·I/O constraint와 placement RC를 추가한 결과에서 mapping과 timing 변화를 분리한다. 2027-09-07에는 state 변환을 추가한 proof가 실제 release boundary와 같은지 다시 검토한다. 제품 출시 예측이나 실행 완료 약속이 아니며, 그때 확보한 artifact가 없으면 결과는 미확인으로 둔다.

Three checks that could change the interpretation
VLSI Korea proposed observation plan; results remain unknown until artifacts exist. Original explanatory figure by VLSI Korea. Open full-resolution figure
실무 요약: Compile 결과가 달라졌다면 최종 WNS부터 보지 말자. Elaborated → Process-lowered → Coarse → Fine-grain → Mapped 순서로 첫 diff를 찾고, 그 diff가 RTL 의미, constraint, library, physical context 중 어느 contract에서 들어왔는지 확인한다.

공개 자료와 재현 범위

Mechanism과 interface는 Yosys의 Synthesis in detail, 현재 technology mapping pass 문서, Berkeley ABC 공식 프로젝트 설명, OpenSTA, OpenROAD Flow Scripts를 교차 확인했다. Commercial-flow 경계는 Synopsys Design Compiler와 Cadence Genus의 공개 제품 문서에서 vendor claim으로만 확인했다. DAC 2026 프로그램은 연구 방향을 찾는 discovery source로만 사용했다.

실험은 Yosys 0.67+post, ORFS commit 8c0616910615e843780ba527526f2b83a564ba70에 고정한 NangateOpenCellLibrary_typical.lib로 2026-09-02 KST에 실행했다. Library SHA-256은 8d540a4d4cf6d09d27c87ad067857a9c0c2eeb023ab7a56e058cd3113db4e9b1이다. 모든 단계 통계, stage JSON, mapped Verilog, proof log와 시각물은 같은 local review package에 보존했다.

Reproduce a claim through its artifacts
Sources: source ledger, experiment manifest and saved verification artifacts. Original explanatory figure by VLSI Korea. Open full-resolution figure

Source figure license and attribution

YosysHQ documentation, copyright 2025 YosysHQ GmbH. Repository permission notice reproduced below. Diagrams preserve source geometry; rasterization and watermark added by VLSI Korea.

ISC License

Copyright (C) 2012 - 2026 Claire Xenia Wolf <[email protected]>

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

편집 투명성: 공개 자료 조사, 초안 구성과 도표 제작에 AI 보조를 사용했다. 실험 명령은 로컬에서 실행했고 수치와 proof log를 직접 대조했다. 공개되지 않은 발표 내용을 생성하지 않았으며, 편집 책임은 VLSI Korea에 있다.

댓글

VLSI KOREA BRIEFING

반도체를 읽는 안목, 메일함으로.

엔지니어의 시각과 산업의 흐름을 함께. 무료로 구독하세요.

이미 구독 중인가요? 로그인