CMPE 691

Course Title : Reconfigurable System Design
Course Number : CMPE 691
Credits: 3.00
Description:
Prequisite : Courses covering C, HDL, FPGA
Instructor Dr. Ryan Robucci

Associate Professor
Email: robucci@umbc.edu
Department of Computer Science and Electrical Engineering
University of Maryland Baltimore County
1000 Hilltop Circle
Baltimore, MD, 21250
Office: ITE 319 Office Hours: After Class and By Appointment
Phone: 410-455-3549

Meeting Time TuThu 2:30-3:45
Teaching Assistants and Graders : Hadjar Ould Slimane (hadjaro1)

Syllabus

Syllabus : PDF

Calendar

Date Event/Material Reading / Reference Material / Notes    
Aug 25 Lecture 1 L01 Digital Systems Design --    
Aug 27 Lecture 2 L02 Verilog --    
{warning} Aug 28 Assignment 1      
Sept 3 Lecture 3 Debugging and Montitoring see sample in hw    
Sept 3 Lecture 4 (reading/reference only, no implicit requirement) Synthesis and Loops --    
{danger} Sept 6 Assignment 1 HW Due      
{danger} Sept 8 Assignment 1 In-Class      
Sept 8 Lecture 5 Data Flow Modeling Chapter 2    
Sept 10 Lecture 6 Transformations Chapter 3 (3.2 only)    
{warning} Sept 10 Assignment 2
For this assignment, a simple submission of at-home work will be graded.
   
Sept 15 Lecture 7 Implementation starting from HW Implementation Chapter 4    
Sept 17 Lecture 8 FSM_I Chapter 5    
{danger} Sept 18 Assignment 2 Due (delayed till 20th) --    
Sept 23 Lecture 8 FSM_II Chapter 5    
{warning}Sept 22 Assignment 3 Assigned link Due Sept 29th    
Sept 24 Lecture 9 Datapath      
{danger} Sept 29 Assignment 3 Due --    
{warning} Pre-Assignment 3 FPGA FSM+Timer Exercise (No Submission) fpga fsm timer exercise
If you don't know how to use the FPGA to complete such a task,
then you should be reaching out to the TA.
She will recommend some exercises/tutorials for you.
   
{warning} Sept 30 Assignment 4      
{danger} Oct 6th Assignment 4 is due      
Oct 6 Lecture Microprogrammed Architectures Chapter 6    
{danger} Oct 8th Exam 1 --    
Oct 15 Lecture [Timing Analysis ](https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/Physical_Design_Flow_and_Timing_Analysis/Physical_Design_Flow_and_Timing_Analysis.html)
Applet [Timing Violations Applet](https://covail.cs.umbc.edu/robucci/applets/timing_violations/)
https://covail.cs.umbc.edu/robucci/applets/metastable_violations
https://covail.cs.umbc.edu/robucci/applets/slack
Timing Analysis Concepts https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture14.pdf#page=10 Page 10-31    
{warning} Oct 15th Assignment 5 two-part: PDF Due at Noon Oct 22, ~10 min in-class assignment      
{danger} Oct 22 Assignment 5 PDF Due Noon + Inclass      
  Lecture 12 [Managing Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture12__ManagingMetaStability/)
https://covail.cs.umbc.edu/robucci/applets/metastable_violations
--    
{warning} Oct 22 Assignment 6 Due Oct 29th      
Oct 27 Lecture Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/Lecture11__Metastability/Lecture11__Metastability.html) Chapter 8 Book Chapter: https://drive.google.com/file/d/0B5MWE1meYfDbc0RHQmh4LUVnMVlSSmFqRlZnVFg3NXd1bG9j/view    
{danger} Oct 29 Assignment 6 Due      

Last Year

(2025) Oct 2 Lecture 10 Datapath 2  
{info} (2025) Sept 10 HW 4 Assigned [link](./hw/hw4_2025/hw4.html) --
(2025) Oct 6 Lecture [Microprogrammed Architectures ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture09__Ch6_Microprogrammed_Architectures/) Chapter 6
{danger} (2025) Oct 17 HW 4 Due --
(2025) Oct 28 Lecture [Timing Analysis ](https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/Physical_Design_Flow_and_Timing_Analysis/Physical_Design_Flow_and_Timing_Analysis.html) <br> Applet [Timing Violations Applet](https://covail.cs.umbc.edu/robucci/applets/timing_violations/) <br> https://covail.cs.umbc.edu/robucci/applets/metastable_violations <br> https://covail.cs.umbc.edu/robucci/applets/slack Timing Analysis Concepts https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture14.pdf#page=10 Page 10-31
(2025) Oct 30 Lecture 11 [Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/Lecture11__Metastability/Lecture11__Metastability.html) Chapter 8 Book Chapter: https://drive.google.com/file/d/0B5MWE1meYfDbc0RHQmh4LUVnMVlSSmFqRlZnVFg3NXd1bG9j/view
{info} (2025) Oct 31 HW 5 Assigned [link](./hw/hw5_2025/hw5.html) --
{danger} (2025) Nov 7 HW 5 Due --
(2025) Nov 11 Lecture 12 [Managing Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture12__ManagingMetaStability/) --
(2025) Nov 11 Lecture [Integer Computation ](./lectures/Integer_Computation/Integer_Computation.html) --
(2025) Nov 11 (finish) Leture 17 [Data Path Blocks Intro ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture17__Datapath/) --
(2025) Additional Material: RAM and Interfaces RAM User Guide https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_ram.pdf
(2025) {info} Nov 13 HW 6 Assigned [link](./hw/hw6_2025/hw6.html) --
(2025) Nov 20 Lecture 18/19 abriviated https://docs.google.com/presentation/d/1f3UODqOjZ1SS6qChPdxcba0rRzfuSwGieE9NCm1NM-8/edit#slide=id.g31c588056d4_0_135 --
(2025) Nov 20 Lecture 18 [Iterative Implementation of Elementary Arithmetic Functions](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture18__Iterative_Implementations_of_Elementary_Arithmetic_Functions) --
(2025) Nov 20 Lecture 19 [Implementation of Elementary Functions](./lectures/Lecture19__Implementation_of_Elementary_Functions/Lecture19__Implementation_of_Elementary_Functions.html) --
{danger} (2025) Nov 21 HW 6 Due --
(2025) Dec 2 Lecture 20 [CORDIC](./lectures/Lecture20__CORDIC/Lecture20__CORDIC.html) CORDIC Ref. Design https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/an/an263.pdf , https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/manual/stx_cookbook.pdf Review Ch 2
{info} (2025) Dec 2 HW 7 Assigned [link](./hw/hw7_2025/hw7.html) --
(2025) Dec 09 Lecture 15 [Communications and Clock Management ](./lectures/Lecture15__Communications_and_Clock_Management/Lecture15__Communications_and_Clock_Management.html) [PLL and DLL Reading Material](https://drive.google.com/file/d/0B5MWE1meYfDbWUs1Tkl3QTh4YVhpNkJ6ZVhFOGJEZERMeFV3/view?usp=sharing)
{danger} (2025) Dec 9 HW 7 Due --
{danger} (2025) Dec 11 Final Exam 1-3pm https://registrar.umbc.edu/wp-content/uploads/sites/31/2025/09/Fall-2025-Regular-Final-Exam-Schedule.pdf

Materials and References

Reading and References

Undergraduate Course

Full and Parallel Case

Verilog Execution Model and Event Queue

Coding Practices

Tools

An Initial Tools Setup Follows. Please work on this now, especially if you are less familiar with linux and ssh.  For some it may only take minutes, but we should have it resolved as soon as possible for everyone so that the first homework can be started and completed without trouble. 


Setup

ssh

For assignments you can use some CSEE Linux servers or the ITE 375 lab Linux computers

shell

Instructions that I provide are based on the assumption that you are using a bash shell.

once you login, check your shell using the following command

echo $SHELL

if it the answer is not bash, simply run the bash command to enter a bash shell

bash

tools and convenience

one of the tools to use is Cadence Xcelium Logic Simulator

it is available through this command:

/umbc/software/scripts/launch_cadence_xrun.sh

for convenience you may setup a "shortcut" as xrun and specify the path to it in your default login scripts

mkdir -p ~/bin
ln -s /umbc/software/scripts/launch_cadence_xrun.sh ~/bin/xrun
echo 'export PATH=~/bin${PATH:+:${PATH}}' >> ~/.bashrc

this will be picked up the next time you enter a bash shell

hello world

create a file hello.sv with the following contents

module test;
   initial begin
      $display("**hello world**");
   end
endmodule

various tools used in the course will create work/build subdirectories and temporary files. You should work from new clean and organized directories when running the tools

/umbc/software/scripts/launch_cadence_xrun.sh hello.sv

or

xrun hello.sv

Expected Results:

TOOL:    xrun(64)    23.09-s013: Started on Sep 05, 2025 at 10:51:29 EDT
xrun(64): 23.09-s013: (c) Copyright 1995-2024 Cadence Design Systems, Inc.
file: /tmp/babel-xElt4C/neIB6l4.sv
    module worklib.test:sv
        errors: 0, warnings: 0
        Caching library 'worklib' ....... Done
    Elaborating the design hierarchy:
    Top level design units:
        test
    Building instance overlay tables: .................... Done
    Generating native compiled code:
        worklib.test:sv <0x167d8345>
            streams:   1, words:   464
    Building instance specific data structures.
    Loading native compiled code:     .................... Done
    Design hierarchy summary:
                 Instances  Unique
        Modules:         1       1
        Initial blocks:  1       1
    Writing initial simulation snapshot: worklib.test:sv
Loading snapshot worklib.test:sv .................... Done
xcelium> source /umbc/software/cadence/installs/XCELIUM2309/tools/xcelium/files/xmsimrc
xcelium> run
**hello world**
xmsim: *W,RNQUIE: Simulation is complete.
xcelium> exit
TOOL:   xrun(64)    23.09-s013: Exiting on Sep 05, 2025 at 10:51:29 EDT  (total: 00:00:00)

Old / Previous

Labs / Discussions

Discussion Materials
Session 1 Intro to Verilog Discussion 1 Document
  CMPE415 HW2 Practice Questions: https://eclipse.umbc.edu/robucci/cmpe415/attachments/HW2.pdf
  Many Practice Questions: https://eclipse.umbc.edu/robucci/cmpe415/verilog_practice/index.html
Session 2 Discussion 2 Document
Session 3 Discussion 3 Document
  Preparation Reading: http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf
  Slides Suggested Coding and Design
  Slides Operators Operands Variables and Literals
Session 4 Discussion 4 Document
  Preparation Reading: FSM Papers in References Below
  Slides FSM I (1/2 hour)
  The Fundamentals of Efficient Synthesizable Finite State MachineDesign using NC-Verilog and BuildGates
  User Guide for Board
Session 5 Discussion 5 Document System Verilog and Embedded Processors
  Introduction to SystemVerilog emphasis on features for state machines
  Introduction to Use of Embedded Processors, Nios II (2 hours)
  IntroToNiosIIProcessor PDF PAGE 3 Figure 1-1 Example of a NiosII Processor System
Session 6 Setting Up SD Card and Linux Terminal
Session 7 Custom Component and UBOOT
Session 8 Embedded Code Developement
Session 9 FIFO and PLL
Session 10 Advanced Custom Comonents

New Entry