CS/EE 5830/6830
VLSI Architecture
Spring 2007
General Information
- Instructor: Erik Brunvand,
MEB 3142, 581-4345
- Class: T-Th, 5:15pm - 6:35pm, MEB 3147 (SoC large conference room)
- Erik's Office Hours: T-Th after class, whenever my
office door is open, or by appointment
- TA: Vamshi Kadaru - TA Hours in CADE Lab: Wed 3:00-5:00pm, Thu 11:30am-1:30pm
- Prerequisites: CS/EE3700 (Digital Design) and CS3810 (Computer
Architecture) or equivalent are required. CS 6810 Advanced Architecture would
be great. CS/EE 5710/6710 (IC Design) equivalent is very helpful but not
required. Students without VLSI experience can do projects related to FPGAs.
Textbook:
Digital Arithmetic by Milos Ercegovac and Tomas Lang. Note that the UofU
Bookstore does not have any copies yet (1/5/07). I've put a copy on reserve at
the Marriott Library. A list of known errata (mistakes) in the text can be found here.
- There are two class mailing lists:
-
cs6830@cs.utah.edu is a list of everyone in the class. I'll use
this list to send important information to everyone in the class so
you need to add yourself to that list! You can add yourself to this
list and see archived messages at
http://mailman.cs.utah.edu/mailman/listinfo/cs6830.
You can also send email to this list, but be aware that it goes to
*everyone* in the class, so be sure this is what you really want to
do. Also note that there is only one class mailing list even through
there are four course numbers being used (CS5830, CS6830, EE5830,
EE6830.
- teach-cs6830@cs.utah.edu
Email sent to this list will go to both the professor and the
TA. This is BY FAR the preferred method of asking questions! It lets
all the teaching staff see and respond to the questions. Please use
this email address unless you have very specific reasons for only
sending email to one person.
If you are sending email from a non-utah.edu address, you'll need to sign up
for this list as well as for the cs6830 list. You can do this at
http://mailman.cs.utah.edu/mailman/listinfo/teach-cs6830.
Important Information
Course Description
In general VLSI Archtitecture is a class that looks in depth at a particular
application domain and how that domain interacts with VLSI implementation. This
year we'll be looking at Arithmetic circuits and systems. We will look
in detail at arithmetic subsystems and do projects based on studying and
characterizing the behavior (speed, power, size, etc.) of various arithmetic
subsystems for VLSI.
Grading
Grading will be based on participation. Note that grad students
registered for 6830 will be expected to read and evaluate two
additional papers so the grading scale is slightly different for
6830. Expected participation includes:
- Homework and labs --- Problems out of the book, design problems
using the CAD tools, circuit simulation and characterization problems
(40% for 5830, 35% for 6830)
- Choosing, reading, and evaluating two technical papers (10% for 6830)
- Midterm Exam (15%)
- Class Project --- Most of your grade will be based on
participation in the class project based on the concepts studied in
the class. This project will involve building, evaluating,
characterizing, and exploring arithmetic circuits using
FPGAs or CMOS standard cells.(45% for 5830, 40% for
6830) Breakdown of these points will be as follows:
- Project Technical Paper (20%)
- Project final status (does it work?) (5%)
- Supporting documents (i.e. schematics and diagrams) (10% for
5830, 5% for 6830)
- Simulation and testing results (10%)
Notice that although this is a project-based class, much of the
grade is based on writing about your results! Plan now to spend to
spend some time preparing a nice final paper and report document!
For the final project, all team members will receive the same
grade. However, there will be a chance at the end of the semester for
all team members to confidentially evaluate the contribution made by
their teammates to the project. If there is enough evidence that a
team member did not contribute effectively to the project, I may
reduce that team member's project score to account for this.
There will be some additional assignments for CS/EE6830
students involving reading, summarizing, and possibly presenting
papers related to the subject of the course.
Crafting a Chip: A Practical Guide to the University of Utah CAD Flow
We'll be using CAD tools from Cadence and Synopsys this
semester. These are "industrial strength" CAD tools and are the same
tools that major chip makers use to build commercial chips. As such
they are very powerful tools but they aren't necessarily intuitive to
use. They are very efficient tools for the power user, but they
sometimes have a steep learning curve.
I'm in the process of rewriting all the tool tutorials and putting them in
book form as a CAD tool lab manual. Draft chapters are complete, but will
likely be updated during the semester. You are, of course, free to read the CAD
tool documentation and learn more if you like. However, I encourage you to
start with the Lab Manual because I know that using the tools in this way
works. If you discover some new trick about using the tools, I'd love to
hear about it!
The following draft book chapters are in PDF format:
q Title page and table of contents
q Chapter 1: Getting Started
q Chapter 2: Cadence Design Framework
q Chapter 3: Composer Schematic Capture
q Chapter 4: Verilog Simulation
q Chapter 5: Virtuoso Layout Editor
q Chapter 6: Spectre Analog Simulation
q Chapter 7: Cell Characterization
q Chapter8: Verilog Synthesis
q Chapter 9: Abstract Generation
q Chapter 10: SOC Encounter Place and Route
q Chapter 11: Chip Assembly
q Chapter
12: Design Example: TinyMIPS
q Appendix
A: Tool Administration
q Appendix
B: Highlights of the Tools
q Appendix
C: Tool and Startup Scripts
q Appendix
D: MOSIS SCMOS Rev8 Design Rules
q Appendix E: Technology and Cell Libraries
q Bibliography
and Index
q A paper by Allen Tanner about the makemem memory generator
q
A tutorial demonstration of
the makemem
program generating a ROM and an SRAM
q
A tutorial on the Cadence-Synopsys Interface
(CSI) which lets you netlist a schematic into structural verilog for input
to Synopsys.
q
A tutorial from a couple years ago about
timing options for simulation. It may not be exactly correct for out
current version of the tools, but it's a good overview of simulation timing
options (unit-gate-delay, unit-transistor-delay, SDF delay, analog sim, and
mixed analog/digital sim).
q
Chapter one from Sutherland, Sproull, and Harris' book on Logical Effort is here in PDF. The website for the book is located
here
q
A tutorial about power measurement using SpectreS can be found here in PDF
Assignments
- Review assignment. In PDF.
This assignment is a
self-assesment assignment. It won't be graded You should take
this exam and try to do it without looking at other course
material. If you can answer all the questions then you have the right
background for this course. If you can't, you will need to brush up on
some of your digital logic background! Please take this seriously! If
you have trouble with this exam, you will also have trouble with the
project!
- Information about CADE electronic handin can
be found here in PDF
- CAD1: Cadence Schematic Capture and Simulation, Due Thursday, January 18th, 5:00pm
in PDF.
Note - if you've taken 6710 or 6720 this will be a total review, but please do
it anyway to make sure we're all using the same Cadence setup.
- CAD2: Timing in Verilog/Spectre simulations
plus problems from Chapter 1. Due Tuesday, February 6th, 11:59pm in
PDF.
- CAD3: Prefix adder design and measurement
Due Tuesday, February 20th, 11:50pm in
PDF.
- CAD4: Power measurement and multipliers
Due Thursday, March 15th, 11:59pm
in PDF.
The AddTest.v testbench file can be found
here.
Example mults.v signed multiplier Verilog source
code can be found here.
- CAD5: SRT Division
Due Thursday, April 5th, 11:59pm
in PDF.
- CAD6: Floating Point Final Project
Due Monday, April 20th, 5:00pm in
PDF.
Helpful Info
There's a lot of good info on the CS/EE 5710/6710
Digital VLSI class web site that you might want to look at.
Look in the Tool Information part of that web site for useful
info about Verilog, for example. THere are some quick reference
guides and tutorials that can give you good information about Verilog
as a language.
Here's information about using VNC to
run the tools remotely courtesy of Mike Lodder. Using VNC to display the
cade desktop through the network on your home machine is much faster than
direct X11 tunnelling of the Cadence tools to your desktop X server...
Slides
Lecture Plan
We'll basically follow the textbook in terms of subjects, although I
will likely bring in additional material for some topics. Listed here
is the general plan for the order in which we'll look at material, but
I don't have a good feel for how long we will need to spend on each
topic so I'm not going to try to put dates in the lecture
plan. Interspersed with the arithmetic topics will be lectures on
using the various CAD tools that you'll need for the assignments and
for the projects.
Arithmetic Circuit Topics
- Basic number representation and algorithms
- Basic fixed-point number representation (unsigned numbers, signed
numbers, sign detection, conversion, bit-extension)
- Basic Addition and subtraction (signed and unsigned)
- Range extension and arithmetic shifts
- Basic multiplication (signed and unsigned)
- Basic division (restoring and non-restoring)
- Speeding up addition
- carry-ripple
- switched carry-ripple
- carry-skip
- carry lookahead
- prefix adder
- carry-select and conditional sum
- self-timed carry-completion-sensing adders
- carry-save adders
- Multoperand addition
- bit-arrays
- reduction by rows (adders) and by columns (counters)
- sequential implementation
- combinational implementation including piplined arrays
- Multiplication
- sequential multiplication with recoding
- combinational multiplication with recoding
- combinations of sequential/combinational styles
- multiply/accumulate (MAC)
- squarers and constant multiple multipliers
- Division by digit recurrence
- fractional division
- integer division
- quotient digit selection function
- Square root by digit recurrence
- recurrence and step
- overall algorithm and timing
- combination of division and square root
- integer square root
- result-digit selection
- computation by iterative approximation
- reciprocal
- division
- square root
- Floating point arithmetic
- floating opint represenation
- roundoff modes and error analysis
- IEEE 754 standard
- fp addition
- fp multiplication
- fp division and square root
CAD tools and circuit topics (interspersed with arithmetic topics!)
- Basic transistor level design
- Cadence Composer schematic capture
- Behavioral and switch-level simulation (Verilog)
- various simulators including Cadence Verilog-XL, Synopsys VCS,
and Mentor Modelsim
- various timing models including switch-level timing, behavioral
level timing, and SDF back-annotation timing
- Analog simulation with spectre (Cadence) and nanosim (Synopsys)
- Circuit synthesis with Synopsys Design Compiler
- Arithmetic circuit synthesis with Synopsys Module Compiler
- FPGA-based timing simulation with Xilinx ISE and Modelsim