200 likes | 436 Views
Hardware/Software Codesign. Outline. Background and Rationale Architecture design constraints and issues Architecture design strategies Example of generic architectures Perspectives . Background and Rationale. Ancient History More Recent History. Back in the 80’s.
E N D
Outline • Background and Rationale • Architecture design constraints and issues • Architecture design strategies • Example of generic architectures • Perspectives
Background and Rationale • Ancient History • More Recent History
Back in the 80’s • The required text book for a similar course: A Rational Design Process: How and Why To Fake It. • Nortel Work Terms In the Compile Department: • Included everything from the operating system to the routing of 1-800 numbers. • 23 Million lines of code. • A single compile took 3 days And you thought the computers in the lab were slow.
In the 90’s • Moore’s Law (1965) exposed the woeful inadequacy of the available design strategies. • IC technology focused the attention on hardware/software co-design.
In the new millennium • A call went out for a Unified Modeling Language: • Embedded System Design: A Unified Hardware/Software Introduction. (Vahid and Givargis 2002) • A Decade of Hardware/Software Codesign (Wolf 2003)
Issues • Abstracting so the big picture is not lost in the details • Language • Split of Hardware/Software
Hard-Soft-O-Matic Hardware Software Digital Signal Processing User Interface Memory Access
Hardware Description Language (HDL) Software Description Language (SDL) People know C, so how about languages built on C/C++? SystemC SpecC Handel-C Can We At Least Talk The Same Language? Has no tool support. Only useful for influencing other languages. Lacks CAD tool support Proprietary: Not universally available
Example: TV Switcher • Problem: Create a video driver to handle OTS rotation and movement. • Primary constraint: Time!
Software Create rotation/translation matrix Calculate coefficients for equation to be used by the hardware. Hardware Use coefficients generated in software to calculate each pixel Partitioning
Problem 1 • Problem: Jaggies in lines. • Solution: New post filter in hardware.
Problem 2 • Problem: New hardware configuration caused the video to appear upside-down and shifted. • Solution: Obviously a hardware bug. Hardware team fix it! • New problem: The hardware team has been looking at this bug for over a month with no progress. The project will fail! … or maybe we should talk to the software side? • New solution: Add an initial flip and offset to counteract the bug. Fix time 20 minutes. • Conclusion: Hardware/Software team communication is beneficial.
Problem 3 • Problem: The boss’s son updated the requirements to expand the universe by 1000 times. • That would require 32 bit coefficients. We can only do 16 bit multiplication in the given time constraints. • Solution: Learning from our past problems, let’s get the hardware and software teams together to discuss it.
Hardware Team It can’t be done! We can’t give you 32 bits on all your variables. Well, A is added in at the end. We can do up to a 64 bit add. Software Team We don’t need all of them. We just need A, B, and C. A gives us unlimited translation, but not scaling. Wait a second, can we simulate scaling by translating so it LOOKS scaled? Let’s see what we can do. Summary of meeting minutes
The Next Meeting (Two weeks later) • Test Team: Translating is indistinguishable from scaling. You can use either. • Development Teams: We can expand the universe to 950 times the original. It is just short of the 1000 times goal when every buffer overflows. • Boss’s Kid: Close enough! Great job! Let’s ship it.
Conclusions • We have come a long way. • Integration of Hardware/Software design is key. • Human intuition will be needed to partition hardware and software. • Both groups must learn to communicate. • Don’t let the boss’s kid see what you are working on.