New application domains demand ever increasing adaptability and performance. In order to cope with changing user requirements, improvements in system features, changing protocol and data-coding standards, and demands for support of a variety of different user applications, many emerging applications in communication, computing and consumer electronics demand that their functionality stays flexible after the system has been manufactured. Reconfigurable Systems-on-a-Chips (SoCs) employing different microprocessor cores and different types of reconfigurable fabrics are one attractive solution for these domains. The increasing prominence of reconfigurable devices within such systems requires HW/SW co-design for SoCs to address the trade-off between software execution and reconfigurable hardware acceleration. Dynamic reconfiguration capabilities of current reconfigurable devices create an additional dimension in the temporal domain. During the design space exploration phase, overheads associated with reconfiguration and hardware/software interfacing need to be evaluated carefully in order to harvest the full potential of dynamic reconfiguration.
The course will introduce the student with the concept of reconfigurability in FPGAs, presenting the available mechanisms and technologies at the device level and the tools and design methodologies required to design reconfigurable FPGA-based systems. The course will present the different aspects of the design of FPGA-based reconfigurable systems, focusing in particular on dynamically self-reconfigurable systems. The design methodologies and tools required to design a dynamically-reconfigurable system will be introduced and described, together with the problems that need to be considered.
Before continuing in this terrific journey in the reconfigurable computing area, it can be useful to define a common language. Obviously, some of these terms have been already used but it is now time to better understand them and to make some order before continuing with more advanced concepts. Furthermore, as we know, FPGA configuration capabilities allow a great flexibility in hardware design and, as a consequence, they make it possible to create a vast number of different reconfigurable systems. These can vary from systems composed of custom boards with FPGAs, often connected to a standard PC or workstation, to standalone systems including reconfigurable logic and General Purpose Processors, to System-on-Chip's, completely implemented within a single FPGA mounted on a board, with only few physical components for I/O interfacing. There are different models of reconfiguration, and a scheme to classify them is presented in this module. We can consider this module as a transitional/turning point module. We have been exposed to some terminology and concepts and we are now ready to move forward. To do this, we need to combine all the pieces of the puzzles together and to invest a bit at looking at the overall picture, and this is exactly what this module has been designed for.
What's included
6 videos2 readings2 assignments
Show info about module content
6 videos•Total 37 minutes
Course introduction•3 minutes
A Common Vocabulary•5 minutes
The 5 W's•6 minutes
Reconfigurable Computing as an Exstension of HW/SW Codesing•6 minutes
A Classification of SoC Reconfigurations•8 minutes
A Classification of SoMC Reconfigurations•10 minutes
2 readings•Total 240 minutes
Design methodology for partial dynamic reconfiguration: a new degree of freedom in the HW/SW codesign [suggested readings]•60 minutes
Performance of partial reconfiguration in FPGA systems: A survey and a cost model [suggested readings]•180 minutes
2 assignments•Total 60 minutes
Functionalities and their implementations•30 minutes
Module Review•30 minutes
Towards Partial Dynamic Reconfiguration and Complex FPGA-based systems
Module 2•6 hours to complete
Module details
The reconfiguration capabilities of FPGAs give the designers extended flexibility in terms of hardware maintainability. FPGAs can change the hardware functionalities mapped on them by taking the application offline, downloading a new configuration on the FPGA (and possibly new software for the processor, if any) and rebooting the system. Reconfiguration in this case is a process independent of the execution of the application. A different approach is the one that considers reconfiguration of the FPGA as part of the application itself, giving it the capability of adapting the hardware configured on the chip resources according to the needs of a particular situation during the execution time. In this case we are referring to this reconfiguration as dynamic reconfiguration and the reconfiguration process is seen as part of the application execution, and not as a stage prior to it. This module illustrates a particular technique, which is extending the previous two, that has been viable for most recent FPGA devices, Partial Dynamic Reconfiguration. To fully understand what this technique is, the concepts of reconfigurable computing, static and dynamic reconfiguration, and the taxonomy of dynamic reconfiguration itself must be analyzed. In this way partial dynamic reconfiguration can be correctly placed in the set of system development techniques that it is possible to implement on a modern FPGA chip.
What's included
8 videos4 readings2 assignments
Show info about module content
8 videos•Total 41 minutes
Scenarios where Partial Reconfiguration can be effective•7 minutes
How to use FPGA Reconfiguration to face area issues•5 minutes
How to deal with the Reconfiguration runtime overhead•4 minutes
Recurring modules to reuse them to reduce the Reconfiguration time•4 minutes
Partial Reconfiguration to reduce the Reconfiguration runtime overhead•6 minutes
Runtime management to explore alternative implementations•6 minutes
Bitstreams relocation•7 minutes
Bitstreams relocation and virtual homogeneity•3 minutes
4 readings•Total 270 minutes
Operating system runtime management of partially dynamically reconfigurable embedded systems [suggested readings]•60 minutes
Core Allocation and Relocation Management for a Self Dynamically Reconfigurable Architecture [suggested readings]•60 minutes
A runtime relocation based workflow for self dynamic reconfigurable systems design [suggested readings]•60 minutes
Partial Dynamic Reconfiguration in a Multi-FPGA Clustered Architecture Based on Linux [suggested readings]•90 minutes
2 assignments•Total 60 minutes
Reconfigurable System•30 minutes
Partial reconfiguration•30 minutes
Design Flows
Module 3•10 hours to complete
Module details
After presenting different solutions proposed to design and implement dynamic reconfigurable systems, this module will describe a general and complete design methodology that can be followed as a guideline for designing reconfigurable computing systems. To design and implement a reconfigurable computing system, designers need Computer-Aided Design (CAD) tools for system design and implementation, such as a design analysis tool for architecture design, a synthesis tool for hardware construction, a simulator for hardware behavior simulation, and a placement and routing tool for circuit layout. We may build these tools ourselves or we can also use commercial tools and platforms for reconfigurable system design. The first choice implies a considerable investment in terms of both time and effort to build a specific and optimized solution for the given problem, while the second one allows the re-use of knowledge, cores, and software to reach a good solution to the same problem more rapidly. This module is guiding the students through an historical view on how CAD frameworks evolved through the years. This is done to show how fast the technology is evolving and the rationale behind the choice made to improve the users experience when working with an FPGA-based system. Not only commercial tools are described, but also the personal journey done by the course instructor and his research team, starting from his early days as a PhD up to the research challenges they are nowadays working on.
What's included
9 videos7 readings3 assignments
Show info about module content
9 videos•Total 55 minutes
Xilnx Design Flows through years•6 minutes
Partial Reconfiguration Design Flows•5 minutes
Xilinx Difference Based Partial Reconfiguration•5 minutes
Xilinx Module Based Partial Reconfiguration•5 minutes
Module Based vs Partial Reconfiguration Design Flows•17 minutes
Rationale behind DRESD and the work done by the Politecnico di Milano•3 minutes
From DRESD to CHANGE and ASAP, two new research initiatives from the Politecnico di Milano•4 minutes
CAOS: from embedded to heterogeneous distributed FPGA-based computing systems•3 minutes
7 readings•Total 435 minutes
Vivado Design Suite Tutorial, Partial Reconfiguration, UG947 (v2016.1) April 6, 2016 [suggested readings - handbook - PDF]•90 minutes
Vivado Design Suite User Guide, Partial Reconfiguration, UG909 (v2016.1) April 6, 2016 [suggested readings - handbook - PDF]•180 minutes
Dynamic Reconfigurability in Embedded System Design [suggested readings]•30 minutes
A design methodology for dynamic reconfiguration: the Caronte architecture [suggested readings]•30 minutes
Floorplanning Automation for Partial-Reconfigurable FPGAs via Feasible Placements Generation [suggested readings]•45 minutes
Heterogeneous exascale supercomputing: The role of CAD in the exaFPGA project [suggested readings]•30 minutes
The Role of CAD Frameworks in Heterogeneous FPGA-Based Cloud Systems [suggested readings]•30 minutes
3 assignments•Total 90 minutes
Abstractions•30 minutes
Politecnico di Milano Partial Reconfiguration Research Initiatives•30 minutes
Design flows•30 minutes
Closing remarks and future directions
Module 4•6 hours to complete
Module details
We are working at the edge of the research in the area of reconfigurable computing. FPGA technologies are not used only as standalone solutions/platforms but are now included into cloud infrastructures. They are now used both to accelerate infrastructure/backend computations and exposed as-a-Service that can be used by anyone. Within this context we are facing the definition of new research opportunities and technologies improvements and the time cannot be better under this perspective. What it is needed now is new platform creation tools, monitoring and profiling infrastructure, better runtime management systems, static and dynamic workload partitioning, just to name a few possible areas of research. This module is concluding this course but posing interesting questions towards possible future research directions that may also point the students to other Coursera courses on FPGAs.
What's included
1 video4 readings1 assignment
Show info about module content
1 video•Total 5 minutes
Towards distributed FPGA-based systems•5 minutes
4 readings•Total 325 minutes
Virtualized Execution Runtime for FPGA Accelerators in the Cloud [suggested readings]•105 minutes
A cloud-scale acceleration architecture [suggested readings]•120 minutes
Enabling Flexible Network FPGA Clusters in a Heterogeneous Cloud Data Center [suggested readings]•90 minutes
Politecnico di Milano is a scientific-technological University, which trains engineers, architects and industrial designers.
From 2014 Politecnico di Milano started the release of several MOOCs, developed by the service for digital learning METID (Methods and Innovative Technologies for Learning), giving everybody the chance to enhance personal skills.
When will I have access to the lectures and assignments?
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
What will I get if I subscribe to this Specialization?
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Is financial aid available?
Yes. In select learning programs, you can apply for financial aid or a scholarship if you can’t afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, you’ll find a link to apply on the description page.