SystemVerilog for RTL Design


In this hands-on workshop, you will learn how to develop RTL coding using SystemVerilog. You will apply SystemVerilog constructs in your RTL code to prevent synthesis/simulation mismatches. You will write RTL code which avoids unintentional combinatorial logic and latches. You will use SystemVerilog interface mechanism to simplify module connectivity. You will develop proper synthesis scripts to manage parameters in RTL code for reuse in RTL block level integration and gate-level simulation.


At the end of this workshop the student should be able to:

  • Use always_comb, always_latch and always_ff to get intended combinatorial, latch and register logic
  • Use typedef enum to create self-documenting state machine code
  • Use packed struct and interface to simplify module connectivity
  • Learn DC TCL scripting to support parameterized module and interface
  • Learn how shared resources and duplicated resources impact QoR for area and timing
  • Learn how to use DesignWare logic in RTL code

Audience Profile

Design or Verification engineers who need to understand SystemVerilog for RTL design.


To benefit the most from the material presented in this workshop, students should have a good understanding of the Verilog language.

Course Outline

Basic SystemVerilog Features
  • SystemVerilog data types
  • SystemVerilog module port list 
  • SystemVerilog operators 
  • SystemVerilog functional blocks
  • SystemVerilog parameter
Implementing User Logic Intent
  • Understanding issues with the Verilog always statement
  • Avoiding unintentional latch
  • Understanding the meaning of full and parallel during synthesis
  • Applying priority and unique to avoid synthesis/simulation mismatch 
  • Dealing with wildcards
  • Implementing registers with synchronous and asynchronous set and reset
  • Using enum data type for self-documenting state machine code
  • Implementing tri-state logic
Advanced SystemVerilog Features
  • Packed/unpacked array
  • Packed/unpacked struct and union
  • interface
  • modport
  • Parameterized module
  • Parameterized interface
  • Parameterized function
Achieving High QoR - Coding
  • Impact of different coding styles
  • Embedding DesignWare logic in RTL code
  • Efficiencies of case vs. for loop
  • Achieving both area and timing QoR in for loop
  • Catching datapath leakage in RTL code
Synopsys Tools Used
  • DC 2019.03
  • VCS 2018.09