EEL6935/4930 - Reconfigurable Computing 2 (Spring 2023)

Announcements

Overview

The objectives of this course are to learn, understand, and extend existing design techniques for FPGAs and other reconfigurable devices. Specific goals include gaining experience with advanced pipelining strategies, techniques for creating scalable, high-frequency pipelines, experience with FPGA virtualization strategies and high-level synthesis tools, while also evaluating FPGA application studies in embedded and high-performance domains.

Course Information

Lectures


Date Topic Slides/Reading Material
M, Jan 9 Course info, Intro Slides
Start reading my SystemVerilog tutorial.
W, Jan 11 SystemVerilog: Combinational Logic (Basic constructs, 2x1 mux, 4-input priority encoder) Github repo for combinational logic
2x1 mux code
4-input priority encoder
F, Jan 13 SystemVerilog: Combinational Logic (4-input priority encoder, parameterized priority encoder) Parameterized priority encoder
W, Jan 18 SystemVerilog: Combinational Logic (Adder, Multiplier, ALU) Adder code
Multiplier code
ALU code
F, Jan 20 SystemVerilog: Combinational Logic, Cont. (ALU, Misc.)
SystemVerilog: Structural Architectures
Github repo for structural architectures
M, Jan 23 SystemVerilog: Structural Architectures, Cont.
SystemVerilog: Sequential Logic
Github repo for sequential logic
Blocking vs. Non-blocking assignments
W, Jan 25 SystemVerilog: Sequential Logic, Cont.
Sequential logic example
Schematic of architectures
F, Jan 27 SystemVerilog: Sequential Logic, Cont.
SystemVerilog: Finite State Machines
Github repo for FSMs
FSM Design & Synthesis using SystemVerilog
M, Jan 30 SystemVerilog: Finite State Machines, Cont.
SystemVerilog: Finite State Machines and Datapaths (FSMDs)
Github repo for FSMs + Datapaths
W, Feb 1 SystemVerilog: Finite State Machines and Datapaths (FSMDs), Cont.
F, Feb 3 SystemVerilog: FSMDs
M, Feb 6 SystemVerilog: FSM+Ds
Lab 1
W, Feb 8 Basic Linters
Lab servers
SV testbenches: basic mux example
Information on using lab servers
Github repo for basic testbenches
Lecture from 2022
F, Feb 10 SV testbenches: basic examples, race conditions
x2go demonstration
Race condition examples
Lecture from 2022 (Part 1, Skip to 8:50)
Lecture from 2022 (Part 2)
M, Feb 13 SV testbenches: reset race conditions, basic register testbench. Lecture from 2022
W, Feb 15 SV testbenches: assertions, implication Github repo
Doulos assertions tutorial
Lecture from 2022
F, Feb 17 SV testbenches: assertions, implication, cont. Lecture from 2022
M, Feb 20 SV testbenches: assertions, implication, cont. Lecture from 2022
W, Feb 22 SV testbenches: assertions, implication, cont.
SV testbenches: coverage (cover properties)
Coverage examples
Lecture from 2022
F, Feb 24 Midterm Review Lecture from 2022
M, Feb 27 Hw/Sw Co-Simulation, Intel ASE Intel PAC Overview
Intel PAC RTL Training Examples
W, Mar 1 SV testbenches: cover properties, coverpoints, covergroups
F, Mar 3 Midterm
M, Mar 6 SV testbenches: coverpoints/covergroups (cont.), constrained-random verification (CRV) CRV examples
W, Mar 8 SV testbenches: constrained-random verification (CRV), cont.
F, Mar 10 SV testbenches: constrained-random verification (CRV), cont.
M, Mar 20 SV testbenches: constrained-random verification (CRV), cont. Finish reading bit_diff_tb example.
Video 1
Video 2 (forgot to share my screen)
Video 3
W, Mar 22 SV testbenches: object-oriented testbenches Object-oriented alternative to bit_diff_tb
See Video 3 from previous lecture (jump to 44 min)
F, March 24 UVM overview
Timing analysis background
UVM tutorial
UVM Hello World
EDA Playground UVM Examples
Github repo for timing optimization (includes slides)
Lecture from 2022
M, March 27 Timing Optimization: background, common strategies Background video
Github repo for timing optimization (includes slides)
W, March 29 Timing Optimization: common strategies Timing optimization strategies video
F, March 31 Timing Optimization: Quartus timing analyzer overview, add tree example Timing analyzer overview
Add tree example
M, April 3 Timing Optimization: timer examples Example 1
Example 2
W, April 5 Timing Optimization: register duplication Register duplication example
F, April 7 Timing Optimization: reset reduction, reset tree, multi-cycle paths, counter, FSMD tips
Lab 4
Reset reduction example
Reset tree example
Multi-cycle paths
Counter
FSM(D) tips slides
M, April 10 Heterogeneous Parallel Programming: C++ crash course C++ Slides
W, April 12 Heterogeneous Parallel Programming: C++ (cont.), OpenCL Overview OpenCL Slides
SYCL Vector Add
F, April 14 Heterogeneous Parallel Programming: OpenCL Overview (Cont.)
M, April 17 SYCL: Introduction, Vector Add Example SYCL Vector Add
W, April 19 SYCL: Multiple kernels, parameter passing, SAXPY example, multi-kernel/device SAXPY SYCL SAXPY
Multi-kernel/device SAXPY
F, April 21 SYCL: FPGA code, accumulation, synchronization, local memory FPGA Examples
Accumulation Examples
Accumulation Slides (incomplete)

SystemVerilog Resources