DeepDataFlow
G2 시작하기 · 8편

G2 시작하기: 다운로드부터 사인오프 타이밍까지

내 Linux 머신에서 실행되는 칩 설계 플랫폼 G2를 단계별로 소개합니다. 약 27분 동안 G2에 포함된 오픈소스 도구만으로, 다운로드부터 배치 배선과 사인오프 타이밍을 마친 블록까지 진행합니다.

게시일 2026-10-21 · 8 편 · DeepDataFlow
G2 시작하기: 다운로드부터 사인오프 타이밍까지

G2는 내 Linux 머신에서 실행되는 칩 설계 플랫폼입니다. 프로젝트, 블록, 라이브러리, 사인오프 시나리오, 설계 데이터가 모두 하나의 웹 페이지에 모여 있고, 도구 실행이 끝나면 핵심 수치가 바로 보입니다. 이 시리즈는 가장 빠른 입문 과정입니다. 약 27분 동안 G2에 포함된 오픈소스 도구만으로, 다운로드부터 배치 배선과 사인오프 타이밍을 마친 블록까지 진행합니다.

이 글은 동영상 8편의 글 버전입니다. 각 섹션에는 해당 에피소드 동영상, 그 내용, 그리고 직접 따라 하는 데 필요한 명령과 수치를 담았습니다. 모두 무료 G2 Community Edition으로 해 볼 수 있습니다.

플랫폼G2 v1.0.0 Community Edition. Linux에서 브라우저로 쓰는 작업 공간
도구Yosys, OpenROAD, OpenRCX, OpenSTA (Verilator, Magic, Netgen도 포함)
PDKNangate45, SkyWater 130, ASAP7. 바로 실행할 수 있는 데모 케이스 포함
설계모든 에피소드에서 Nangate45의 gcd
결과v01은 사인오프에서 1 GHz에 1.95 ns 못 미치고, 제약을 고친 v02는 9 ps 부족

예고편

1분 만에 보는 G2

1:13

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

모든 것이 하나의 웹 페이지에 있습니다. 프로젝트, 블록, 라이브러리, 시나리오, 설계 데이터입니다. 예고편은 실제 블록 gcd를 RTL에서 배치 배선을 거쳐 사인오프 타이밍까지 진행하며, 모든 단계와 결과를 표 하나로 보여 줍니다. 도구를 실행할 때마다 타이밍, 밀도, 실행 시간 같은 핵심 수치가 바로 표시되므로 로그 파일을 grep할 필요가 없습니다. 타이밍이 실패하면 어떤 경로든 열어 지연이 어디서 생기는지 확인할 수 있습니다.

뒤에서는 G2가 모든 설계 데이터의 버전을 관리하므로, 어떤 넷리스트가 어떤 결과를 만들었는지 항상 알 수 있습니다. 그리고 G2의 절차를 아는 AI 어시스턴트가 흐름을 대신 실행해 줍니다. 이 모든 것이 다운로드 하나에 들어 있으며, OpenROAD, Yosys, OpenSTA, PDK, 데모가 포함되어 있습니다.

1부: 설정

#1설치와 실행

3:07

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

G2 Community Edition은 GitHub에 있고, 필요한 것은 모두 릴리스 패키지 하나에 들어 있습니다. G2 플랫폼은 Ubuntu 22.04 이상, Rocky 또는 RHEL 8 이상에서 동작합니다. 포함된 OpenROAD, Yosys, Verilator에는 glibc 2.35 이상, 즉 Ubuntu 22.04 이상이 필요합니다.

G2는 몇 가지 표준 Linux 도구를 씁니다. Ubuntu에서는 한 줄로 설치할 수 있고, sudo가 필요한 단계는 이것뿐입니다.

sudo apt-get install -y xterm tcsh vim-gtk3 firefox tcl coreutils gzip

다음으로 릴리스 패키지(약 530 MB)를 내려받아 압축을 풉니다. G2에는 설치 프로그램이 없고 root 권한도 필요 없습니다. 안에는 G2 본체, 포함된 Node.js 런타임, 그리고 Nangate45·sky130·ASAP7이 담긴 pdk 폴더가 있습니다. 오픈소스 EDA 도구는 g2/free에 있습니다.

wget https://github.com/DeepDataFlow/G2/releases/download/v1.0.0/G2_v1.0.0.tar.gz
tar zxvf G2_v1.0.0.tar.gz
mkdir g2
cd g2
../G2_v1.0.0/g2/bin/g2init
source g2.rc
g2

작업 공간은 프로젝트와 데이터가 놓이는 곳입니다. g2init은 빈 포트를 고르고, 작업 공간 폴더를 만들고, g2.rc를 씁니다. g2.rc는 환경을 설정하고 G2와 포함된 모든 도구를 경로에 추가합니다. g2는 서버를 별도 창에서 시작합니다. 서버는 토큰이 붙은 로그인 URL을 출력합니다. 토큰을 포함한 URL 전체를 Firefox에 복사하세요.

홈 페이지는 프로젝트 목록입니다. 프로젝트를 만들면, 프로젝트 페이지에 G2의 각 기능별 탭이 있습니다.

탭내용
Impl구현: 도구를 실행하는 곳
Spec프로젝트 설정
Blk각 블록의 목표(속도, 면적 등)
Scen사인오프 시나리오: 모드와 PVT 코너
LIM라이브러리 관리자
DDM설계 데이터의 버전을 관리하는 설계 데이터 관리자
SCM스크립트

다음부터는 명령 세 개면 됩니다. 작업 공간으로 cd하고, source g2.rc, g2를 실행합니다.

#2명령 하나로 데모 프로젝트

3:55

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

G2에는 세 PDK 모두의 데모 케이스가 들어 있고, 이 시리즈는 Nangate45를 씁니다. build.sh는 짧은 단계 목록입니다. 프로젝트를 만들고, 사인오프 시나리오를 정의하고, PDK를 지정하고, 라이브러리를 설치하고, gcd와 spm 두 블록을 만듭니다. 어느 단계든 UI에서 직접 할 수 있지만, 스크립트를 쓰면 시간을 아낄 수 있습니다.

$G2_ROOT/demo_case/nangate45/build.sh   # sky130/과 asap7/도 있습니다

새 프로젝트에서 각 탭의 내용을 봅니다.

  • Spec은 프로젝트 전체 설정입니다. 테크 LEF, RC 파일, 합성에 쓰는 코너.
  • Scen에는 functional과 shift 두 모드가 있고, 각각 PVT 코너가 네 개입니다. 125 °C와 −40 °C의 저속, 고속, 일반입니다. 이후 모든 타이밍 분석이 이것을 씁니다.
  • LIM에는 Nangate45 표준 셀이 버전 v1로 설치되어 있습니다. G2가 모든 liberty 파일을 분석했기 때문에 셀, 면적, 핀 기능을 바로 살펴볼 수 있습니다. 메모리 매크로도 같은 방식으로 관리합니다.
  • Blk는 각 블록의 목표입니다. gcd는 클록 1 GHz, 면적 600 × 600 µm입니다. 각 블록은 쓰는 라이브러리를 이름과 버전으로 지정하므로, 모든 흐름이 어떤 라이브러리를 불러올지 압니다.
  • DDM에는 이미 gcd의 RTL이 들어 있습니다.

2부: RTL에서 사인오프까지

#3Yosys, OpenROAD, OpenSTA로 RTL에서 GDS까지

6:16

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

G2에서는 구현 시도 하나하나가 버전입니다. 버전은 처음에는 빈 폴더이고, 여기에 흐름을 하나씩 체크아웃합니다. 이번 편에서는 gcd의 v01을 만듭니다.

먼저 합성입니다. 여기서 시리즈에서 가장 중요한 것을 배웁니다. G2의 모든 흐름은 같은 뷰를 같은 순서로 가지고 있습니다.

뷰역할
Script실행 스크립트를 가져옴
LIM라이브러리를 선택
DDM입력 데이터를 연결
Exec도구 실행: Gen이 실행 스크립트를 쓰고 Run이 실행
QA체크리스트
Chkin결과를 DDM에 게시

Yosys에서 이것을 익히면 OpenROAD, OpenSTA, 그 밖의 모든 흐름도 똑같습니다. DDM 뷰는 이번 실행이 쓰는 입력 데이터를 정확히 보여 줍니다. 여기서는 RTL 버전 v2와 합성용 SDC입니다. 실행이 끝나면 QoR이 로그와 리포트를 분석해 셀 수, 레지스터 수, 오류 수 카드를 채우므로, 로그를 읽지 않아도 성공 여부를 알 수 있습니다. 체크인하면 넷리스트가 syn v01로 DDM에 게시됩니다. 이것이 인계입니다. 다음 흐름은 이 폴더가 아니라 DDM에서 넷리스트를 가져갑니다.

OpenROAD에도 같은 뷰가 있고, 흐름은 여덟 개 태스크로 나뉩니다. init, 플로어플랜, 배치, 클록 트리 합성, 포스트 CTS, 배선, 포스트 라우트, 피니시입니다. 태스크마다 별도의 하위 페이지와 로그가 있습니다. Gen all, Run all을 실행하면 각 태스크가 상태와 QoR을 보고합니다. 실행 시간, 오류, 시나리오별 타이밍, 밀도입니다.

완성된 gcd: 큰 것 두 개와 작은 것 네 개, 모두 여섯 개의 메모리 매크로와 그 주위에 배치된 표준 셀.
완성된 gcd: 큰 것 두 개와 작은 것 네 개, 모두 여섯 개의 메모리 매크로와 그 주위에 배치된 표준 셀.

이어서 사인오프입니다. OpenRCX가 배선된 레이아웃에서 기생 성분을 추출하고 SPEF를 DDM에 체크인합니다. OpenSTA의 Gen all은 Scen 탭의 시나리오마다 실행을 하나씩 만듭니다. 모드 2개 × 코너 4개이며, 각각의 최악 슬랙을 한눈에 볼 수 있습니다.

그리고 사인오프가 문제를 잡아냅니다. 저속 코너에서 셋업이 2 ns 가까이(−1.95 ns) 부족합니다. 블록 사양은 1 GHz인데, 배치 배선 제약은 4 ns 클록을 썼기 때문입니다. 이것이 바로 사인오프가 하는 일이며, 5편에서 고칩니다.

이번 편에서 클릭한 모든 작업은 스크립트로도 할 수 있습니다. 회귀 테스트나 야간 빌드에 유용합니다.

$G2_ROOT/demo_case/nangate45/gcd_rtl2gds.sh

#4설계 데이터 관리(DDM)

2:26

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

G2에서는 흐름이 서로의 폴더를 직접 읽지 않습니다. 모든 흐름은 설계 데이터 관리자 DDM에서 입력을 받고, 출력을 DDM에 게시합니다.

모든 흐름은 DDM에서 읽고 DDM에 게시합니다. Yosys는 RTL을 읽어 syn을 게시하고, OpenROAD는 apr_finish를 게시하며, OpenRCX가 SPEF를 더하고, OpenSTA는 둘 다 읽습니다.
모든 흐름은 DDM에서 읽고 DDM에 게시합니다. Yosys는 RTL을 읽어 syn을 게시하고, OpenROAD는 apr_finish를 게시하며, OpenRCX가 SPEF를 더하고, OpenSTA는 둘 다 읽습니다.

DDM 탭에는 프로젝트의 모든 블록과 데이터 유형이 표시됩니다. gcd에는 RTL, 합성 넷리스트, 모드별 SDC, 그리고 배치 배선 각 단계 뒤의 스냅샷이 있습니다. 데이터 유형마다 버전을 여러 개 가질 수 있고, 그중 하나가 게시(publish)됩니다. 하위 흐름이 기본으로 가져가는 것이 이것입니다.

각 버전은 자기가 어디서 왔는지 기억합니다. 넷리스트 syn v01은 impl/gcd/v01의 Yosys 실행에서 만들어졌고, 클릭 한 번으로 그 실행으로 돌아가 로그와 QoR을 볼 수 있습니다. 사용하는 쪽에서는 각 흐름과 태스크에 DDM 뷰가 있습니다. OpenROAD의 init 태스크는 syn v01과 배치 배선 제약을 읽습니다. 다른 제약을 시험하려면 거기서 버전을 바꾸고 다시 실행하면 되며, 파일을 복사할 필요가 없습니다.

내부는 평범한 폴더와 심볼릭 링크입니다. 관리할 데이터베이스가 없고, 셸에서 모든 것을 확인할 수 있습니다. 어떤 결과든 두 가지 질문에 답할 수 있습니다. 이 결과를 만든 데이터는 무엇이고, 그 데이터를 만든 실행은 무엇인가.

3부: 비교와 디버깅

#5구현 결과를 나란히 비교하기

4:15

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

실험에서 바꾸는 것은 하나뿐입니다. v02는 DDM에서 새 배치 배선 제약 sdc_apr_func v02를 쓰며, 사양에 맞춰 클록을 1 ns로 합니다. 버전은 서로 독립적이어서 v01은 그대로입니다. 흐름은 전과 같이 실행하고, OpenROAD의 init 태스크는 이제 sdc_apr_func v02를 읽습니다. 중요한 점이 하나 있습니다. OpenRCX와 OpenSTA는 입력이 생긴 뒤에 체크아웃해야 v02의 레이아웃에 연결됩니다.

v01과 v02를 나란히 보여 주는 Status 뷰: 사인오프 셋업이 −1.951 ns에서 −0.009 ns로.
v01과 v02를 나란히 보여 주는 Status 뷰: 사인오프 셋업이 −1.951 ns에서 −0.009 ns로.

블록 레벨의 Status 뷰는 두 버전을 나란히 보여 줍니다. 단계 선택기로 볼 지표를 바꿉니다. 프런트엔드는 합성 수치, APR은 배치 배선, Signoff는 시나리오별 타이밍입니다. v01은 1 GHz에 2 ns 가까이 못 미쳤고, v02는 9 ps 부족합니다. Column 버튼으로 표시할 지표를 정확히 고를 수 있어서, 숫자 하나를 찾을 때 편리합니다. 한 단계 위에서는 프로젝트의 모든 블록을 한꺼번에 볼 수 있습니다. 프로젝트 리더가 매일 아침 확인하는 화면입니다.

#6tpath로 타이밍 경로 디버깅하기

2:19

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

대상은 저속 코너(0.81 V, 125 °C)의 셋업입니다. OpenSTA 원본 리포트는 수천 줄이라 보통은 스크롤하고 grep해야 합니다. tpath는 이를 분석해 요약합니다. 먼저 경로 그룹별 최악 슬랙이 나와서 어떤 종류의 경로가 문제인지 바로 알 수 있습니다. 레지스터 간 경로가 9 ps 부족하고, 입력-레지스터(+0.145 ns)와 레지스터-출력(+0.247 ns)은 통과합니다. 다음으로 모든 경로가 슬랙 순으로 나열됩니다.

tpath로 연 경로 하나: 데이터 지연 0.978 ns와 셋업 0.030 ns 대비 주기 1 ns. 이상적인 클록이므로 클록 레이턴시와 스큐는 0.
tpath로 연 경로 하나: 데이터 지연 0.978 ns와 셋업 0.030 ns 대비 주기 1 ns. 이상적인 클록이므로 클록 레이턴시와 스큐는 0.

경로를 열면 시작점과 끝점, 론치 클록과 캡처 클록, 슬랙이 표시됩니다. 그리고 경로를 요소별로 나눕니다. 데이터 로직이 0.978 ns, 캡처 플립플롭의 셋업이 30 ps로, 1 ns 주기를 살짝 넘습니다. 이 실행은 이상적인 클록을 쓰므로 클록 레이턴시와 스큐가 0입니다. 따라서 고칠 곳은 클록 트리가 아니라 로직입니다. 이 경로의 원본 리포트 텍스트도 클릭 한 번으로 열 수 있습니다. tpath는 PrimeTime, Tempus/Innovus, DC, Fusion Compiler의 타이밍 리포트도 읽습니다.

4부: AI 어시스턴트

#7칩 설계 흐름을 위한 AI 어시스턴트

3:09

YouTube에서 보기(영어) ↗Bilibili에서 보기(영어) ↗

G2의 AI 어시스턴트는 스킬에서 지식을 얻습니다. 스킬 하나는 G2 작업 하나의 단계별 절차입니다. 프로젝트나 블록 만들기, 라이브러리 설치, Yosys·OpenROAD·OpenSTA 실행 등이 있습니다. 스킬은 일반 텍스트로, 3편과 같은 단계를 나열합니다. 체크아웃, 스크립트 가져오기, 라이브러리 가져오기, 생성, 실행, 체크인입니다. 어시스턴트는 자기만의 절차를 만들지 않고 G2의 실제 절차를 따릅니다.

동영상에서는 에이전트로 opencode를 씁니다. 에이전트 지침과 스킬을 작업 공간에 복사한 뒤 실행합니다.

cd $G2_SYS
cp $G2_ROOT/aiagent/AGENTS.md .
mkdir .opencode
cp -r $G2_ROOT/aiagent/skills .opencode/
opencode
  • "How do I run OpenROAD for gcd?"처럼 방법을 물으면 아무것도 실행하지 않고 설명합니다.
  • "Create a new version v03 for gcd in nangate45"처럼 실행을 맡기면 새 버전이 바로 브라우저에 나타납니다.
  • "Run yosys on gcd v03 and check the netlist into DDM" 같은 큰 작업은 먼저 계획을 세운 뒤, UI 버튼과 같은 명령으로 한 단계씩 진행합니다. 결과는 평범한 G2 실행으로, 같은 QoR 카드와 같은 DDM 체크인이 있어 확인하거나 직접 다시 할 수 있습니다.
  • 무언가 빠져 있으면 추측하지 않습니다. 아직 버전이 없는 블록에 "Run yosys on spm"을 요청하면, 멈추고 먼저 v01을 만들지 묻습니다.

다음 단계

이것이 G2입니다. 모든 흐름을 위한 웹 UI, 버전 관리되는 설계 데이터, 그리고 절차를 아는 어시스턴트.