Ich arbeite an einem großen FPGA-Design und bin sehr nahe an den Ressourcengrenzen des FPGA, das ich derzeit verwende, dem Xilinx LX16 im CSG225-Paket.
Das Design ist ebenfalls fast vollständig, passt aber momentan nicht mehr in das FPGA. Ich kann Teile ausschalten, damit sie passen. Ich muss jedoch den Ressourcenverbrauch reduzieren, um das Design zu vervollständigen und die Zeit- und Größenanforderungen zu erfüllen.
Ich würde gerne wissen, ob es in unseren Berichten Tools gibt, mit denen ich feststellen kann, welche Teile meines Designs die meisten Ressourcen verbrauchen. Mein Design ist nicht partitioniert und auf etwa ein Dutzend oder mehr VHDL-Module aufgeteilt.
Xilinx-Timing-Berichte sind fantastisch, aber jetzt muss ich wissen, wo ich in Bezug auf Platzersparnis mein Bestes geben kann.
Es fällt mir auch schwer zu sagen, welche Art von Ressourcen mir ausgehen oder welche Auswirkungen diese Ressourcen haben.
Ein weiteres Ärgernis ist, dass Komponenten, die früher das Timing erfüllten, mit zunehmender Größe des Designs allmählich versagen, weil ihre Platzierung nicht mehr so ideal ist.
Derzeit verwende ich die statischen Zeitberichte für Post-Place und Route sowie den SmartXplorer. Ich verwende Designstrategien, um das Timing zu optimieren.
Nachdem ich einen Teil meines Designs deaktiviert habe, damit es passt, sind hier einige der Ergebnisse:
Slice-Register-Auslastung: 42% Slice-LUT-Auslastung: 96% Anzahl der vollständig genutzten LUT-FF-Paare: 38% Bedeutet dies, dass ich nur wenig Register habe, aber viel Gate-Nutzung?
Gibt es Tools, mit denen Entwickler den Bereich optimieren oder zumindest mehr Einblick in ihren Code erhalten können?
Update: Nachdem ich mir die Module Level Utilization angesehen hatte, stellte ich fest, dass ich überall kleine asynchrone Kleber-Fifos hatte, die ungefähr 30% der gesamten LUTs ausmachen. Ich verwende sie als Cross-Clock-Domain-Kleber für Hochgeschwindigkeitsbusse. Ich sollte in der Lage sein, diese zu beseitigen, da die Uhren eng miteinander verbunden sind. (120 MHz Eingang, erzeugt 100 MHz und 200 MHz über DCMs)