Learnings · SystemVerilog
SystemVerilog tutorials.
The most comprehensive SystemVerilog tutorial — from first principles to advanced verification.
Start here
SystemVerilog Tutorials
The world's most comprehensive SystemVerilog tutorial. 130 pages across 17 modules.
Foundations
- 01What is SystemVerilog?What SystemVerilog is, why it was created, its history, and its critical role in modern chip design and verification.
- 02SystemVerilog vs VerilogDeep technical comparison — data types, always blocks, interfaces, OOP, assertions, packages.
- 03Tool SetupQuestaSim, VCS, Xcelium, Verilator, EDA Playground, VS Code, GTKWave — install and first run.
- 04Your First SystemVerilog ProgramBuild your first SV program from scratch — module anatomy, ports, initial blocks, testbench structure.
Data Types
- 014-State vs 2-State Typeslogic, bit, reg, wire — X/Z propagation, simulation behavior, synthesis implications.
- 02Integer Typesbyte, shortint, int, longint, integer, time — signed behavior, overflow, 2-state vs 4-state.
- 03Real & Shortreal TypesIEEE 754, precision, epsilon comparison, $realtobits, timing calculations.
- 04String Type & Methodslen, substr, toupper, compare, atoi, itoa, $sformatf — message generation patterns.
- 05User-Defined Types with typedefNamed aliases, parameterized types, forward declarations, package-level typedefs.
- 06Enumeration TypesFSM state encoding, enum methods, $cast, waveform naming, unique case.
- 07Structures — Packed & UnpackedRegister field modeling, protocol frame packing, struct literals.
- 08Unions & Tagged UnionsPacked unions, overlapping bit fields, tagged union type safety, protocol packet decoding.
- 09Type Casting & ConversionStatic cast, $signed, $unsigned, $cast, implicit conversions, width truncation.
Arrays
- 01Fixed-Size ArraysPacked vs unpacked, multi-dimensional, initialization, foreach, system functions.
- 02Dynamic ArraysRuntime sizing with new[], delete(), resize, copy semantics, constraints.
- 03Associative ArraysArbitrary key types, exists(), delete(), iteration, sparse memory, scoreboard lookup.
- 04Queuespush/pop, bounded queues, slicing, insert/delete, FIFO modeling.
- 05Array Methodssort, rsort, find, find_index, sum, min, max, unique — with-clause expressions.
Operators & Expressions
- 01Arithmetic OperatorsPre/post increment & decrement, X-propagation, signed vs unsigned.
- 02Relational & Equality Operators== vs === with X/Z values, the scoreboard false-pass bug, signed vs unsigned.
- 03Logical Operators&&, ||, ! — short-circuit evaluation, X propagation, common confusion with bitwise.
- 04Bitwise Operators&, |, ^, ~, ~^ — masking, bit manipulation, XOR parity, X propagation.
- 05Reduction Operators&, |, ^, ~&, ~|, ~^ — parity generation, one-hot checking, X propagation.
- 06Shift Operators<<, >>, <<<, >>> — logical vs arithmetic right shift, signed behavior, sign extension.
- 07Concatenation, Replication & Conditional{}, {N{}}, ?: — bus assembly, field packing, X-merge behavior.
- 08Inside OperatorSet membership testing, ranges, arrays, X/Z wildcard behavior, constraint usage.
- 09Wildcard Equality — ==? and !=?X/Z don't-care matching, mask-based pattern matching, comparison with casex/casez.
- 10Operator PrecedenceComplete precedence table, associativity rules, classic precedence traps.
Procedural Statements
- 01Procedural Blocksinitial, always, always_comb, always_ff, always_latch — what hardware each one infers.
- 02if-else & Unique/Priority ModifiersHardware inferred, simulation checks, coverage and synthesis safety.
- 03case, casex, casez, unique, priorityHardware inference, don't-care matching, modifier safety.
- 04Loopsfor, while, do-while, repeat, forever, foreach — synthesisable vs simulation-only.
- 05break, continue, return, disableLoop control — synthesis vs simulation behavior.
- 06Blocking vs Non-Blocking Assignments= vs <=, the NBA scheduler, the golden rule, race conditions.