구글 안티그래비티 완전 분석 — 모델·요금제·CLI 총정리

🚀 구글 안티그래비티(Antigravity) 완전 분석 구글이 2025년 11월 Gemini 3와 함께 공개한 에이전트 퍼스트(agent-first) IDE 안티그래비티는 Claude·GPT·Gemini를 한 도구에서 골라 쓰는 멀티모델 코딩 환경이다. 이 글에서는 ① 지원 모델과 요금제별 사용량의 실체, ② 실사용자 평가, ③ 구글의 방향성, ④ Claude Code와의 비교·연계, ⑤ CLI( agy )로 직접 쓰는 법까지 다섯 갈래를 차례로 정리한다. 자료 간 충돌이 있는 지점은 한쪽으로 단정하지 않고 양쪽을 모두 살려 표기했다. 📅 기준 시점: 2026년 6월 · 프리뷰 단계 정보로 수치는 변동 가능 1. 안티그래비티란 무엇인가 — 기초 정리 안티그래비티는 2025년 7월 구글이 24억 달러 규모 라이선스 계약 으로 영입한 전 Windsurf 팀이 설계를 주도했다. VSCode를 포크한 위에 자율 에이전트 오케스트레이션 계층을 얹은 구조다. 2026년 5월 Google I/O에서 발표된 안티그래비티 2.0 은 데스크탑 앱과 함께 공식 CLI agy 를 처음 공개하며 기존 Gemini CLI의 공식 후계자 자리를 확정했다. 핵심 정체성은 단순 코드 자동완성이 아니라 병렬 에이전트 오케스트레이션 이다. 여러 에이전트가 동시에 — 하나는 API, 하나는 테스트, 또 하나는 프론트엔드 — 작업을 나눠 진행하고, 각 에이전트는 계획·테스트 결과·스크린샷·영상을 담은 Artifact 를 남긴다. "사람이 한 줄씩 승인"하는 방식이 아니라 "에이전트들이 일을 마치고 사람이 사후 검수"하는 모델이다. flowchart TD A([사용자 작업 지시]) --> B[에이전트 A API 구현] A --> C[에이전트 B 테스트 작성] A --> D[에이전트 C UI 생성] B --> E[Artifact 계획·결과·영상] C --> E D --> E...

Unpacking UVM: The Backbone of Modern SoC Verification

Sure, let's dive into the world of UVM for SoC design!


Unpacking UVM: The Backbone of Modern SoC Verification

Ever wondered how those incredibly complex System-on-Chip (SoC) designs, packed with billions of transistors, are verified to be absolutely flawless before they make it into your smartphone or computer? A huge part of that magic is thanks to a powerful methodology called UVM (Universal Verification Methodology). It's become the de facto standard in the semiconductor industry, and for good reason!

What Exactly is UVM?

At its core, UVM is a standardized, open-source verification methodology built on SystemVerilog. Think of it as a set of rules, best practices, and reusable components designed to make the process of verifying complex digital designs, like ASICs and SoCs, systematic, efficient, and robust. Its primary goal is to ensure that these intricate designs function exactly as intended, catching bugs early in the development cycle before they become incredibly expensive to fix.

The Revolutionary Impact of UVM

So, why is UVM considered a game-changer? It addresses the escalating complexity of modern SoCs in several key ways:

  • Standardization: UVM is an IEEE standard (IEEE 1800.2). This means engineers across different companies and projects speak the same verification language, fostering consistency and easier collaboration. Gone are the days of each company reinventing their verification wheels!
  • Reusability is King: This is perhaps UVM's biggest strength. It's designed around creating modular, reusable verification components. Think of it like building with LEGOs: you can create standard blocks (like drivers, monitors, sequencers, and scoreboards) and easily plug them into different projects or IP blocks. This dramatically cuts down on development time and effort.
  • Scalability: As SoCs grow in complexity, verification environments need to grow with them. UVM's hierarchical and modular nature allows testbenches to scale seamlessly from verifying a single block to an entire complex SoC.
  • Thoroughness with Confidence:
    • Constrained Random Testing: UVM excels at generating a vast number of complex test cases randomly, guided by constraints. This helps uncover tricky corner-case bugs that manual or directed tests might miss.
    • Coverage-Driven Verification: It emphasizes measuring verification progress. By defining and tracking functional coverage, engineers can ensure that all aspects of the design's intended functionality have been tested, giving high confidence in the design's correctness.
  • Efficiency & Faster Time-to-Market: By promoting reuse, standardization, and better debugging tools, UVM streamlines the verification process. This means fewer bugs slip through, less rework is needed, and products can reach the market faster.

Building Blocks of a UVM Testbench

A typical UVM testbench has a layered, object-oriented structure. Here are the main components:

  • tb_top (Top-Level Module): The entry point of your simulation. It instantiates the DUT (Design Under Test), defines interfaces, and connects them to UVM components. It also calls the UVM run_test() function to start the verification process.
  • UVM Test (uvm_test): This is where you configure your test scenario, perhaps overriding default components or setting up specific test sequences. It instantiates the main verification environment.
  • UVM Environment (uvm_env): A container that orchestrates other verification components, typically including agents and a scoreboard. It provides a structured hierarchy for managing complexity.
  • UVM Agent: A bundle of components that handle a specific interface or protocol. A common agent includes:
    • Sequencer: Manages and sequences test stimulus.
    • Driver: Translates stimulus (transactions) into pin-level activity to drive the DUT.
    • Monitor: Observes pin-level activity on the DUT interface and converts it into transaction-level data.
  • Sequences & Sequence Items:
    • Sequence Item: Represents a single data packet or transaction that flows through the testbench.
    • Sequence: A collection of sequence items, defining the behavior or scenario to be tested.
  • UVM Factory: A powerful mechanism that allows you to create UVM objects and components dynamically. This is key for reusability and test configuration, as you can easily "override" a default component with a custom one for a specific test.
  • Configuration Database (uvm_config_db): A global database used to pass configuration information, like interface handles, to various components in the testbench.

The Scoreboard: The Verification Guardian

The Scoreboard is where the magic of verification truly happens. Its job is to be the ultimate judge, determining if the DUT is behaving correctly.

What is a Scoreboard?

A UVM scoreboard is a uvm_component that receives information about the DUT's behavior and compares it against expected results. It acts as the "checker."

Format and Data Flow

  1. Receiving Data: The scoreboard typically receives transaction-level data. Monitors observe the DUT's interface, convert pin activity into transactions, and broadcast them. The scoreboard connects to these monitors via uvm_analysis_exports to receive these transactions.
  2. Reference Model (Predictor): The scoreboard usually contains or interfaces with a reference model (also called a predictor). This model takes the same input stimulus that was sent to the DUT and predicts what the correct output should be.
  3. Comparison Logic: The core of the scoreboard compares the actual output transactions (observed from the DUT's output monitor) with the expected output transactions (generated by the reference model).
  4. Data Storage: Scoreboards often use data structures like TLM analysis FIFOs or associative arrays to temporarily store transactions. This is crucial for synchronizing expected and actual data, especially when the DUT's output order might not match the input stimulus order.
  5. Evaluation & Reporting: If the actual output matches the expected output, verification is successful for that transaction. If there's a mismatch, the scoreboard logs an error, providing details about the discrepancy, which helps engineers pinpoint and fix the bug.

Types of Scoreboards:

  • In-Order Scoreboard: Assumes DUT outputs appear in the same order as inputs. It directly compares the first available expected transaction with the first available actual transaction.
  • Out-of-Order Scoreboard: Used when DUT outputs can be in a different order than inputs. It uses mechanisms like transaction IDs and associative arrays to store and match transactions until their corresponding pairs are found for comparison.

Writing and Evaluating:

You'd typically define a class inheriting from uvm_scoreboard, declare analysis exports for receiving transactions, implement a reference model (which can be as simple as an a + b calculation for an adder or a complex behavioral model for a bus protocol), and implement a run_phase or write methods to handle transaction reception, prediction, comparison, and reporting of any errors.

The evaluation is fundamentally a process of assertion – asserting that the DUT's behavior conforms to its specification, as captured by the reference model.

UVM, with its structured approach, reusability, and focus on coverage, has truly revolutionized how complex hardware is verified, leading to more reliable and advanced electronic systems.

📚 참고 자료

댓글

이 블로그의 인기 게시물

Vim 9.2 릴리즈 총정리: 더 빠르고 강력해진 텍스트 편집의 제왕

폐쇄망 SoC 설계자를 위한 가볍고 빠른 Vim 최적화 가이드

에이전트 시대를 위한 터미널 cmux 가이드: 설치부터 AI 활용까지