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