EE 599-004/699-001 Software Tools for Custom Hardware

Preliminary ABET-style Syllabus

CATALOG DATA:

EE 599 - Computer Systems: 3 Credits

EE 699 - Computer Systems: 3 Credits

Computer systems are neither hardware nor software, but the result synthesized by integrating the two. This course centers on the system software that is needed to make new, often custom and somewhat special-purpose, hardware usable as (part of) a computing system. Although most of the material is in the general categories of compilers and operating systems, there is very little overlap with the material presented in the computer science classes here at UK. This course will emphasize three projects: construction of a complete compiler toolchain for a simple processor, compilation of hardware descriptions into optimized circuitry, and operating system code for hosting a attached processor. C programming will be required.

Grading will be based on the three projects, presentations, an in-class exam, and a comprehensive final. Each student will be required to submit an "implementor's notes" document with each project. Each graduate student also will be required to lead one in-class discussion of a relevant research issue, the topic of which will be assigned by the instructor. The grade for the course will be determined using weightings specified with each assignment, which will weight projects more heavily than exams. However, you cannot get more than 1 letter grade higher than the lower of your exam average and project/presentation average.

The primary difference between graduate and undergraduate versions of this course is scope of the assignments and the additional requirement to lead a research discussion.

TEXTBOOK:

None required - Course notes

COORDINATOR:

Dr. Henry G. Dietz, Professor

GOALS:

The goal of this course is to enable students to solve computer system design problems as true system problems, viewing hardware and software in a fully integrated way. Because it is assumed that students have significant background in computer organization and/or architecture, the focus is on construction of the necessary system software.

PREREQUISITE:

For EE599: Undergraduate standing, fluency in C, and EE380

For EE699: Graduate standing, fluency in C, and EE380 or other architecture background

TOPICS:

  1. Introduction (1 week)
  2. Static mechanisms (8 weeks)
  3. Dynamic mechanisms (3 weeks)
  4. Selected advanced topics... papers and discussions (2 weeks)

OUTCOMES:

Upon completion of this course the students should demonstrate the ability to:

  1. Understand the concepts of static vs. dynamic mechanisms and properties within a computing system.
  2. Understand how languages, instruction sets, and other relevant properties of a computer system are specified: grammars, instruction set architectures, timing, etc.
  3. Understand how a compiler works and how to build one accepting a modern computer language and generating assembly code.
  4. Understand how an assembler works and how to build one.
  5. Understand how a linker works.
  6. Understand how a loader works.
  7. Understand how a "silicon compiler" works and how to build one accepting a hardware description language and generating gate-level designs.
  8. Understand the operating system services and issues involved in use of simple, custom, hardware.
  9. Understand how to implement device drivers for accessing custom hardware.

COMPUTER USAGE:

Students will perform open-ended experiments involving the construction of a compiler toolchain, silicon compiler, and operating system drivers.

DESIGN CONTENT:

Although the general approach and technologies will be explained to the students, there is a considerable amount of freedom in the implementation. The design content centers on selecting among many alternative implementation methods for each aspect.

CLASS SCHEDULE:

Lecture 3 hours per week.

PROFESSIONAL CONTRIBUTION:

Engineering Science: 1 Credit (33%)

Engineering Design: 2 Credits (67%)

RELATION OF COURSE TO PROGRAM OBJECTIVES:

These course outcomes fulfill the following program objectives:

PREPARED BY: Henry G. Dietz DATE: August 25, 2006 REVISION: January 12, 2012


http://aggregate.org/STCH/ Software Tools for Custom Hardware