Tuesday 28 January 2020

Developing & Delivering KnowHow

Home > Training > SystemVerilog for Designers

SystemVerilog for Designers

SystemVerilog design for Verilog users

Standard Level - 3 days

view dates and locations
 Auf Deutsch

How much SystemVerilog training do you need? Watch the video now!

SystemVerilog (IEEE 1800™), the successor to the Verilog® hardware description language, has become the dominant language standard for functional verification. SystemVerilog significantly enhances the capabilities of Verilog in a number of areas, offering productivity improvements for RTL designers, assertions, and constrained random stimulus generation for verification engineers.
SystemVerilog for Designers provides a compact and focused training program to fulfil the requirements of hardware design engineers. It is structured to enable designers to develop their capability by exploiting SystemVerilog features for mainstream design and verification requirements, including RTL coding, assertions and test benches. It is not intended to fulfil the deeper requirements of verification specialists who will wish to exploit the potential of class-based verification and object-oriented techniques using SystemVerilog. (Such requirements are covered in Days 4 and 5 of the Doulos Comprehensive SystemVerilog course, which includes the content of SystemVerilog for Designers as its first three days.)

Workshops comprise approximately 50% of class time, and are based around carefully designed exercises to reinforce and challenge the extent of learning.

Doulos is an independent company, enabling delegates to receive the benefit of objective tuition while learning in the context of their chosen tool and methodology. Leading tools supported for this course include:

  • Aldec Riviera-PRO™
  • Cadence Incisive®
  • Mentor Graphics Questa®
  • Synopsys VCS®

Other tools may be available on request. Please contact Doulos if your preferred tools are not listed here. 

Who should attend?

  • Design engineers with a working knowledge of RTL design and basic verification techniques (see Verilog pre-requisite below) who wish to migrate to or use SystemVerilog for RTL design, assertions and block-level test benches
  • Engineers and managers who wish to evaluate SystemVerilog for ASIC or FPGA design and block-level verification
  • EDA support engineers who wish to understand how their customers' design teams can most productively use SystemVerilog

What will you learn?

  • SystemVerilog Basics (¾ day) lays the foundation for learning the SystemVerilog language for design and for verification.

  • SystemVerilog RTL (½ day) teaches the synthesizable RTL language features of SystemVerilog. For hardware designers, this assumes an understanding of RTL synthesis with Verilog or VHDL. For verification engineers, this provides some familiarity with the RTL constructs as used by hardware designers.

  • SystemVerilog Assertions (¾ day) teaches the principles of assertion-based design and verification and the features of the SystemVerilog Assertion language.

  • Module-based SystemVerilog Verification (1 day) teaches the verification features of SystemVerilog that can be used in module-based code. It also provides a foundation for class-based verification.


A working knowledge of Verilog is essential.
For engineers with no HDL knowledge or experience the Doulos Comprehensive Verilog course or equivalent is an essential precursor.
For engineers with no Verilog knowledge but with working experience of VHDL, Doulos offer a Fast Track Verilog for VHDL Users class in a format tailored to equip delegates with the necessary foundation for SystemVerilog. This class is usually scheduled in the same location prior to the Comprehensive SystemVerilog course. See Course Schedule for the latest scheduling information.
For onsite courses, precursor training in Verilog can be tailored to the specific team profile and combined with appropriate SystemVerilog modules to fully address team needs (see Modular SystemVerilog). Contact Doulos to discuss options that suit your needs.

Training materials

Doulos training materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the HDL training world, and has made them sought after resources in their own right. The materials include:
  • Fully indexed class notes creating a complete reference manual
  • Workbook full of practical examples and solutions to help you apply your knowledge
  • Doulos SystemVerilog Golden Reference Guide for language, syntax, semantics and tips

Structure and Content

SystemVerilog Basics


What is SystemVerilog? • Language Evolution • SystemVerilog Language Features • Caveats • The UVM Family Tree • Books and Resources

Verilog versus SystemVerilog

Logic Type • Reg, Logic, and Bit • Nets versus Variables - Refresh • Wire versus Var

Programming Language Features

C-Like Language Features • Static vs Automatic Variables • Static vs Automatic Tasks • ++, --, and Assignment Operators • Labeling • Time Units • Do While Loop • Immediate Assertions • join_none and join_any • Enhanced Tasks and Functions • Task and Function Arguments • Void Functions • Argument and Return Types • Type string • $sformat and $sformatf

Bus-Functional Modeling

Simple Module-Based BFM • Testbench using BFM • Separate Test from Test Harness

Basic Data Types

4-state and 2-state Types • Initial Values • Caveats with Signed Types • Enumerations • Type-Checking of Enumerations • struct • typedef struct • Packed Struct • Packed and Unpacked Arrays • Indexing Multidimensional Arrays • Packages • Packages and Ports


Simple Interface • Package versus Interface • Instantiating an Interface • Accessing Interface Members • Ports and Parameters on Interfaces • Pin-Level Interface • Modports • Generic Interface Ports • Task/Function in Interface • Calling Task through Interface Port

SystemVerilog RTL

RTL Processes

SystemVerilog and RTL Synthesis • Combinational Logic • Clocked Processes • always_comb, always_latch, always_ff • Synthesis-Friendly If / Case • priority case • unique if • unique case • Wild Equality Operators • case inside • inside Operator

RTL Types

Synthesizable Data Types • Enums for Finite State Machines • Base Types and Values • Rules for Overriding the Enum Values • Packed Struct (Review) • Packed Union • Multidimensional Arrays • Nets, Ports and Data Types • Types and Packages • Type Parameters • Synthesis of Interfaces • Multiple Drivers on a Bus • How to Differentiate Connections? • Modport Expressions • Modport Expressions with Generate

SystemVerilog Assertions

The SVA Language

What are Properties? • Property versus Assertion • Benefits Of Assertions • Who Writes Properties? • Immediate and Concurrent Assertions • Immediate Assertions • Assertion Failure Severity • Concurrent Assertions • Temporal Behaviour • Clocks and Default Clocks • Holds and Implication • Non-overlapped Implication • Simulation of Assertions • Assertion Coverage • Simulation and Cover Property • Binding

Properties, Assertions and Sequences

Implication • Properties are checked on every clock • |=> and |-> • $rose() and $fell() • $rose() vs posedge • $past() • $sampled() • Properties using Expressions • Named Properties • Sequences Basic Syntax • Concatenation • Repetition • Consecutive Repetition • Unbounded Repetitions • Zero Repetitions • Non-Consecutive and Goto Repetition • Sequence versus Implication • $rose() and $fell() versus Sequence

More on Properties & Sequences (Optional Topic)

Sequence Operators • Sequence Or • Sequence and • Non-Length-Matching and • Sequence Length-Matching and • Throughout • Within • first_match • Property Operators • Beware Negating Implications • Operator Precedence • Named Sequences and Properties • Sequence Completion • Variables and Procedures in Sequences • Detecting the Endpoint of a Sequence • Turning Assertions Off

Module-based SystemVerilog Verification

Clocking Blocks

Clocking Block Syntax • Input and Output Skew • Creating a Clocking Block • Testbench and Clocking Block • Cycle Delays and Clocking • Input and Output Skew Syntax Summary • Scheduler Regions • Stimulus and Response • Signal Aliasing • Multiple Clocking Blocks • Driving a Net • Clocking Blocks in Interfaces • Clocking Blocks versus Programs


Constrained Random Verification • Random Numbers in SystemVerilog • std::randomize • Constraint Syntax • Seeding and Random Stability • Saving & Restoring Seeds • Random Sequence of Valid Actions • Randcase • Randsequence


Functional Coverage • Coverage Bins • Further Options • Transition Coverage • Cross Coverage • Adjusting Stimulus Using Coverage

Arrays and Queues

Dynamic Arrays • Queues • Working with Queues • Queue Methods • Nesting, Assignment Patterns, and %p • Array-like Containers • Associative Arrays • Associative Array Methods • Foreach

Other Language Features (Optional Topic)

$root and $unit • Enumeration Methods • Arrays for Multidimensional Structures • Initializing an Unpacked Array • Replication in an Assignment Pattern • Packed Arrays and Structures • Pass-by-Copy • Pass-by-Reference • const ref • Array Querying Functions • $bits • Bit-stream Casting • Array Manipulation Methods • Array Locator Methods • Array Ordering Methods • Array Reduction Methods • Other IEEE 1800-2009 Features

The Direct Programming Interface (Optional Topic)

DPI Simulation Flow • Command-line Switches • Importing a C Function • Changing the Imported Function Name • Mapping Data Types of Arguments • Exporting a Function to C • Sandwiches and Transparency • Importing and Exporting Tasks • Scalar Bit and Logic Arguments • Packed Arrays • Decoding the Canonical Representation • String Arguments • Open Array Arguments • Task Return Values • Task Disable Flow • Pure and Context

Course Dates:
February 24th, 2020 Columbia, MD Enquire
March 2nd, 2020 San Jose, CA Enquire
March 9th, 2020 Ringwood, UK Enquire
March 16th, 2020 Ankara, TR Enquire
March 16th, 2020 Boston, MA Enquire
March 23rd, 2020 Munich, DE Enquire
March 23rd, 2020 Austin, TX Enquire
April 27th, 2020 Copenhagen, DK Enquire
April 27th, 2020 Stockholm, SE Enquire
May 4th, 2020 Chicago, IL Enquire
June 1st, 2020 Milwaukee, WI Enquire
June 8th, 2020 San Jose, CA Enquire
June 8th, 2020 Austin, TX Enquire
June 8th, 2020 Boston, MA Enquire
June 15th, 2020 Munich, DE Enquire
June 22nd, 2020 Ringwood, UK Enquire
July 20th, 2020 Columbia, MD Enquire
August 3rd, 2020 Milwaukee, WI Enquire
August 31st, 2020 Ankara, TR Enquire
September 7th, 2020 Munich, DE Enquire
September 14th, 2020 San Jose, CA Enquire
September 21st, 2020 Chicago, IL Enquire
indicates CONFIRMED TO RUN courses.

Looking for team-based training, or other locations?

Complete an on-line form and a Doulos representative will get back to you »

Price on request

Back to top
Privacy Policy Site Map Contact Us