Forum: FPGA, VHDL & Co. FPGA / VHDL Timing Frage


von Andreas Kratzsch (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe eine Frage zu den XST Timing Angaben
vom Xilinx Webpack 7.1 P4.

In meinem System habe ich Teile die etwas langsamer sind und
andere Teile die fast nichts tun und damit auch sehr schnell sind.

Natürlich möchte ich deswegen nicht das gesamte System mit dem
langsamen Takt betreiben.
Ich habe mir gedacht ich kann die Ausgänge der schnellen Teile
bereits nach wenigen Takten abfragen und die Ausgänge der
langsamen Teile bekommen einfach ein paar Takte mehr Zeit.

Wenn ich mir allerdings den Timing Report vom dem Beispiel Code
ansehe steht als maximaler Takt aber nur 24MHz drin.
Das entspricht dem Timing von der langsamen Multiplikation.
So wie es aussieht ignoriert der XST völlig daß ich den
Ausgang von langsamen Prozess erst nach 14 Takten abfrage.

Nach meinem Verständnis müsste doch die Zeit von 40ns
als "Maximum combinational path delay" erscheinen und
nicht als "Minimum period" ?

Was mache ich falsch ?

Kann ich jetzt einfach die 40ns durch 14 teilen und
davon ausgehen daß das System mit 2,8ns funktioniert ?

Der Beispiel Code ist natürlich nicht sehr sinvoll und soll
nur das Problem verdeutlichen.
Ich weiß daß man die langsame Berechnung im Beispiel Code
auch in kleine Schritte aufteilen kann, aber darum geht es nicht.

Danke für alle Hinweise.

Andreas

von Xenu (Gast)


Lesenswert?

>So wie es aussieht ignoriert der XST völlig daß ich den
>Ausgang von langsamen Prozess erst nach 14 Takten abfrage

So schlau ist der Synthesizer halt nicht, daß er das ausrechnet.

Die kombinatorische Logik mit der größten Durchlaufzeit zwischen zwei
Flip-Flops wird für die Taktberechnung herangezogen.

Du kannst allerdings Netze von der Timing-Berechnung ausschließen.
Bei Dir z.B. "output_slow_sig", indem Du Folgendes in Deine UCF-Datei
schreibst:

NET "output_slow_sig<0>" TIG;
NET "output_slow_sig<1>" TIG;
NET "output_slow_sig<2>" TIG;
NET "output_slow_sig<3>" TIG;
NET "output_slow_sig<4>" TIG;
NET "output_slow_sig<5>" TIG;
NET "output_slow_sig<6>" TIG;
NET "output_slow_sig<7>" TIG;


TIG steht für "Timing Ignore".

von Andreas Kratzsch (Gast)


Lesenswert?

Hallo Xenu,

ich habe das mal ausprobiert, leider ändert sich durch die
Constraints nichts am Timing.
Ich werde 2 verschiedene Konfigurationen benutzen,
eine mit der langsamen Berechnung und eine Dummy Konfiguration
mit der ich das Timing der restlichen Schaltung sehen kann.

Andreas

von Xenu (Gast)


Lesenswert?

>ich habe das mal ausprobiert, leider ändert sich durch die
>Constraints nichts am Timing

Komisch, bei mir schon.

Du hast Dir schon das Post-Place&Route-Timing angeschaut, oder?

von Andreas Kratzsch (Gast)


Lesenswert?

Hallo Xenu,

es gibt sogar direkt ein Constraint für das was ich benötge:

Timing constraint: TS_multi_cycle_path = MAXDELAY FROM TIMEGRP
"TG_inputs" TO TIMEGRP
        "TG_outputs" TS_clock * 3;

und es funktioniert sogar !

>>Du hast Dir schon das Post-Place&Route-Timing angeschaut, oder?
Nein, ich hatte mir das Timing nur im XST Synthesis Report angesehen.

Warum werden dort die Constraints nicht berücksichtgt ?

Andreas

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.