Design Principles and Tools
Hierarchical Design • Design Tools • Levels of Abstraction • Design Flow • Synchronous Design • FPGA Structure • Compilation • Compilation Unit Scope • Gate-level Simulation • Design Flow for PLD Design • Design Flow for IC Design
Basic Language Features
Modules • Variables & Time • Numbers • Arrays and Always
Basic Design Processes
Always and Synthesis • If, Case and Loop
Further Language Features
Wires and Variables • Operators • Tasks and Functions • Macros, Parameters and Generate • Hierarchical Names • Other Topics
From Verilog to SystemVerilog
Introduction to SystemVerilog • Programming Language Features • SystemVerilog Data Types
Interfaces
Interfaces • Bus-Functional Modeling
SystemVerilog RTL processes and types
SystemVerilog RTL Processes • SystemVerilog RTL Types
Implementing Finite State Machines (FSMs)
Implementing Finite State Machines - Introduction • An Example Finite State Machine • First Finite State Machine implementation • Separate combinational and sequential logic • One-hot State Machines • Registered Outputs • State Encoding • Unreachable States
Further RTL
Further RTL - Introduction • Conditional Operator • Vector Arithmetic • Arithmetic with Signed Types • Resource Sharing • Synthesis of For Loops • Synthesis of Memories • Synthesis of Functions • Task Reference Arguments • Synthesis of Tasks
File Handling
Writing Files • Reading Files
Clocking Blocks
Clocking Blocks
Advanced Verification Techniques
Randomization • Coverage
Working with Data
Arrays and Queues • Other Language Features
The Direct Programming Interface (DPI)
The Direct Programming Interface