Go to USC home page USC Logo Computer Science & Engineering
UNIVERSITY OF SOUTH CAROLINA
J. Davis Home Page | Research | CSE Site Map | CSE Faculty
James P. Davis
Associate Professor
Department of Computer Science and Engineering
University of South Carolina
Columbia, SC 29208

3A63 Swearingen
jimdavis in domain cse.sc.edu
803-777-5855(voice)
803-777-3767(fax)
Office hours: 2:00-4:30pm T-TH

 

CSCE 611 course home page

Course Description & Grading
611—Conceptual Modeling Tools for CAD. (3) (Prereq: CSCE 211 or 213, CSCE 245) Design techniques for logic systems; emphasis on higher-level CAD tools such as hardware description languages and conceptual modeling.  Link to Syllabus on Department Web Page.

Homework 30%, Exams(2) 30%, Project 40%.


Textbook
Wolf, Wayne, FPGA-Based System Design, Prentice-Hall Publishers, Inc., 2004.
Course Times & Location
Tuesday & Thursday: 11:00 - 12:15,  SWGN 2A19

Lab sessions meet in 1D39 and/or 1D43 on appointed Thursdays when we are using the Nimbus tools.

 


Course Overview

The manner in which I will be teaching the course will focus on the front-end of the VLSI design cycle, namely at the specification and architectural analysis phases of the process.   We will start with either descriptions of algorithms or of protocols, and we will use the Extended Algorithmic State Machine notation, method and supporting tools, to come up with appropriate digital systems architectures that meet the design constraints.  Often, these constraints are defined in terms of resource usage (e.g., area) of the VLSI device to be used, or in terms of speed (which can be expressed in terms of latency, or pin-to-pin delay, given the type of system element being designed), or even more prominently in terms of power consumption (which has become an important driver in design activities for mobile, small form factor electronics products).  However, other design constraints exist in the form of level of reusability and extensibility (often associated with software design, but more so with digital hardware design due to the need to reuse design intellectual property, or "IP").

We will use several graphical formalisms to capture and analyze the information about the domain problems:  we will first use the Unified Modeling Language (UML) as the basis for capturing, analyzing, abstracting and scoping the set of functionality that will become part of our system or algorithms under development.  UML has a number of different representation techniques that we will use for this endeavor.  Although UML is important as a specification and architecting method, we'll use it mostly in class (i.e., we won't use Rational Rose tools to create UML models for our applications).  Next, we will begin the transformation of this specification (with its inherent set of engineering assumptions and constraints) into a register-level architecture for implementation as a VLSI custom-logic digital system.  We will use the Algorithmic State Machine (ASM) notation for this purpose--as presented in the Lee, Arnold and Fletcher texts.  We'll use Exsedia's NimbusTM graphical tools for the purpose of creating ASM models for the concurrent state machines of our VLSI designs (These tools replace the older flowHDL tool set some of you may have used in one of my other courses).

Register-transfer level design consists of the partitioning of the functionality into manageable blocks, according to one of a number of partitioning strategies (functional-based, object-based, pipelined, etc.) that provide an effective organization of the system functionality so as to achieve engineering design objectives.  Such design objectives may be expressed in terms of performance (design speed, design size), reliability (built-in test, logic redundancy) or other metrics.  We will take these design artifacts and synthesize circuits from them, and evaluate their performance by trading off the various design objectives and constraints.

We will next use logic synthesis tools to create models of our design models that are mapped into a target technology. We'll use Synopsys' set of FPGA Compiler II and Design Analyzer tools for this purpose.  We'll use Xilinx Place and Route software for doing layout of our design onto target FPGA devices, specifically to obtain resource usage and timing/delay data that we will need to evaluate architectural alternatives.

One underlying motivation of this course will be to tie the classroom and laboratory (homework and project) work to ongoing research.  To this end, I will involve the students in a research project for which I will be collecting data during the semester, supplied by the students.  This will be measurement data involving measuring the time taken to carry out specific tasks associated with the analysis, architecture, design and verification/validation activities of the various assignments.  At issue is design productivity: the methods I teach are a synthesis of ideas and practices from both the hardware and software design communities.  We will be using some ideas which have yet to find their place in mainstream VLSI hardware development, but which have been well-proven, both theoretically and empirically, in industry.  Part of my activity in teaching this material--and instructing students in these methods--is to collect the appropriate data so that the findings can be reported in peer-reviewed journals, which has not happened yet.  For those students who have been in my classes before, you know that I am always collecting such data in one form or another, and I generally give some dispensation to the students because of that fact.


Course Outline

The course outline is as follows:

1. Overview of the Digital Systems Design process.  Wolf, Chapter 1.

2. Levels of abstraction, modeling digital circuits & systems at switch and gate levels.  Wolf, Chapter 2.

3. Device architectures for realizing digital systems in programmable logic. Wolf, Chapter 3.

4. Design of systems using the Algorithmic State Machine (ASM) method.  Wolf, Chapters 4 & 5.

     4.1 Representation of combinational logic; data path elements.

     4.2 Representation of synchronous sequential logic; finite state machine styles, encoding, mapping to device structures.

     4.3 Thinking about design domains at the 4-levels of abstraction (algorithm, register, gate, CMOS switch).

5. Systems analysis for digital systems design.  Supplemental notes.

     5.1 Trade-off analysis and "round-trip" engineering using logic synthesis and place & route.

     5.2 Area versus speed tradeoffs, and latency/throughput analysis by cycle counting.

     5.3 Design performance, design complexity, architecture "goodness" metrics, versus designer productivity.


Lecture Notes

The lecture notes are organized according to the MWF lecture schedule.  Since we are on a TTH lecture schedule this Spring, the Notes #s won't line up.

Lectures #1 & #2 (week 1/10): Introduction - Structure and content of the course.  Introduction to the problem space we will investigate in this course.  Bit representations and coding, Boolean expressions, Boolean Gates, Boolean functional representation and expression minimization, Truth tables and K-maps.  CMOS transistors forming switches up to logic gates (Wolf, Chapter 2).  ASM diagrams depicting algorithms and their dataflow down to gates.  Lecture Week 1 Notes (PDF).  (CSCE 491 students, you will have seen some of this before).

Lectures #3 & #4 (week 1/17):  Taxonomy of Combinational Logic devices and design "patterns".  Discussion of FPGA devices are their structure (Wolf, Chapter 3).  Details of the Executable Algorithmic State Machine (ASM) method - notation and diagrammatic conventions.  Arnold, Chapter 2, pp. 7-22.  (We will conform to Prentice-Hall publisher's guidelines regarding the dissemination of copyrighted materials.)  Lecture Week 2 Notes (PDF).  Introduction to using the Synopsys FPGA Compiler(R), Design Analyzer(R) tools, Xilinx ISE(R) layout tools. 

Use this Tutorial File #1 (HTML).  Here's the VHDL Library file (bit version)  and VHDL Library file (MVL9 version) to use Nimbus generated files with Synopsys that you need to download and put into your "nimbus" directory. Note: depending on whether you use bus data types in your Nimbus model that are Binary, you need the Nimbus_bit.vhd file (first one); if you have buses that are of MVL3 or MVL9 type, then you'll also need the Nimbus_MVL9_Synopsys.vhd file (the second one).  Read these into "fc2" first before reading in your design file.  Here's the set of Lecture Week 3 Supplemental Notes (PDF).

Lectures #5 & #6 (week 1/24): Taxonomy of Combinational Logic devices and design "patterns".  Discussion of FPGA devices are their structure (Wolf, Chapter 3).  We start with switch level description of basic logic functions, then show how we get to latches and flip flops from the switches.  Then, we show how we use array-based logic representations (PALs, PLAs, PLDs) to transition to a programmable logic substrate in which we can implement computational data path, finite state machines, and registers/memory structures.  For more detailed discussion of the ASM modeling method and its meaning, refer to this set of supplemental notes: Weeks 3&4 Supplemental Notes (PDF).

Lectures #7 & #8 (week 1/31):  Details of the Executable Algorithmic State Machine (ASM) method - notation and diagrammatic conventions.  Arnold, Chapter 2, pp. 7-22.  (We will conform to Prentice-Hall publisher's guidelines regarding the dissemination of copyrighted materials.)  We'll spend time in the lab working on a set of new design problems, which we will use to scale to much larger problem-solving, using the smaller ones as reusable "patterns".  See the Homework Assignments section, below.  Here's the supplemental notes on the tools we'll be using.  Supplemental Notes Week 5 (PDF).

Lectures #9 & #10 (week 2/7):  Laboratory problem-solving.  Using the ASM modeling methodology to design several different combinational and sequential circuits, taking each through synthesis and layout on the Spartan IIe device.  We'll spend the entire week in the 1D39 lab.  See the Homework #4 lab assignments, below.

Lectures #11 & #12 (week 2/14):  Taxonomy of combinational logic circuits (Wolf, Chapter 4), with emphasis on arithmetic circuits.  Also, discussion of FPGA devices (Wolf, Chapter 3) with emphasis on Xilinx FPGA structure.  How do we get to the FPGA from the basic PLA array you studied in CSCE 211?  We'll see how it is done.  Supplemental Notes Week 7 (PDF).

Lectures #13 & #14 (week 2/21):  Laboratory exercises.  Exploring the architectural tradeoffs with the counter implementations, and evaluating the comparative results based on Xilinx PAR report data.  I'll be presenting at a conference this week, and so I will be gone for both classes.  Please use the time to complete the design assignments.  Here's the specification for the Xilinx Spartan-IIE(R) device:

http://www.xilinx.com/xlnx/xweb/xil_publications_display.jsp?category=/Data+Sheets/FPGA+Device+Families/Spartan-IIE&iLanguageID=1

Or, get the individual PDF components for the Spartan-IIe here:  Overview (PDF), Architecture Description (PDF), DC & Switching Characteristics (PDF), and Device Pinout (PDF) specifications.  For our purposes, the Overview, Architecture and Switching specs are what we are interested in.  Only the sections in the Switching document dealing with the following topics are of interest: (i) setup and hold times on registers, (ii) propagation delays with respect to CLB resources.  This information allows you to do some "back of the napkin" estimating relative to your high-level ASM design model descriptions.  We'll be discussing how to do this in coming weeks.

Lectures #15 & #16 (week 2/28):  Discussion of FPGA device architectures, the configuration of Xilinx family devices (Spartan & Virtex-II).  Supplemental Lecture Notes - Week 8 (PDF). 

Lectures  (week 3/7):  No lectures.  Spring break.  Have a good holiday, and get caught up.

Lectures #17 & #18(week 3/14):  Tying together the 4-layers of design abstraction: Algorithm, Register-level and FSM structures, gate-level structures, switch-level structures.  The mapping of gates onto FPGA resources.  Some discussion of small examples (Traffic Light Controller, Shift-Add Multiplier) where we walk through the layers by hand.  Supplemental Lecture Notes: Set 9a (PDF), Set 9b (PDF).

Lectures #19 & #20 (week 3/21):  Projects: teams & topics; process, deliverables and time table.  Chapters 4 & 5, selected topics, Wolf.  Lecture Notes - Week 10 (PDF).

Lectures #21 & #22 (week 3/28):  NOTE: the exam has been moved out until next week; I first want to take the time to get all project teams initialized.  I also want to make sure the non-491 students have some additional lecture time on some topics from earlier lecture notes.  Chapters 4 & 5, combinational and sequential design topics, Wolf text.  Supplemental Notes Week 11 (PDF).   Thursday: Discussion of upcoming Exam.  3/30/05 NEW!!  Here's a VHDL coding style guide that discusses the use of MUXes in the generation of logic from the Synopsys tools (written by Sreesa Akella, one of my PhD students):  SynthGuidelines-Akella (PDF).

Lectures #23 & #24 (week 4/4):  Tuesday: Exam.  Thursday: Assignments #5 & #6, discussion (again) on MUL circuits and ALUs. See below for access to the Assignment documents.  Plus, we'll discuss more details of the Xilinx Spartan-IIe device architecture, and mapping to this device.  Supplemental Notes Week 12 (PDF).

Lectures #25 & #26 (week 4/11):  Lab assignments. Discussion of creating an ASM-driven test harness, and driving your simulation models out of memory arrays.  Memory modeling in the extended ASM method (and its use in Nimbus). Supplemental Notes Week 13 (PDF).

Lectures #27 & #28 (week 4/18):  Tuesday: Results on Assignments #5&6. Discussion of Exam.  Thursday: Exam.

Final Exam: Tues 5/3, 9-11 AM.


Homework & Lab Assignments

There are two groups in this class: (1) Group A - those who have not had CSCE 491 and who have not done digital design using algorithmic state machines; and, (2) Group B - those who have completed the CSCE 491 design project and who are participating in the advanced design project for the 802.11 protocol project.  Assignments will be specific to each group.  Graduate students will have additional assignment instructions and deliverables, per University guidelines.

All design assignment deliverables must be completed according the this Assignment Submission Policy, with addition of (1) circuit schematic from Synopsys, and (2) Place and Route (PAR) report from Xilinx. The information off the PAR report is put onto the Assignment cover sheet (area, in CLBs, Worse case delay, and Max Clocking rate).

HW#1: Reading: Wolf, Chapters 1 & 2. Problems: Group A: complete the Nimbus tutorial and hand in according to the deliverables requirements. Access the tutorial for setting up Nimbus at this web pageGroup B: reading in Gast, Chapter 4 (on 802.11 frame format extensions).  Total 10 points.

HW#2: Reading: Wolf Chapter 3.  Also, take a design and run it through the Synopsys FPGA Compiler II and Xilinx ISE software; select the Spartan 2E device, package xc2s300 or 256 (fc2 designation).  Turn in with cover sheet, indicating the effort spent on each task, along with area, delay and clocking characteristics.  Here's the form to use: CSCE 611 Assignment Cover Sheet (PDF) and (MS-Word).  Total 10 points.

Note:  Here are notes on how to print ASM and waveform diagrams from Nimbus or flowHDL:  Printing Guide (PDF).

HW#3:   Problems, Wolf, Chapter 2, #s Q2-2, 10, and 16 Graduate Students: you must also work #Q2-17.   Due: Tues, 2/22/05.  Total 10 points.

For students in Group A, you will want to attempt to work these problems in addition to the ones you have here.  The Group B students have already completed these problems, but they are good guides to how we use the ASM methodology for modeling both combinational and sequential logic circuits.  (1) Arithmetic Logic Unit (ALU), (2) Binary Up/Down Counter.  For the ALU mode, you will want to work it two different ways: (1) using a single state ASM thread and nested macro-functions, and (2) using a single state ASM thread, with explicit branching using Case or Conditional outputs to implement the decoding of the ALU's function inputs.

HW#4: Design labs:  These two labs, focused on design runs for a counter application, are described below.  Due: Tues, 2/22/05.  Please follow the Assignment Submission Policy.

Lab #1: Modulo-N Counter application: Given the counter discussed in these notes Topic 11 Notes (PDF), create the 3 design models as ASM threads.  Create 3 different Nimbus design files.  You will synthesize each of the 3 design architectures using FC2®, you will run the reports after synthesizing and laying out the circuits, and you will compare the timing and area for each of the three options, showing the three worst-case timing values, maximum clocking speed, and the area usage on the FPGA device for each design.  Show the results of these design runs in the table provided on the Assignment Cover Sheet (PDF).  For extra points, you will want to plot these in Excel and provide a recommendation for which model to choose in our next design. Total 50 points.

See Topic 15 Notes for guidance, using the Binary Up/Down counter example, which is not too far off from this Mod-N counter problem.  (For those students in Group A, you'll want to work the counter example before working this one.)

Lab #2:  Given the Modulo-N Counter models, you are to define 4 test cases against which you will test each of the two Mod-N counter models.  You will use the Test Case Planning Worksheet (PDF) or Test Case Planning Worksheet (MS-Word) that you download from here, define your cases, run the Nimbus® simulator to see the results of the simulation, then turn in the completed Test Case form and the waveform subset for each of the test case that validates the test case. Note: we are looking to see that (1) the two Mod-N ripple counters function exactly the same, and (2) whether the cycle timing is the same.  Total 20 points.

Note 2/15/05!  A draft of the Nimbus Reference Manual (PDF) has been placed on the Nimbus page, or you can get it from here.

HWs#5 & #6: ALU and Multiplier modeling:  We'll take designs used in CSCE 612 (done in both VHDL and SystemC), but develop models using the ASM methodology with Nimbus. The design problems are to be posted here: Assignment #5: ALU Model (PDF), Assignment #6: Multiplier Model (PDF)

NOTE: The graduate students in this course have to do an additional step: you must also create an ASM model for the Serial-Parallel multiplier (8-bits) discussed in the Wolf text, carry it through place and route, then compare the performance parameters between the Systolic 8-bit architecture, the Wallace architecture and the Serial-Parallel architecture.  Note that the systolic one is highly parallel and the Serial-Parallel one is highly serialized; the Wallace is somewhere in between these two.

All students will need to turn in deliverables according to the Assignment Submission Policy Each problem is worth a Total 100 points.  Together, these count as Project.  Also NOTE: Each project will also require a project report in the format as given in this Microsoft Word template: CSCE611-ProjectReportTemplate (MS-Word), given that the projects are individual projects consisting of two separate design explorations, I'll want you to provide relevant documentation, analysis and conclusions according to this document template format.

NEW!!!! 4/20/05

The Final Exam for the class:  As we discussed in class, this will cover the manual analysis & synthesis of an algorithm into a circuit, including both the Control Path and the Data Path blocks, extracted from the ASM's flow diagram and its assignment expressions.  I won't attempt to have you map this to a set of Xilinx Spartan 2E CLB structures (takes too long to do it).  Instead, we'll use the LUT array structure for next state input decoding to the FSM state registers as well as the Data path diagrams showing how the data path signals are appropriately MUXed from the FSM outputs and any dependent input signals.

Here's the template for you to try and work the Traffic Light example from the Wolf text:  TrafficController-Week13-B (PDF).

Here's the worked-out example we discussed in lecture two weeks ago (for you to review):  ManualSynthesisExample-Week11 (PDF).

Here's the worked-out solution to Wolf's Traffic Light example, for the Sequencer and Counter blocks: TrafficLight-Sequencer (PDF), TrafficLight-Counter (PDF).  Note, in the data path, I've inserted a "magnitude comparator".  Lecture Notes-Week 2 (PDF) has the description of the EQ Comparator, which can be use to implement If-Then tests where the test condition is "A=B".  The Magnitude Comparator provides 3 outputs for two test inputs A, B, namely "A<B", "A=B", and "A>B".  You'll need this information for the exam (which I'll discuss immediately before we start the exam).