University of Tehran Electrical and Computer Engineering Department Hardware Software Codesign – Spring 2008 ECE 612 Siamak Mohammadi Office: Room No. 226 Office Hours: Weekdays, 9:30 – 12:00 Email: smohammadi@ece.ut.ac.ir URL: http://ece.ut.ac.ir/classpages Course description We will show benefits of the codesign approach over current design process and provide information on how to incorporate these techniques into a general digital design methodology for embedded systems. We will also illustrate how codesign concepts are being introduced into design methodologies. Fundamentals of HW/SW codesign and partitioning concepts in designing embedded systems are introduced and current trends in the codesign of embedded systems are discussed. The student will overview the goals of and methodology for partitioning hardware/software in systems. Prerequisites Students must have familiarity with digital logic design, computer organization, HDL and C programming. Outline Introduction to Embedded System Design (1 session) o What are Embedded Systems? o Difficulties with the design of heterogeneous HW/SW Systems o Requirements of modern embedded systems o Embedded Systems Design Flow o Embedded Systems Application HW/SW Codesign Overview (1 session) o Introduction to embedded system codesign and motivation o Progrmmability, performance and cost: ASIPs o Steps involved in HW/SW Codesign Cospecification Modeling Partitioning/Scheduling Coverification o Research areas in Codesign Cospecification and modeling (3 sessions) o Introduction to Cospecification o o o Unified HW/SW Representations Specification Languages Modeling Data/control flow diagrams Concurrent processes Finite state machines Object-oriented representations Petri Nets UML o SystemC a modeling platform for HW & SW o Transaction level modeling TLM in systemC: based on systemC package o Examples Embedded System partitioning (2 sessions) o Structural vs. functional partitioning o Natural vs. executable language specifications o Basic partitioning issues and algorithms o Functional partitioning techniques for hardware o Hardware/software partitioning o Functional partitioning techniques for software o Exploring tradeoffs with functional partitioning o Objective and closeness functions CPU and Accelerator based Embedded System Codesign (2 sessions) o Accelerated System Architecture o Hardware Options o Accelerator System Design o System Partitioning & Performance Analysis o Scheduling and allocation o Hardware Accelerator Case Study Embedded Computer Organization (1 session) o Processor and Computer System Architecture o Micro-controllers o RISC/CISC Architectures o ARM Embedded CPU cores and Programming o Interrupts and System Performance Embedded System controller case studies (1 session) o CRC cards and Elevator Controller o HP Plotter o Bluetooth Baseband Controller Embedded SoPC: Virtex System on Programmable Chips (1.5 sessions) o Introduction to Programmable Chips o MicroBlaze Processor Core Architecture o μBlaze SoPC Configurations and OPB IP Cores o μBlaze Address Space o Adding User Cores Prototyping and Emulation (1 session) o Introduction o Prototyping and Emulation Techniques o Prototyping and Emulation Environment System level power/energy optimization (1 session) Introduction to some HW/SW Codesign environments (1 session) o Partitioning tools & algorithms: POLIS, COSYMA,… o Describe examples of applications and systems developed using a codesign approach References [1] J. Staunstrup and W. Wolf, “Hardware/Software Co-Design: Principles and Practices”, Kluwer 1997 [2] Frank Vahid and Tony Givargis, “Embedded System Design: A Unified Hardware / Software Approach”, 1999 [3] W. Wolf, “Computers as Components: Principles of Embedded Computing System Design”, Morgan Kaufmann 2001 [3] H. Dubois, O. Sentieys, D. Chillet, J. Philippe, “Teaching Hardware/Software System Codesign Using CAD Tools : A Case Study in Image Synthesis”, IEEE Transactions on Education, vol. 43, No3, Aug. 2000 [4] Other papers Evaluation Scheme 5 % Home works and computer assignments 25% Mid-term exam 45% Final exam 25% Project Note Students will design a hardware software system, where they will assess the impact of the partitioning on the system performance by implementing it on a board. They will also write some codes that control the interaction between the hardware and the software. Outcome At the end of this course, students will understand the importance of partitioning the hardware and software in today’s complex embedded system. By doing the project students are exposed to a high level language for modeling and a hardware design language for design and through the implementation of the design on an “FPGA + processor” board they can experience some partitioning algorithms and see how the performance of their system can vary. Aspects of reusability, co-simulation and verification of a HW/SW system are considered and understood.