| Date | Event / Lecture Material | Reading and Reference Material |
|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| Aug 29 | **Lecture** 1 https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/L01__DigitalSystemsDesign/L01__DigitalSystemsDesign.html | -- |
| Sept 2 (delayed) | **Lecture** 2 https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/L02__Verilog/L02__Verilog.html | -- |
| Sept 4 | **Lecture** 2 https://eclipse.umbc.edu/robucci/cmpeRSD/lectures/L02__Verilog/L02__Verilog.html | -- |
| {info} Sept 10 | HW 1 Assigned [link](./hw1_2025/index.html) |--|
| {danger} Sept 17 | HW 1 Due |--|
| Sept 16 | **Lecture** 3 [Debugging and Montitoring](https://eclipse.umbc.edu/robucci/cmpe316/lectures/L07__Debugging_and_Monitoring_Statements/) | see sample in hw |
| Sept 16 | **Lecture** 4 [Synthesis and Loops](./Lectures/L04__Synth_and_Loops/) | -- |
| Sept 16 | **Lecture** 5 [Data Flow Modeling](./Lectures/Lecture05__Ch2_DataFlowModeling/) | Chapter 2 |
| Sept 16 | **Lecture** 6 [Transformations](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture06__Transformations/) | Chapter 3 |
| {info} Sept 18 | HW 2 Assigned [link](./hw/hw2_2025/hw2.html) |--|
| {danger} Sept 25 | HW 2 Due |--|
| Date | Event / Lecture Material | Reading and Reference Material |
|------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|
| Aug 31 | **Lecture** 1 Course introduction and [Codesign](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture01__Codesign/) | -- |
| Sept 2 | **Lecture** 2 [Events Timing and Testbenches](Lecture02__Events_Timing_and_Testbenches/L02__Events_Timing_and_Testbenches.html) old: https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture02__Events_Timing_and_Testbenches/) | -- |
| Sept 2 | [**Discussion** 1](./discussions/discussion01) | [**paper** Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill!](http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA_rev1_2.pdf)
[**pratice** HW2](https://eclipse.umbc.edu/robucci/cmpe415/attachments/HW2.pdf) |
| - | Debugging and Monitoring: https://eclipse.umbc.edu/robucci/cmpe316/lectures/L07__Debugging_and_Monitoring_Statements/
| - | Metalogic: https://eclipse.umbc.edu/robucci/cmpe316/lectures/L05__VerilogIntroIII/#metalogic-values| - |
| - | Full and Parallel Case: https://eclipse.umbc.edu/robucci/cmpe316/lectures/L08__Full_and_Parallel_Case/| - |
| Sept 8 | **Lecture** 2 - Verilog Stratefied Event Queue and Time Modeling [Events Timing and Testbenches](./Lectures/Lecture02__Events_Timing_and_Testbenches/) | [**paper** Correct Methods for Adding Delays to Verilog Behavioral Models !](http://www.sunburst-design.com/papers/CummingsHDLCON1999_BehavioralDelays_Rev1_1.pdf) |
| Sept 8 | [**Discussion** 2](./discussions/discussion02) | [**paper** "full_case parallel_case", the Evil Twins of Verilog Synthesis](http://www.sunburst-design.com/papers/CummingsSNUG1999Boston_FullParallelCase.pdf)
[**slides** Full and Parallel Case](https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture07__Full_and_Parallel.pdf) |
| Sept 10,14 | **Lecture** 3 [Debugging and Monitoring](./Lectures/Lecture03__Debugging_and_Monitoring_Statements/)
**Lecture** 4 [Synthesis and Loops](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/L04__Synth_and_Loops/) | -- |
| Sept 14 | [**Discussion** 3](./discussions/discussion03) | Preparation Reading:[**paper** Nonblocking Assignments in Verilog Synthesis, Coding Styles That Kill](http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf)
[**slides** Suggested Coding and Design](https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture08__Suggesting_Coding_and_Design_Practices.pdf)
[**slides** Operators Operands Variables and Literals](https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture09__Operators_Operands_Variables_Literals.pdf) |
| Sept | **Lecture** 4 [Synthesis and Loops](./Lectures/L04__Synth_and_Loops/) | - |
| Sept 16 | **Lecture** 5 [Data Flow Modeling](./Lectures/Lecture05__Ch2_DataFlowModeling/) | Chapter 2 |
| Sept 21 | **Lecture** 6 [Transformations](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture06__Transformations/) | Chapter 3 |
| Sept 21 | [**Discussion** 4](./discussions/discussion04) | [**paper** The Fundamentals of Efficient Synthesizable Finite State MachineDesign using NC-Verilog and BuildGates](http://www.sunburst-design.com/papers/CummingsICU2002_FSMFundamentals.pdf)
| Sept 24,Sept 29 | **Lecture** 7 [Implementation](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/L07__Ch3_Ch4_Implementation/ ) | Chapter 4 |
| Sept 29, Oct 1 | **Lecture** 8 [FSMD ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/L08__FSMD/) | Chapter 5 |
| Sept 29 | [**Discussion** 5](./discussions/discussion05) | [IEEE Standard for SystemVerilog--Unified Hardware Design, Specification, and Verification Language - Redline](https://ieeexplore.ieee.org/document/5985443)
[**paper** SystemVerilogFSM](http://www.sunburst-design.com/papers/CummingsSNUG2003SJ_SystemVerilogFSM.pdf) |
| Oct 6 | **Lecture** 9 [Microprogrammed Architectures ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture09__Ch6_Microprogrammed_Architectures/) | Chapter 6 |
| Oct 6 | [**Discussion** 6](./discussions/discussion06) | | -- |
| Oct 8,13 | **Lecture** 10 [General-Purpose Embedded Cores ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture10__General-Purpose_Embedded_Cores/) | Chapter 7
OS Example: https://drive.google.com/file/d/0B5MWE1meYfDbNlFOZ3hYX3BxMUE/view |
| Oct 13 | [**Discussion** 7](./discussions/discussion07) | | -- |
| Oct 15 | **Lecture** 11 [Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture11__Metastability/) | Chapter 8 Book Chapter: https://drive.google.com/file/d/0B5MWE1meYfDbc0RHQmh4LUVnMVlSSmFqRlZnVFg3NXd1bG9j/view |
| Oct 20 | **Lecture** 12 [Managing Metastability ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture12__ManagingMetaStability/) | -- |
| Oct 22 | **Lecture** 13 [Timing Analysis ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture13__TimingAnalysis/)
**Applet** [Timing Violations Applet](https://covail.cs.umbc.edu/robucci/applets/timing_violations/) | Timing Analysis Concepts https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture14.pdf#page=10 Page 10-31 |
| Oct 27
(delayed from Oct 20) | [**Discussion** 8](./discussions/discussion08) | -- |
| | **Lecture** 14 [MultiClock-Domain Design Techniques Guided Paper Review with Lecture Notes ](https://drive.google.com/file/d/1DTfBRWXQ4PWybatG9NUcY0AAxbkJJzbZ/view) | [Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs (2001)](http://www.sunburst-design.com/papers/CummingsSNUG2001SJ_AsyncClk.pdf) Details of Code for FIFO implementation shown at end of 2002 paper: [Simulation and Synthesis Techniques for Asynchronous FIFO Design (2002)](http://www.sunburst-design.com/papers/CummingsSNUG2002SJ_FIFO1.pdf) https://www.glassdoor.com/Interview/uk-digital-design-engineer-interview-questions-SRCH_IL.0,2_IN2_KO3,26.htm "Cisco Question" ; Apple Interview Question: https://www.glassdoor.com/Interview/Describe-how-a-multi-bit-synchronizer-async-fifo-handles-the-variable-delay-of-each-bit-QTN_1243086.htm |
| | **Lecture** 15 [Communications and Clock Management ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture15__Communications_and_Clock_Management/) | [PLL and DLL Reading Material](https://drive.google.com/file/d/0B5MWE1meYfDbWUs1Tkl3QTh4YVhpNkJ6ZVhFOGJEZERMeFV3/view?usp=sharing) |
| Nov 2 | **Dicussion 9** [FIFO and PLL](./discussions/discussion09/) | | -- |
| | **Lecture** 16 [Arithmetic and Signed Integer Part I ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture16__Signed_Integers_and_Arithmetic__PartI/) | -- |
| Nov 8 | **Lecture** 16 [Arithmetic and Signed Integer Part II ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture16__Signed_Integers_and_Arithmetic__PartII/) | -- |
| Nov 10 | **Lecture** 16 [Arithmetic and Signed Integer Part III ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture16__Signed_Integers_and_Arithmetic__PartIII/) | -- |
| Nov 23 (finish) | **Leture** 17 [Data Path Blocks Intro ](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture17__Datapath/) | -- |
| | Additional Reference Material: [Data Path Blocks I ](https://drive.google.com/file/d/1h2tA38ZFAErG92Pc3pP8iGSkSnHvZkrf/view) | -- |
| | Additional Reference Material: [Data Path Blocks II Multiply and Shift: ](https://drive.google.com/open?id=14gPqmR6q9yXXNyw7MxVUyLNXqiIwj3oo ) | -- |
| Nov 23 | **Dicussion 10** [Advanced Custom Comonents](./discussions/discussion10/) | -- |
| Dec 5 | Lecture 18/19 substitute https://docs.google.com/presentation/d/1f3UODqOjZ1SS6qChPdxcba0rRzfuSwGieE9NCm1NM-8/edit#slide=id.g31c588056d4_0_135 | -- |
| Nov 30->Dec 10 | **Lecture** 18 [Iterative Implementation of Elementary Arithmetic Functions](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture18__Iterative_Implementations_of_Elementary_Arithmetic_Functions) | -- |
| Dec 10 | **Lecture** 19 [Implementation of Elementary Functions](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture19__Implementation_of_Elementary_Functions/) | -- |
| Dec 10 | **Lecture** 20 [CORDIC](https://eclipse.umbc.edu/robucci/cmpeRSD/Lectures/Lecture20__CORDIC/) | 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 |
| | Additional Material: RAM and Interfaces | RAM User Guide https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/ug/ug_ram.pdf
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](http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=1620870) available from UMBC
*
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
* [ASIC World Verilog](http://www.asic-world.com/verilog/index.html) by Deepak Kumar Tala (HDL Design/Coding Styles
* [Verilog HDL Quick Reference Guide](http://www.sutherland-hdl.com/pdfs/verilog_2001_ref_guide.pdf) 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.](http://www.sunburst-design.com/papers/#papers_top )
### 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
### Design and Coding
* [Intel Quartus Prime Pro Edition User Guide: Design Recommendations](https://www.intel.com/content/altera-www/global/en_us/index/documentation/sbc1513987577203.html)
* [Recommended HDL Coding Styles](https://www.intel.com/content/altera-www/global/en_us/index/documentation/sbc1513987577203.html#mwh1409959570946)
* [Recommended Design Practices]( https://www.intel.com/content/altera-www/global/en_us/index/documentation/sbc1513987577203.html#mwh1409959483992)
* [Managing Metastability with the Intel Quartus Prime Software](https://www.intel.com/content/altera-www/global/en_us/index/documentation/sbc1513987577203.html#mwh1409959644819)
### 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
### Verilog Timing and Testbenches:
* https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture05_Events_Timing_Testbeches.pdf
### FSM and FSMD
* Related Course Text Readings
* Ch5 and Ch6 of 2nd Ed (Ch4&Ch5 of 1st ed)
* FSM(D) Verilog Slides
* https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture11__FSM_I.pdf
* https://eclipse.umbc.edu/robucci/cmpe415/attachments/Lecture12__FSM_II.pdf
* 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