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

Don't Start with UVM: A Digital Verification Career Roadmap

RTL and protocol knowledge come before UVM syntax. This practical six-week roadmap explains what to study for a digital verification career and what a strong portfolio should show.

A digital verification learning path from RTL fundamentals through AXI protocol verification to chip signoff
AI-generated thumbnail · VLSI Korea

There is a question I repeatedly hear from semiconductor job seekers and junior engineers around me: “Should I start with UVM to prepare for a digital verification role?” This is not about any specific individual. I have removed all names, schools, and company details and generalized the shared concern in this answer.

In one sentence: Do not start with UVM. The much faster sequence is RTL fundamentals → self-checking testbench → protocols such as AXI → assertions and coverage → UVM.

UVM is important. But rather than being the foundation of verification, UVM is a framework for organizing verification elements you already understand into a reusable structure. If you start by memorizing factory and sequence syntax without being able to explain what value the DUT should produce in a given cycle, you can easily end up with a testbench that looks well structured but cannot find bugs.

If you first want to understand what verification organizations actually do, read the Design Verification Team Guide as well. This article focuses on the next question: what to prepare and in what order.

Bright light illuminates a microchip on a dark circuit board.
Photo by Brecht Corbeel on Unsplash

Why RTL Comes Before UVM

A verification engineer is not someone who writes the design code on the designer's behalf. But to imagine the state space in which bugs can occur, you must be able to read RTL behavior over time.

  • Where is the boundary between combinational and sequential logic?
  • Are all states defined immediately after reset?
  • If valid is delayed after ready goes high, does the data remain stable?
  • Will comparison expressions remain correct when parameters or data widths change?
  • What are the priority and starvation conditions for simultaneous requests?

You must be able to answer these questions before you can design stimulus and checkers. Knowing many UVM classes and understanding what you are verifying are different skills.

Week 1: Design a Small RTL Block Yourself

Choose something one step more complex than a counter. A FIFO, round-robin arbiter, register file, or simple interrupt controller is a good option. Before writing code, create a requirements table and timing diagram.

The starting point of a portfolio is not “working RTL,” but a specification that explains what correct behavior means.

Week 2: Replace Visual Waveform Inspection with a Self-Checking Test

A test that relies on visually inspecting waveforms is difficult to repeat and use for regression verification. At a minimum, separate the following elements.

  1. Stimulus that generates inputs
  2. A driver that drives the DUT pins
  3. A monitor that collects outputs
  4. A reference model that generates expected values
  5. A scoreboard that compares actual and expected values

At the end of the simulation, the pass/fail result and cause of any failure should be available without anyone opening a waveform.

Week 3: Properly Understand One Part of AXI4-Lite

Do not try to memorize all of AXI4 from the start. It is better to design and verify a single AXI4-Lite slave while first learning about independent channels and backpressure.

  • VALID is not a signal that waits for the other side's READY before going high.
  • You must not assume that the address and data channels always arrive in the same order.
  • The specification must clearly state whether the next request can be accepted while a response is delayed.
  • Reset, consecutive transfers, backpressure, and invalid addresses must be tested separately.

AMD states that Vivado includes SystemVerilog-based AXI Verification IP at no additional cost. Example testbenches and a protocol checker are useful for identifying rules that your own tests may have missed.

Week 4: Add Assertions and Functional Coverage

A good assertion does not rewrite the implementation. It expresses the contract that an interface must follow. Examples include the rule that the payload must remain stable while valid && !ready, and the rule that the write pointer must not move when a FIFO is full.

Do not start with coverage numbers either. Create a verification plan first.

FeatureNormal ConditionsBoundary and Error ConditionsVerification Method
AXI writeSingle and consecutive writesbackpressure, invalid addressscoreboard + assertion
AXI readSingle and consecutive readsResponse delay, unmapped addressreference model
resetReset while idleReset during a transactiondirected test + assertion

Week 5: Refactor with SystemVerilog Classes

Now separate the transaction, generator, driver, monitor, and scoreboard into classes. You can understand why interfaces, virtual interfaces, and mailboxes are necessary by connecting them to problems you have already encountered.

Week 6: Move to UVM at the End

Map the elements you created earlier into the UVM structure.

  • transaction → uvm_sequence_item
  • generator → sequence / sequencer
  • driver → uvm_driver
  • monitor → uvm_monitor
  • scoreboard → uvm_scoreboard
  • Connections and configuration → agent / env / config DB

With this sequence, phases and the factory stop being items to memorize and instead become solutions to reuse and configuration problems.

What Interviewers Want to See in a Job Portfolio

The following five items should be visible on the repository's landing page.

  1. A block specification and timing diagram
  2. A verification plan linking requirements to tests
  3. A regression that runs with one command, along with pass/fail logs
  4. Assertion and functional coverage results
  5. A record of reproducing, diagnosing, fixing, and preventing the recurrence of a bug you actually found

A strong interview statement is not “I studied UVM.” It is closer to: “I found a bug caused by assuming a fixed order for the address and data channels using random delays and an assertion, then added a regression test to prevent it from recurring.”

Frequently Asked Questions

Q. Should Undergraduate Students Learn UVM?

It is useful, but a project that takes a small RTL block from specification through coverage is stronger than an incomplete UVM project. Add UVM as the final refactoring stage.

Q. Should I Learn C++ or Python First?

Understanding the DUT and protocol comes before the language itself. Python and cocotb are useful for rapid experiments and reference models, while C++ is strong for DPI and performance modeling. But if you do not understand the cycle-level behavior of RTL, no language will improve the quality of your checker.

Q. Is Verification Complete at 100% Code Coverage?

No. Code coverage only shows which structures were exercised; it does not guarantee that the requirements are correct. It must be considered together with functional coverage, assertions, and scoreboard results.

Q. How Many Projects Are Enough?

It is better to complete one project through specification, verification planning, automation, and bug documentation than to build several shallow projects. If you have time left, extend the same structure to another protocol or to UVM.

Conclusion

UVM is the right destination. It is simply not the starting point. First learn to read RTL behavior over time, understand protocol contracts, and automatically compare expected and actual values. Only then should you add UVM, so the framework extends your capabilities instead of hiding them.

Public Sources

Editorial principle: This article generalizes an anonymous concern I have repeatedly heard from people around me. It does not use any information that could identify a specific individual, school, company, or case.

Discussion

VLSI KOREA BRIEFING

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

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

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