Ich entwickle eine parametrisierte systolische Schaltung in VHDL unter Verwendung von Generika. Es zeigt Regelmäßigkeit in 2 Dimensionen.
Ich bin dabei, es auf Xilinx FPGA zu synthetisieren. Ich vermute, es lohnt sich, den Logiksynthesizer über diese Regelmäßigkeit zu informieren, um eine bessere Leistung im Endbereich zu erzielen.
Wie kann ich das machen ?
Ich habe bereits die Option "Hierarchie beibehalten" in Xilinx ISE entdeckt, aber es ist nicht klar, ob sie den Job macht.
Grob gesagt könnten Sie das FPGA planen und in regelmäßige Abschnitte unterteilen und dann Zuweisungen verwenden, um bestimmte Instanzen der Hierarchie in jeden Block zu verschieben. Dies wird Ihnen wahrscheinlich ein schlechteres Timing-Ergebnis geben, als dem Planer völlige Freiheit zu geben, da es eine minimale Routing-Verzögerung zwischen Blöcken erzwingt, die eine freie Platzierung eliminieren würde, indem sie näher zusammenrücken.
Sie könnten etwas an den Laufzeiten des Placers/Routers einsparen, aber wenn sie versuchen, diese künstlichen Entfernungen zu umgehen, ist dies möglicherweise kein Gesamtgewinn. Ich würde es einfach den Werkzeugen überlassen, bis Sie ein Design haben, das funktioniert.
Wenn Ihre Schaltung aus einfacher Logik besteht, wird es schwierig sein, das Design wirklich so einzuschränken, dass es in die FPGA-Matrix passt. Sie sollten wahrscheinlich die Tools des FPGA-Anbieters die Arbeit erledigen lassen. Wenn Sie einen ASIC erstellen müssten, könnten Sie wirklich eine Zelle entwerfen und sie dann über die Oberfläche kopieren und einfügen. Bei FPGAs müssen Sie sich mit der Tatsache auseinandersetzen, dass sie nicht so regelmäßig sind, wie sie scheinen.
Wenn Sie feste Ressourcen wie Speicherblöcke oder Multiplikatoren verwenden, können diese einfacher eingeschränkt werden (unter Verwendung von „LOC“-Einschränkungen), die restliche Logik wird um sie herum angeordnet ...
Siehe Xilinx „CGD“ : Constraint Guide
Paebbels
JCLL
Paebbels