This course provides a thorough introduction to the Verilog language.
The emphasis is on:
▪ Writing efficient hardware designs
▪ Performing high-level HDL simulations
▪ Employing structural, register transfer level (RTL), and behavioral
coding styles
▪ Targeting Xilinx devices specifically and FPGA devices in general
▪ Utilizing best coding practices
This course covers Verilog 1995 and 2001.
Level: FPGA 1
Course Duration: 3 days – ILT/29
Course Part Number: LANG-VERILOG
Who Should Attend?: Engineers who want to use Verilog effectively for modeling, design, and synthesis of digital designs
Prerequisites
- Basic digital design knowledge
Software Tools
- Vivado® System Edition 2023.1
Hardware
- Architecture: N/A*
- Demo board: Zynq® UltraScale™ MPSoC ZCU104 board*
After completing this comprehensive training, you will have the necessary skills to:
- Write RTL Verilog code for synthesis
- Write Verilog test fixtures for simulation
- Create a Finite State Machine (FSM) by using Verilog
- Target and optimize Xilinx FPGAs by using Verilog
- Use enhanced Verilog file I/O capability
- Run a timing simulation by using Xilinx Simprim libraries
- Create and manage designs within the Vivado Design Suite environment
- Download to the evaluation demo board
Course Outline
Day 1
Introduction to Verilog
Discusses the history of the Verilog language and provides an overview of the different features of Verilog. {Lecture}
▪ Verilog Keywords and Identifiers
Discusses the data objects that are available in the Verilog language as well as keywords and identifiers. {Lecture}
▪ Verilog Data Values and Number Representation
Covers what data values are in Verilog, as well as how to represent numbers in Verilog. {Lecture}
▪ Verilog Data Types
Covers the various data types in Verilog. {Lecture}
▪ Verilog Buses and Arrays
Covers buses and arrays in Verilog. {Lecture}
▪ Verilog Modules and Ports
Describes both the syntax and hierarchy for a Verilog module, port declarations, and the difference between reg versus wire. {Lecture, Demo, Lab}
▪ Verilog Operators
Shows the syntax for all Verilog operators. {Lecture}
▪ Continuous Assignment
Introduces the Verilog continuous assignment statement.{Lecture}
▪ Gate-Level Modeling
Introduces gate-level modeling in Verilog {Lecture}
▪ Procedural Assignment
Provides an introduction to procedural assignments in Verilog, including their usage and restrictions. {Lecture}
▪ Blocking and Non-Blocking Procedural Assignment
Introduces blocking and non-blocking assignment statements in Verilog. {Lecture, Lab}
▪ Procedural Timing Control
Introduces the timing control methods that are used in procedural assignments. {Lecture}
Day 2
Verilog Conditional Statements: if_else
Describes the if/else conditional statement. {Lecture, Lab}
▪ Verilog Conditional Statements: case
Describes the case conditional statement. {Lecture}
▪ Verilog Loop Statements
Introduces the different types of Verilog loop statements. {Lecture}
▪ Introduction to the Verilog Testbench
Introduces the concept of the Verilog testbench {Lecture, Lab}
▪ System Tasks
Provides a basic understanding of system tasks. {Lecture}
▪ Verilog Subprograms
Covers the use of subprograms in verification and RTL code to model functional blocks. {Lecture}
▪ Verilog Functions
Describes functions, which are integral to reusable and maintainable code. {Lecture}
▪ Verilog Tasks
Covers tasks in Verilog. {Lecture}
▪ Verilog Compiler Directives
Describes Verilog compiler directives. {Lecture}
▪ Verilog Parameters
Covers Verilog parameters and the local parameter concept. {Lecture, Lab}
▪ Verilog Generate Statement
Introduces the Verilog generate statement. {Lecture}
Day 3
▪ Verilog Timing Checks
Covers the timing check statements in Verilog and talks about the specify block. {Lecture}
▪ Finite State Machines
Provides an overview of finite state machines, one of the more commonly used circuits. {Lecture}
▪ Mealy Finite State Machine
Describes the Mealy FSM and how to code for it. {Lecture, Lab}
▪ Moore Finite State Machine
Describes the Moore FSM and how to code for it. {Lecture, Lab}
▪ FSM Coding Guidelines
Shows how to model an FSM of any complexity in Verilog and describes recommendations for performance and reliability. {Lecture}
▪ Avoiding Race Conditions in Verilog
Describe what a race condition is and provides steps to avoid this condition. {Lecture}
▪ File I/O: Introduction
Covers using basic and enhanced Verilog file I/O capabilities for more robust design verification. {Lecture}
▪ File I/O: Read Functions
Covers Verilog file I/O read capabilities. {Lecture, Lab}
▪ File I/O: Write Functions
Covers Verilog file I/O write capabilities. {Lecture}
▪ Targeting Xilinx FPGAs
Focuses on Xilinx-specific implementation and chip-level optimization. {Lecture, Lab}
▪ User-Defined Primitives
Describes user-defined primitives (UDPs). {Lecture}
▪ Programming Language Interface
Introduces the programming language interface (PLI) in Verilog. {Lecture}
PDF Version Designing with Verilog