SystemVerilog Language - Design

SystemVerilog: From Basics to Advanced Design Techniques

This course is designed to help engineers and students master SystemVerilog, an essential language for digital design. Whether you are new to hardware description languages or transitioning from Verilog, you’ll learn SystemVerilog’s enhanced features such as data types, procedural blocks, arrays, and interfaces. This course will guide you through best practices for creating scalable, efficient, and modular designs. By the end, you’ll have the skills to apply SystemVerilog’s powerful features to real-world projects, ensuring faster development and higher-quality designs.

Purchase

Our course syllabus undergoes regular updates to reflect the latest advancements and best practices in the field. Students who purchase lifetime access to this course are entitled to receive these updates for free, ensuring they stay abreast of the most current content. Subscribers, on the other hand, can access the latest content for free as long as they maintain their subscription to the course. This approach guarantees that our students and subscribers always have access to the most relevant and up-to-date information in the field.

Created by EDA Academy

English

Last updated Oct 2024


SystemVerilog Language - Design



OR



USD $99.9

-70% Today

$29.9

One-time Purchase

& Lifetime Access


00
days
:
00
hours
:
00
minutes
:
00
seconds

After this course you will be able to:

  • Understand the scope, purpose, and features of SV
  • Explain SV updates to Verilog data types and literals
  • Examine SV enhancements and new features in procedural statements
  • Utilize new and enhanced operators in SV effectively
  • Define and utilize user-defined data types in SV for clearer code
  • Explore features of SV that simplify hierarchical design
  • Analyze SV array enhancements, packed and unpacked arrays
  • Recognize and apply the enhancements to tasks and functions in SV
  • Investigate SV interfaces for simplified design communication and code reuse

This course includes:

  • 9 Modules 30 Lectures
  • 4.5 hours on-demand video
  • 112 Quiz
  • Certificate of completion
  • Access on mobile and computer
  • Ongoing support from EDA Academy
  • Further learning plan

Course Content (Preview)

Module 0: About this Course (Preview)
✓ SystemVerilog Language - Design (Preview)
✓ About this Course (Preview)
✓ Course Objectives (Preview)
✓ Course Agenda (Preview)
Module 1: Introduction to SystemVerilog

✓ Comprehensive Evolution of Verilog to SystemVerilog Standards

  • Evolution of Verilog and SystemVerilog
  • Original Verilog
  • Verilog vs. VHDL Development
  • Verilog-95 and Verilog-2001
  • SystemVerilog extensions to Verilog
  • SystemVerilog Replaces Verilog

✓ Data Type, Building Blocks, Features, and Interfaces in SystemVerilog

  • Simplified and Synthesizable RTL Design
  • Data Type Enhancements in SystemVerilog
  • Key Building Blocks of SystemVerilog Verification
  • Key Features of SystemVerilog Verification
  • Simplifying Design with Interfaces

✓ Randomization, Functional Coverage, Assertions, and DPI in SystemVerilog

  • Randomization in SystemVerilog
  • Functional Coverage in SystemVerilog
  • Assertions in SystemVerilog
  • Direct Programming Interface in SystemVerilog
Module 2: SystemVerilog Data Types

✓ Verilog and SystemVerilog Data Type

  • SystemVerilog Logic vs Reg
  • Verilog Data Type Rules
  • Verilog Data Type Example
  • SystemVerilog Data Type Rules
  • SystemVerilog Data Type Example

✓ Variable and Procedural Assignment, 2-State and 4-State Logic

  • Variable Assignment Restrictions
  • Multiple Procedural Assignments
  • 2-State Data Types
  • 2-State vs 4-State Logic

✓ Unsized Literal Handling and Timing Control

  • Unsized Literals
  • Time Literals
  • Using Time Units in Assignments
  • timeunit and timeprecision Declarations
Module 3: Procedures and Procedural Statements

✓ Named and Unnamed Blocks

  • Naming and Labeling Code Blocks
  • Declaring Variables in Unnamed Blocks

✓ for, do ... while, and foreach Loop

  • Enhanced for Loop in SystemVerilog
  • do ... while Loop
  • foreach Loop
  • break and continue Statements

✓ case, if Statement, iff

  • Verilog case Statement
  • SystemVerilog priority case
  • SystemVerilog unique case
  • SystemVerilog priority if and unique if
  • Using iff in Event Control

✓ always_comb, always @*, always_latch, and always_ff Procedural Block

  • Procedural Block Types in SystemVerilog
  • Combinational Blocks with always_comb
  • always_comb vs. always @*
  • Latch Blocks with always_latch
  • Register Blocks with always_ff
Module 4: Applying SystemVerilog Operators

✓ Assignment Operators, Assignment Patterns

  • Assignment Operators in SystemVerilog
  • Using Assignment Operators
  • Pre- and Post-Increment/Decrement Operators
  • Assignment Patterns

✓ Wildcard Equivalence and Set Membership Operator

  • Wildcard Equivalence Operators
  • Set Membership Operator
  • Using inside Operator with case

✓ Operator Precedence, Array Assignment

  • Operator Precedence and Associativity
  • Array Assignment Patterns
Module 5: Custom Data Types

✓ User-Defined Types

  • Primitive and User-Defined Types
  • Defining Types with typedef

✓ Enumerated Types

  • Enumerated Types
  • Enumerated Type Values
  • Explicit Enumerate Value Encoding
  • Specifying Enumerate Base Type
  • Enumerated Type Value Name Sequences
  • Enumerated Type Access Methods
  • Enumerated Type Initialization

✓ Unpacked and Packed Structures

  • Structures
  • Keyed Pattern Assignments
  • Packed Structures
  • New Type Declaration Regions
Module 6: Hierarchy and Connectivity

✓ dot-name, dot-star, and named Connection Types

  • Simplifying Port Connections
  • Implicit Port Connection: .name (dot-name)
  • Implicit Port Connection: .* (dot-star)
  • Rules for Using .name and .*
  • Advantages of Different Connection Types

✓ Packages

  • Declaring User-Defined Types
  • Compilation Unit Scope (CUS)
  • Packages

✓ Import Statement

  • Explicit Import
  • Wildcard Import
  • Ambiguity and Resolved Names
  • Import Statement
Module 7: Static Arrays

✓ Packed and Unpacked Arrays

  • Arrays
  • Unpacked Multidimensional Arrays
  • Packed Arrays
  • Mixed Packed and Unpacked Arrays

✓ Array Querying Functions

  • Array Querying System Functions
Module 8: Subroutine Techniques

✓ Tasks and Functions, Subroutine Types, and Code Readability

  • Verilog-2001 Tasks and Functions
  • Static vs Automatic Subroutines
  • SystemVerilog Optional begin/end and Named Ends

✓ Void Functions, Function Outputs, and Return in Subroutine

  • Void Functions
  • Function Output Arguments
  • Subroutine Exit with Return

✓ Default Arguments, Named Binding, and Optional Argument

  • Default Argument Handling
  • Argument Binding by Name
  • Optional Argument Usage

✓ Argument Passing by Value, Reference, and Side-Effect

  • Argument Passing by Value
  • Variable Access by Side-Effect
  • Argument Passing by Reference
  • Working with Reference Arguments
Module 9: Interface Implementation

✓ Benefits and Capabilities of Interfaces

  • SystemVerilog Interfaces
  • SystemVerilog Interface Basics

✓ Simple interfaces

  • Simplifying Connections with Interfaces
  • Challenges of Bus Connections Without Interfaces
  • Bus Connections Using Interfaces

✓ Interface Ports and Parameterized Interfaces

  • Interface Port Mapping Rules
  • Accessing Interface Ports
  • Accessing Interface Instances
  • Define Interface Ports
  • Interface Port Applications
  • Interface Parameterization

✓ Modports

  • Modports in Interfaces
  • Modport Selection in Module Declaration
  • Modport Selection in Module Instantiation

✓ Define Interface Methods

  • Shared Interface Tasks
  • Interface Methods
  • Modport Interface Methods
  • Using Generic Interfaces

Requirements

To succeed in this course, familiarity with Verilog or general hardware design is recommended. Knowledge of digital logic design fundamentals, including basic programming constructs and modular design principles, will help you fully benefit from the course. Additionally, experience with digital circuit testing and an understanding of object-oriented concepts will enhance your grasp of SystemVerilog’s verification features. You should also have access to a SystemVerilog-compatible simulation tool for hands-on practice. This course is ideal for those seeking to expand their capabilities in digital verification and create highly adaptable, efficient designs. To get the most out of this course, it’s recommended that you meet the following prerequisites:

  • Basic knowledge of Verilog or any HDL.
  • Understanding of logic circuits and digital design principles.
  • Familiarity with programming languages like C or C++ is helpful.
  • Access to a SystemVerilog simulator or design environment.
  • Willingness to apply SystemVerilog to real-world projects.

Who this course is for

  • Engineers looking to master SystemVerilog for digital design
  • Digital design students who want to learn SystemVerilog
  • Hardware engineers transitioning from Verilog to SystemVerilog
  • FPGA designers looking to enhance their design skills
  • Verification engineers needing to use SystemVerilog in testbenches
  • Designers looking to improve efficiency in RTL coding
  • Professionals seeking to improve hardware design processes
  • Engineers working with large digital systems
  • Chip designers focusing on complex system design
  • Embedded system developers using hardware description languages

Description

This course is designed for engineers and students who want to understand the core features and enhancements that SystemVerilog brings to digital design. Whether you are familiar with Verilog or just starting, this course will walk you through the powerful features of SystemVerilog that make digital design more efficient, flexible, and scalable. From new data types and procedural statements to enhanced array management and interface implementation, you'll learn how to create more organized and optimized designs. The course also covers hierarchical design, custom data types, and subroutine techniques that allow for better modularity and reusability. By the end of this course, you'll have the knowledge and confidence to apply SystemVerilog to your design projects effectively.


In this course, we will dive into the advanced features of SystemVerilog, focusing on how it improves upon traditional Verilog for digital design. You will begin by learning about the evolution of Verilog and how SystemVerilog has expanded its capabilities with enhanced data types, flexible procedural statements, and more intuitive operator usage. These tools will help you design more efficient and flexible hardware descriptions, making it easier to manage complexity in large projects.


Next, the course will cover critical topics like array enhancements, packed and unpacked arrays, custom data types, and hierarchy features that streamline the organization of your design. You will also learn about SystemVerilog’s robust interfaces, which simplify module communication and enable better code reuse. By understanding these powerful constructs, you'll be able to develop scalable, maintainable, and high-performance digital systems.


Finally, this course focuses on the practical application of SystemVerilog in real-world design projects. Whether you’re building tasks, functions, or implementing advanced subroutine techniques, the skills you gain from this course will enhance your ability to handle complex designs with confidence and precision. By the end of the course, you’ll be well-equipped to apply SystemVerilog in your professional projects, improving both productivity and design quality.

Learning Objectives

  • You will explore the evolution of Verilog and how SystemVerilog has expanded on its capabilities. You will learn about the key differences between Verilog and SystemVerilog, including new data types, enhanced design flexibility, and advanced verification techniques. The course also covers how SystemVerilog introduces powerful tools for verification, such as assertions, randomization, and functional coverage, to simplify and improve the design process. You should be familiar with the extensions introduced by SystemVerilog, its added features for both designers and verification engineers, and how these tools can be integrated into your design flow.
  • You will learn about the new and improved data types introduced in SystemVerilog. These include a new data type called "logic" and the introduction of relaxed data type rules. You will also explore the 2-state value types, which offer a more efficient way to model data, and how these can be used in both design and verification. Additionally, you will understand the significance of unsized literals and time literals, which provide better control over timing and precision in SystemVerilog designs. You will be able to use SystemVerilog's enhanced data types to streamline your design process and improve simulation accuracy.
  • Understand SystemVerilog's enhancements to procedural blocks and statements that simplify coding and improve clarity for synthesis tools. Key features include the ability to reuse block names, declare local variables without naming blocks, and use loops like do…while and foreach. Learn to specify complete case and if statements using priority and unique keywords. Use the "iff" keyword to qualify events and apply the always_comb, always_latch, and always_ff blocks to clearly define synthesis intent.
  • Understand the new and modified operators introduced in SystemVerilog for easier programming. This includes C-like assignment operators, pre/post-increment and decrement operators, and enhanced assignment patterns. Additionally, SystemVerilog offers unique operators not found in C, such as wild equality/inequality operators and the set membership (inside) operator. Learn about operator precedence and associativity to effectively use these operators in your designs.
  • Understand and utilize user-defined data types in SystemVerilog, including both primitive and custom types. This includes defining new types using the typedef keyword, creating enumerated types to improve code readability, and utilizing packed and unpacked arrays and structures for efficient data management. Additionally, knowledge of package and compilation unit scope name spaces will allow for better organization and encapsulation of code, promoting modularity and reuse. Mastery of these concepts is essential for effective design and implementation in SystemVerilog, enhancing the capability to develop complex hardware descriptions while maintaining clarity and structure in the code.
  • Apply various SystemVerilog features that enhance hierarchical design. This includes utilizing implicit port connections such as .name and .* for easier module interaction, which streamlines the process of connecting modules without explicitly specifying each port. Additionally, you will learn about the compilation unit scope name space and how it relates to $unit, enabling better organization and management of design files. Understanding package name space and the process of importing declarations will allow for more efficient reuse of code across different modules. Furthermore, you will explore how to use $root to reference the hierarchy's root and how nested module declarations can help structure complex designs more intuitively. Mastering these features will facilitate the development of modular, scalable, and maintainable designs in SystemVerilog.
  • You will explore the advanced array capabilities introduced in SystemVerilog. You will examine the key enhancements that SystemVerilog provides for arrays, including unpacked multidimensional arrays and packed arrays, as well as the combination of both packed and unpacked arrays in designs. A deeper understanding of these arrays will allow you to analyze their differences, particularly the structural contrast between packed and unpacked arrays, and how they impact memory storage and data access. Additionally, you will learn about the powerful array-querying system functions available in SystemVerilog, which help to determine the size, dimensions, and bounds of arrays, enhancing the flexibility and efficiency of your designs.
  • Describe and utilize the enhancements made to tasks and functions in SystemVerilog. This includes understanding the new optional begin…end block for better readability and flexibility in defining subroutines. The ability for functions to have output and inout arguments expands their usability, allowing for more complex data interactions. Furthermore, functions can now return the void data type, which provides the option to have functions that perform actions without needing to return a specific value. It is important to note that both tasks and functions can return early before reaching their completion, making code execution more efficient. Default parameter values simplify function calls by allowing for optional parameters, and binding arguments by name offers clarity in complex function calls. Additionally, being able to pass arguments by reference or by value provides versatility in how data is handled within tasks and functions. Mastering these enhancements will significantly improve the ability to create more effective and flexible designs in SystemVerilog.
  • Investigate the benefits and capabilities of SystemVerilog interfaces by understanding their role in simplifying design block communication. You will explore how interfaces allow multiple signals to be represented as a single port, reducing code verbosity and promoting code reuse. By learning the importance of generic and parameterized interfaces, you can raise the level of design abstraction, where all declarations are in a single location, making the design more readable and manageable. Interfaces also support encapsulation through tasks and functions, allowing you to define inter-module communication protocols within the interface. For example, you could implement a “Bus Read” task that executes inside the interface. Additionally, you will learn about modports, which allow different views of an interface, enabling the definition of distinct roles such as “master” and “slave” views for a bus with shared signals but differing port declarations and restricted capabilities.

70% discount

USD $99.9

$29.9