ECOE 556: Algorithms and Computational Complexity Spring 2003

advertisement
ECOE 560: Design Methodologies and Tools for Software/Hardware Systems
Spring 2006 Course Information
Instructor: Serdar Taşıran
Contact info: ENG 226, stasiran@ku.edu.tr, 212-338-1748
Lectures:
Tuesdays and Thursdays 2-3:15pm, ENG B21
Course home
page:
http://network.ku.edu.tr/~stasiran/ECOE560
Recommended
reading:
Course
content:
Wayne Wolf, Computers as Components: Principles of Embedded Computing
Systems, Morgan Kaufmann.
Giovanni de Micheli, Rolf Ernst, Wayne Wolf (editors), Readings in
Hardware/Software Co-design, Morgan Kaufmann.
Methodologies, tools, and algorithms for designing and implementing integrated
systems with hardware and software components. Complexity management through
top-down design, refinement and abstraction. Synthesis and optimization for
performance, cost, testability and reliability. Design space exploration and trade-offs.
Fundamental data structures and algorithms used in design automation. Heuristic
solutions to optimization problems that arise in design automation. Analysis, testing,
validation, and formal verification of software and embedded electronic systems.
Design and implementation verification. Reconfigurable and reprogrammable
systems.
Course
organization
and grading
policy:
Your grade will be based on
 a semester-long project (65%), and
 contribution to the weekly meetings (25%)
 weekly written assignments (10%)
Weekly
discussion and
hands-on
sessions
There will be weekly sessions (separate from the class period) during which
we will have one or several of the following activities:
 a paper presentation,
 a tutorial on a design automation software tool
 a review and discussion of the week's topics
During the course of the semester, at these sessions, each of you will be expected to
(i) prepare presentations on papers from the literature
(ii) set up software tools and demonstrate them to your classmates, and
(iii) contribute to a lively discussion session about the week's topics
Each of the three items above will contribute 10% towards your final grade.
The project:
Each of you will work on a semester-long project that you decide on in consultation
with me in the first few weeks of the semester. Projects will be carried out
individually.
I encourage you to pick a project topic related to your thesis research; however, you
are required to clearly define a portion of the project that is related to a particular
issue or approach covered in class and that you can complete and present as a
standalone project by the end of the semester. You are required to write a report in a
conference paper format and prepare a presentation for your paper. You will be
required to come up with a timetable and milestones and deliverables for your project.
You will be graded on your progress as well as the final state of your project. In
addition to the achievement of the milestones for your project, you will be required
to write weekly (one page) progress reports.
Projects can be of two kinds:
(i) Design projects: These are projects where the emphasis is on the design that
is being carried out and the methodology used, rather than the development of
new tools or technologies for computer-aided design. You will use academic or
commercial tools without modifying them. One such project is exercising the
Xilinx design flow for the single-chip multi-processor FPGA Virtex-II Pro,
where you modify one of their reference designs and go through the entire design
flow, and document and present your work to your colleagues.
(ii) Design tools projects: These are projects in which your main contribution
will be to improve a design tool or use one for a novel purpose. Here the
emphasis is the novel tool capability developed and not on a particular design.
TENTATIVE SCHEDULE
Week
Topics
1
Feb 13-17
Introduction to hardware/software system design. The design flow. Top-down
and bottom-up design. The “specify-implement-verify” cycle.
2
Feb 20-24
3
Feb 27 - Mar 3
Modeling, specifying, and representing systems: Modeling formalisms: Models
of computation and concurrency
4
Mar 6-10
Modeling, specifying, and representing systems: Description languages for
design specifications and implementations
5
Mar 13-17
Fundamentals: Representing and manipulating Boolean functions and relations.
Propositional logic, first-order logic. Temporal logics (time permitting)
6
Mar 20-24
Hardware implementation (component) technologies: CPUs, ASICs, FPGAs,
DSPs, IP blocks, I/O components, networks, buses, on-chip communication
networks, reconfigurable platforms.
7
Mar 27-31
Software implementation (component) technologies: Operating systems, realtime operating systems, inter-process communication, scheduling, compilation.
8
Apr 10-14
Analysis, verification, testing: Functionality. Design and implementation
verification. Simulation, emulation, formal verification.
9
Apr 17-21
Analysis, verification, testing: Performance and timing. Timing analysis and
verification of hardware and software. Performance evaluation and estimation.
10
Apr 24-28
Analysis, verification, testing: Power. Power analysis, optimization of hardware
and software. Power minimization techniques.
11
May 1-5
System partitioning, architecture exploration.
12
May 8-12
Hardware synthesis.
13
May 15-19
Software synthesis
14
May 22-26
Interface design and synthesis
Download