Introduction
What is SystemVerilog? • Language evolution • Language features • Modules, ports, and parameters • Standard verification methodologies • References
Programming Language Features
Static and automatic variables • Increment and assignment operators • Labelling blocks • Time units • Do While and Assert • Task and function syntax • Strings and $sformat
Basic Data Types
4-state and 2-state types • Enumerations • Structs and unions • Packed and unpacked types • Multidimensional arrays • Packages and import
Interfaces
Interfaces • Ports and parameters on interfaces • Modports • Generic interface ports
RTL Processes
Register Transfer Level • always_comb, always_ff, always_latch • priority and unique • Wild equality
RTL Types
Synthesizable data types • Enums • Packed structs, unions, and arrays • Packages, ports and parameters • Synthesis of interfaces
Clocking Blocks
Clocking Blocks • Input and output skew • Clocking drives and synchronization • #1step sampling • Signal aliasing • Clocking blocks versus programs
Arrays and Queues
Dynamic Arrays • Queues • Associative Arrays
Bus-Functional Modeling
Bus-Functional Modeling • Separate Test from Test Harness • Tasks/functions in interfaces
Randomization
Testbench Automation • Random numbers in SystemVerilog • Randomize with inline constraints • Random stability
Coverage
Testbench Automation • Covergroups • Coverpoints • Cross coverage • Coverage bins
Other Language Features
$root and $unit • Enumeration methods • Multidimensional arrays • Assignment patterns • Array querying functions • Bit-stream casting
The Direct Programming Interface
DPI flow and simulator switches • Importing and exporting tasks and functions • Passing data between C and SystemVerilog • Open arrays • Pure and context tasks and functions