Naja. Herstellerspezifisch allemal, aber bisher ist das ja eigentlich
nur Xilinx die das anbieten (Altera hat es für 28nm angekündigt).
Im Groben kann man die Xilinx Ansätze in 2 Kategorien aufteilen:
1) Difference Based (gibts nicht mehr)
2) Partition Based
Difference Based funktionierte durch die sog. "Glitchless
Reconfiguration", welche es erlaubt teile des FPGAs zu rekonfigurieren
und dabei garantiert, dass sich Konfigurationsspeicherbits die nach PR
wieder den gleichen Wert haben nicht glitchen während/durch die
Rekonfiguration. Das erlaubt es dass man Teile des FPGAs rekonfiguriert
indem man einen Teil des Konfigurationsspeichers ändert, einen anderen
Teil nicht (mit den gleichen Daten überschreibt). Bei Difference-Based
werden dann 2 Designs auf Bitstream-Ebene verglichen. Doku dazu ist
XAPP290.
Partition Based funktioniert auf der Ebene von Design-Modulen, welche
man als rekonfigurierbar definiert. Diese werden dann für sich
synthetisiert sodass man für ein solches Design statische von
rekonfigurierbarer Logik unterscheiden kann. Das ging früher über Xilinx
9.1/10.X mit einem zugangsbeschränktem Programm (Early Access EAPR)
welches diese Toolchain patchte. Synthese erfolgt in ISE, Rest über
Planahead.
In ISE 11.X gabs auch irgendeine PR zu der ich nichts sagen kann.
ISE 12.X hat das nun als offizielles Feature eingeführt. Der Partitioned
Ansatz ist weiterhin der gleiche, allerdings der Workflow ein anderer:
Beim EAPR hat man rekonf. Logik als Module synthetisiert, dann die
Statische und final alles (das kann gerne mal 1 Nacht dauern) in einem
Prozess "merge" zusammengeführt. Bei 12.1 Hat man hingegen
"Konfigurationen" die jew. aus statischer Logik und einer Auswahl von
rekonf. Instanzen besteht. Dann wird das synthetisiert und geroutet,
anschlißened wird der statische Anteil extrahiert und für weitere
Konfigurationen (rekonf. Module anders belegt) verwendet. Am Ende hat
man für jede Konfiguration einen vollen Bitstream und für jede Belegung
der rekonf. Module einen kleineren partiellen Bitstream. Insgesamt muss
man jede Variante eines rekonf. Moduls (die versch. Implementierung) in
mind. 1 Konfiguration drinne haben.
Doku hierzu:
EAPR: UG208
Neuerer Flow: UG702, UG 743, UG744
Gruß, Micha.