Do I need a Questa, VCS or Xcelium licence?
No. The course runs end to end on Verilator, which is free software, plus
Accellera's reference implementation of UVM (uvm-core 2020.3.1), which downloads
itself. There is no Questa flow in the repository: the run.do were deleted.
Is it any good if I come from RTL design and never wrote a class?
Yes, and it is designed for exactly that. The whole of day 2 is object-oriented
programming in SystemVerilog —classes, inheritance, polymorphism, parameterized classes, the
factory— because that is the real wall for whoever arrives from RTL. UVM only shows up on day 3.
I installed everything and something does not work: where do I start?
With make doctor. It says whether this machine can run the course and what is
missing, with the exact command for your package manager. The two most expensive failure modes are
silent: without z3, randomize() returns 0 without saying
a thing; with a Verilator older than 5.050, functional coverage reports 0 % without a
warning.
And if the problem is that the testbench runs but lies, the list is in
the 21
silent traps: everything that compiles, runs and gives no warning.
How long does it take?
Seven days of class when taught, about 30 and a half hours — plus an optional day 8,
after the wrap-up, with RAL, the reference model in C through DPI and a second capstone.
On your own, count double: half the time goes into running the examples, and
that half is the one that teaches. As a semester
course, the 15-week map is in
docs/en/for-teachers.md.
Which UVM version does it use?
UVM 2020.3.1, Accellera's reference implementation of
IEEE 1800.2-2020. Not 1.2, which is pre-IEEE. Verilator supports it
officially since 5.052.
Can I teach it at my university or company?
Yes, including for money. The slides are under CC BY 4.0, the examples in
code/ under Apache-2.0 and the tooling under MIT:
the only condition is citing the source and keeping the NOTICE. The repository ships
the deck as PDF and as PPTX with editable text and speaker notes.
And to teach it as a course there are three more things:
docs/en/for-teachers.md —the seven-day
course mapped onto a 15-week semester, what can be skipped and what to assess in each
midterm—, the bank with the 58 questions without
the answer marked, and a CITATION.cff for GitHub's Cite this
repository button.
Is this The UVM Primer rewritten?
No. It is the book I learned UVM with, it is in the references, and several of the
examples in code/ derive from its own —which its author published under
Apache-2.0 and which are credited here in the NOTICE—. But the structure is
another one: 8 units grouped by the problem they solve, not 24
chapters by feature. The DUT is another. The simulator is another. And there are four
units of material the book does not cover: the verification plan as a backbone,
assertions (SVA), virtual sequences and callbacks, and a capstone with a
different DUT written from a blank page. The full list is in
docs/en-que-se-diferencia.md (in Spanish).
What is left out?
uvm_event and uvm_barrier, the run-time
phases, and TLM2. They are named on the wrap-up slide, with where to go next.
The course is introductory and prefers to say what it does not cover.
Does everything work the same as on a commercial simulator?
Almost. Verilator 5.052 does not compile covergroup transition bins yet,
ignores binsof/intersect in a cross, and
has two limitations with dist and solve…before. All four are
documented with a minimal repro and the portable workaround, because hiding them would be worse
than not having them.
How do I report a bug or ask something?
In the repository's Discussions
for questions, and in the
Issues if you found something
broken. Fixes by pull request are welcome.