Ist es möglich, den kritischen Pfad in einem bestimmten Teil des Designs zu finden?

Ich habe eine RTL-Beschreibung einer Schaltung in VHDL geschrieben, die hierarchisch ist, und ich verwende Altera Quartus II; Mein Design trifft auf Timing. Ich hatte vorerst mit create_clock eine Beschränkung auf 50 MHz Taktfrequenz (20 ns Periode) eingestellt.

Ich habe derzeit einen Durchhang von etwa 10 ns im Design. Das Design enthält einen Nios II, verbunden mit einem benutzerdefinierten Design, das eher ein komplexes Design mit mehreren Hierarchieebenen ist. Angenommen, ich möchte den Worst-Case-Pfad in meinem benutzerdefinierten Design finden, beginnend mit einem bestimmten Block und somit alle Dinge darunter (in der Hierarchie), wie würde ich das in TimeQuest machen? Ist es möglich? Momentan scheint der Timing-Engpass der Nios II zu sein.

Antworten (1)

Selbst wenn Sie es finden können, ist es wahrscheinlich keine aussagekräftige Information: Die Tools hören auf, das Timing zu optimieren, sobald es den Anforderungen (Taktfrequenz) entspricht. Wenn Sie die Höchstgeschwindigkeit Ihres Designs wissen oder sehen möchten, wo Sie mit der weiteren Optimierung beginnen sollten, damit es bei höheren Taktraten funktioniert, sollten Sie Ihre Komponente unabhängig synthetisieren und die Taktrate schrittweise erhöhen, bis sie nicht mehr dem Timing entspricht. Dann können Sie sich ansehen, welche Pfade dazu führen, dass das Timing fehlschlägt.

Es wird nicht genau mit dem kombinierten Design übereinstimmen, da die E/A-Platzierung und die verfügbaren Platzierungsoptionen nicht identisch sind, aber im Allgemeinen befindet sich der kritische Pfad im selben Teil des Designs. Manchmal kann sich nach der Integration Ihrer Komponente in ein großes Design der kritische Pfad ändern, da für einige Komponenten nur noch sehr suboptimale Platzierungen übrig sind; Ich habe dies hauptsächlich für Block-Ram gesehen. Aber es gibt nichts, was Sie gegen diese Fälle tun können, außer sich das spezifische kombinierte Design anzusehen.

Ok, also sollte ich nur den komplexen benutzerdefinierten Logikblock synthetisieren und alle virtuellen Pins verwenden, wenn ich eine vollständige Kompilierung durchführe.