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
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
- Patrick R. Schaumont, A Practical Introduction to Hardware/Software Codesign 2nd Edition, Springer (ISBN:978-1461437369)
- 1364-2005 - IEEE Standard for Verilog Hardware Description Language available through UMBC IEEEXPLORE Subscription
- Digital Design (Verilog): An Embedded Systems Approach Using Verilog, Peter J. Ashenden (Author) ISBN-13:9780123695277 Amazon
- The Design Warrior's Guide to FPGAs, Devices, Tools and Flows, Clive Maxfield (Author) ISBN-13: 978-0750676045 Amazon https://www.amazon.com/Design-Warriors-Guide-FPGAs-Engineers/dp/0750676043 [[https://www.amazon.com/Design-Warriors-Guide-FPGAs-Engineers/dp/0750676043][]]
- ASIC World Verilog by Deepak Kumar Tala (HDL Design/Coding Styles
- Verilog HDL Quick Reference Guide based on the Verilog-2001 Standard by Stuart Sutherland (http://www.sutherland-hdl.com/books_and_guides.html#V2K HDL Ref)
- The Verilog® Hardware Description Language, Donald E. Thomas (Author), Philip R. Moorby (Author) ISBN:9781402070891 Amazon
- Modeling, Synthesis, and Rapid Prototyping with the VERILOG (TM) HDL, Michael D. Ciletti (Author) ISBN-13:9780139773983 Amazon
- Verilog Papers by Cliff Cummings of Sunburst Design, Inc.
Undergraduate Course
- Verilog Slides: https://eclipse.umbc.edu/robucci/cmpe415
Quartus
Intel Quartus Prime and Pro User Guide: https://www.intel.com/content/www/us/en/programmable/products/design-software/fpga-design/quartus-prime/user-guides.html
Intel FPGA:
High-Performance ALM and Interconnect: https://www.intel.com/content/www/us/en/programmable/products/fpga/features/stx-architecture.html
Full and Parallel Case
- https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture03_Full_and_Parallel.pdf emphasis on proper implementation combinatorial logic truth tables through of “decision tree” type descriptions. This is a building block whose mastery should precede description of complex concurrent execution and complex state machines in HDL.
- http://www.sunburst-design.com/papers/CummingsSNUG1999Boston_FullParallelCase.pdf
Verilog Execution Model and Event Queue
- See Slides in
https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture05_Events_Timing_Testbeches.pdf
- Understand monitor queue, non-blocking vs blocking, use of $strobe/$monitor for “non-blocking” vs $display
- regarding the Verilog execution model and event queue:
- Section 11 pg 158-162 of http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=1620780
- http://insights.sigasi.com/opinion/jan/vhdls-crown-jewel.html
- http://www.vlsiinterviewquestions.org/2012/07/18/verilog-execution-order/
- VHDL vs Verilog
- In VHDL, variables update immediately upon assignment and do not facilitate communication between processes. Signals are used to communicate between processes and are updated at the end of a simulation cycle.
- In Verilog, we have to adopt a coding convention that mimics these.
Coding Practices
- Suggested Coding and Design Practices: https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture08__Suggesting_Coding_and_Design_Practices.pdf Particularly ~slide 3: Suggested Procedural RTL Coding Practices
- http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf
FSM and FSMD
- Related Course Text Readings
- Ch5 and Ch6 of 2nd Ed (Ch4&Ch5 of 1st ed)
- FSM(D) Verilog Slides
- From http://www.sunburst-design.com/papers/
- http://www.sunburst-design.com/papers/CummingsSNUG1998SJ_FSM.pdf
- http://www.sunburst-design.com/papers/CummingsICU2002_FSMFundamentals.pdf
- http://www.sunburst-design.com/papers/CummingsSNUG2004Boston_2StateSims.pdf
- System Verilog : http://www.sunburst-design.com/papers/CummingsSNUG2003SJ_SystemVerilogFSM.pdf Section 10. and 11. Starting on page 29 of 53 discuss in class
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
- ssh <username>@cadence1.cs.umbc.edu
- ssh <username>@cadence2.cs.umbc.edu
- ssh <username>@ite375pc04@cs.umbc.edu
- ssh <username>@ite375pc05@cs.umbc.edu
- ssh <username>@ite375pc06@cs.umbc.edu
- …
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 |