Global training solutions for engineers creating the world's electronics

Comprehensive SystemVerilog

SystemVerilog Design und Verifikation für Verilog Anwender

Standard Level - 5 Tage

Schulungsdaten und -orte
In English

Wie Viel SystemVerilog Training brauchen Sie? Bitte sehen Sie sich das Video an!

SystemVerilog (IEEE 1800™), der Nachfolger von Verilog®, ist zu dem dominierenden Sprachstandard für funktionale Verifikation geworden. SystemVerilog verbessert die Fähigkeiten von Verilog in vielen Bereichen erheblich, bietet den RTL Designern Verbesserungen für mehr Produktivität, sowie dem Verifikationsingenieure Assertions und zufallsbasierte Stimulusgenerierung.

Comprehensive SystemVerilog bietet ein komplettes und integriertes Lösungskonzept für Verifikations- und Designingenieure sowie Nutzern, welche die Funktionen von SystemVerilog sowohl für Design als auch Verifikation voll ausschöpfen möchten. Der Aufbau des Trainings ermöglicht es Ingenieuren, ihr Fachwissen im kompletten Umfang von SystemVerilog, d.h. sowohl in Design als auch Verifikation, zu erweitern. Dies schließt auch die Anforderungen von Verifikationsingenieuren ein, die das Potential der klassenbasierten Verifikation und objektorientierten Techniken sowie RTL-Kodierung, Assertions und Testbenches ausschöpfen möchten. Designer, die nicht vorhaben, SystemVerilog für klassenbasierte Verifikation zu nutzen, sollten das kürzere Training SystemVerilog for Designers besuchen, das den ersten drei Tagen des Trainings Comprehensive SystemVerilog inhaltlich gleicht.

Die Workshops nehmen ca. 50% der Unterrichtszeit ein und basieren auf sorgfältig ausgearbeiteten Übungen, welche die neu erworbenen Kenntnisse herausfordern, um das Erlernte zu untermauern und zu festigen.

Da Doulos herstellerunabhängig ist, profitieren die Kursteilnehmer von objektivem Training und üben das Gelernte gleichzeitig mit den Tools und Methoden ihrer Wahl. In diesem Training werden u.a. folgende Tools unterstützt:

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


Weitere Tools können eventuell auf Anfrage zur Verfügung gestellt werden. Bitte wenden Sie sich an Doulos, falls Ihre Tools hier nicht aufgeführt sind.

Wer sollte teilnehmen?

  • Designer, die die klassenbasierten Verifikationseigenschaften von SystemVerilog für die Testbench-Entwicklung voll nutzen wollen, sowie die Verwendung von SystemVerilog für RTL-Design erlernen möchten
  • Verifikationsingenieure, deren Ziel es ist, Coverage-gesteuerte Verifikationsansätze zum ersten Mal mit SystemVerilog anzuwenden
  • Verifikationsingenieure, die von anderen bewährten Verifikationssprachen und Testbench-Automatisierungstechniken zu klassenbasierter Verifikation mit SystemVerilog übergehen möchten
  • Ingenieure und Manager, die das volle Leistungsvermögen von SystemVerilog für Design und Verifikation verstehen und erkunden möchten
  • EDA Support-Ingenieure, die ein umfassendes Verständnis dafür erlangen möchten, wie ihre Kunden SystemVerilog am produktivsten für Design und Verifikation einsetzen können

 

Was werden Sie lernen?

Das Training ist in verschiedene Abschnitte untergliedert:

  • Einführung in SystemVerilog (Tag 1-3) bildet die Grundlage, um SystemVerilog für Design und Verifikation zu lernen. Dies beinhaltet:
    • SystemVerilog RTL (½ Tag) lehrt den synthetisierbaren RTL-Teil von SystemVerilog. Dies setzt für Hardware-Ingenieure ein Verständnis von RTL Synthese mit VHDL oder Verilog voraus. Verifikations-Ingenieure gewinnen hier etwas Vertrautheit mit den RTL-Konstrukten, wie sie von Hardware-Designern verwendet werden.
    • SystemVerilog Assertions (¾ Tag) lehrt die Grundsätze von assertion-basiertem Design und Verifikation und die Möglichkeiten der SystemVerilog-Assertion-Sprache.
    • Module-based SystemVerilog Verification (1 Tag) lehrt die Verifikations-Features von SystemVerilog, die für modulbasierten Code verwendet werden können.
  • Class-based SystemVerilog Verification (Tag 4-5) erklärt, wie man anspruchsvolle objektorientierte Testbenches entwickelt, die eine Constrained Random Coverage-gesteuerte Methode unterstützen. Die jahrelange Erfahrung von Doulos im Unterrichten von objektorientierten Verifikationskonzepten ist hier besonders hilfreich, und macht diese anspruchsvollen Themen Ingenieuren mit unterschiedlichstem Hintergrund zugänglich. Dieser Kurs wurde insbesondere auf eine ideale Vorbereitung zum Lernen von UVM oder ähnlichen Verifikationsmethodiken zugeschnitten.


Comprehensive SystemVerilog bietet das essentielle SystemVerilog Fundament, um die OVM, VMM oder UVM Verifikationsmethodiken zu erlernen. Doulos bietet auch darauf aufbauende Trainings für jede dieser spezifischen Methodiken. Für weitere Details: OVM Adopter Class, VMM Adopter Class, und UVM Adopter Class.

Voraussetzungen

Fundierte praktische Grundkenntnisse in Verilog sind unerlässlich.

Ingenieure, die keine Vorkenntnisse in einer Hardwarebeschreibungssprache haben, müssen vor der Teilnahme an diesem Training den Doulos-Kurs Comprehensive Verilog oder ein vergleichbares Training besuchen.

Für diejenigen, die zwar keine Verilog-Vorkenntnisse haben, aber fundierte Erfahrung mit VHDL, bietet Doulos den Kurs Fast-Track Verilog for VHDL Users an, der die perfekte Grundlage für das Training SystemVerilog bietet. Der Fast-Track-Kurs findet normalerweise kurz vor dem Comprehensive SystemVerilog Training am selben Ort statt. Bitte werfen Sie einen Blick auf Course Schedule, um die aktuelle Kursplanung zu sehen.

Für ein Inhouse-Training können wir das Vorbereitungs-Training zu Verilog auf Ihre speziellen Teambedürfnisse zuschneiden und mit den passenden SystemVerilog-Modulen kombinieren, so dass Ihr Team genau das erlernt, was es braucht (siehe auch Modular SystemVerilog ).

Bitte wenden Sie sich an Doulos, um Ihre individuellen Bedürfnisse zu besprechen.

Kursunterlagen

Die Doulos Kursunterlagen sind für ihren umfassenden Informationsgehalt und Ihre Benutzerfreundlichkeit allgemein bekannt. In ihrem Aufbau, Inhalt und ihrer Themenbehandlung sind sie einzigartig im HDL-Trainingsbereich, was sie zu begehrten Nachschlagewerken hat werden lassen. Im Kurspaket sind enthalten:

  • Kursskripte mit vollständigem Stichwortverzeichnis, die ein umfassendes Referenzhandbuch darstellen
  • Ein Arbeitsbuch mit vielen praktischen Beispielen und Lösungen als Unterstützung bei der Wissensanwendung
  • Doulos SystemVerilog Golden Reference Guide für Sprache, Syntax, Semantik und Tipps

 

Struktur und Inhalt

SystemVerilog for Designers (Days 1-3)

 

Introduction

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

Interfaces

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

Randomization

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

Coverage

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

Class-based SystemVerilog Verification (days 4-5)

 

Classes for Transactions

Constrained Random Verification • Representing Transaction Data • SystemVerilog Classes • Object = Instance of Class • Constructor • Constructor Arguments

Class Members and Copying

Static Data Members • Constant Data Members • Randomized Data Members • Data Members of Class Type • Forward Typedef • Object Copy with new • Shallow Copy • Deep or Shallow Copy?

Virtual Interfaces

Test Harness and Testbench • Modules versus Classes • Creating the Testbench • Virtual Interface • Building a test harness • Adding a clocking block • Connecting the virtual interface • Accessing a Task through a Modport • Testbench Static Structure • BFM or Driver Class • Testbench Object Structure

Extending Classes for Stimulus

Improved Generator Class • Constrained randomization • Creating an Extended Class • The Inheritance Relationship • Inheriting Class Members • Control Knobs and Constraints • Methods of Extended Class • Derived-class Object, Base-class Variable • Virtual Methods • General-Purpose Infrastructure

TLM and Channels

Reusable Verification Environments • Transaction Level Modeling • Using Channels • Generic Channel and Transaction Classes • Out-of-Block Declarations • Connecting Channels • Getting Data from a Generic Channel • Safe Downcasting with $cast • Type Parameterization of Classes • Running Components with fork...join • fork...join_none • Identifying Forked Processes

Component Hierarchy

Testbench Component Hierarchy • Implementing Relationships • Base Classes (review) • Abstract Class and Pure Virtual Methods • Interface Classes in IEEE 1800-2012 • Component Base Class • Launching a Task with fork...join_none • Customising a Component • Constructing a Component

Monitors and Checkers

Kinds of BFM-Like Component • Monitors and Checkers • Bus Protocol Checking • Modports for Driver and Monitor • Monitor Implementation • Using the Monitored Transactions • Checker Implementation • Mutual Exclusion • Semaphore Class • Checker with Mutual Exclusion

Functional Coverage

Coverage Driven Verification • Verification Planning • From Features to Tests • Covergroups • Embedded Covergroups • Procedural Sampling • Arguments and Options • Coverage Bins • Bins and Coverage • Cross Coverage • Cross Coverage and Labels • Cross Coverage Example • Controlling Cross Bins

More on Constraints (Optional Topic)

Inline Constraints • Overriding Constraints • Procedural Control of Randomization • Procedural Control of Constraints • Constraint Ordering • Function Calls within a Constraint • Constraining Dynamic Arrays • Constraining an Array-of-Objects • Arrays within a Constraint • Hierarchical Constraints • unique • Soft Constraints

Processes and Events (Optional Topic)

The std Package • What is a “process”? • fork...join_none • fork...join_any • wait fork • disable fork • Identifying Processes • Fine-grain Process Control • Process Control Example • Mailbox Class • Using Mailboxes • Enhanced Events

Course Dates:
April 29th, 2019 San Jose, CA Course has started
June 3rd, 2019 Munich, DE   Enquire
June 24th, 2019 Austin, TX   Enquire
July 15th, 2019 Ringwood, UK   Enquire
July 15th, 2019 Boston, MA   Enquire
July 15th, 2019 Chicago, IL   Enquire
July 22nd, 2019 Munich, DE   Enquire
August 5th, 2019 Ankara, TR   Enquire
August 12th, 2019 San Jose, CA   Enquire
August 26th, 2019 Sacramento, CA   Enquire
August 26th, 2019 San Diego, CA   Enquire
September 16th, 2019 Munich, DE   Enquire
September 16th, 2019 Denver, CO   Enquire
September 23rd, 2019 Austin, TX   Enquire
September 30th, 2019 San Jose, CA   Enquire
October 21st, 2019 Milwaukee, WI   Enquire
October 28th, 2019 Columbia, MD   Enquire
November 4th, 2019 Ringwood, UK   Enquire
November 11th, 2019 Copenhagen, DK   Enquire
November 11th, 2019 Stockholm, SE   Enquire
November 11th, 2019 Munich, DE   Enquire
December 16th, 2019 San Jose, CA   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 »