Forum: FPGA, VHDL & Co. case langsamer als verschachtelte if-abfragen?


von Andi Z. (duderino65)


Angehängte Dateien:

Lesenswert?

hallo,

ich habe in meinem vhdl design ein prozess mit einigen if abfragen. der 
prozess berechnet 3 zähler uber die andere prozesse gesteuert werden.

bei einem timing-constraint von 25mhz hatte ich keinerlei timingprobleme 
und die max frequenz die vom nach dem routing usw berechnet wurde lag 
bei ca 77Mhz.

Report Summary - (if-then-else)
--------------
------------------------------------------------------------------------ 
---
Preference                              |   Constraint| 
Actual|Levels
------------------------------------------------------------------------
                                        |             |           |
FREQUENCY PORT "RXC" 25.000000 MHz ;    |   25.000 MHz| 77.435 MHz|   2
                                        |             |           |
------------------------------------------------------------------------


nun habe ich diesen prozess so umgeschrieben, dass dieser 4 states 
enthält und in 3 davon eine if und elsif abfrage läuft.
also so wie im anhang.
auch hier gabs keine errors. jedoch war die max frequenz bei ca 72Mhz.

Report Summary  - (case)
--------------
------------------------------------------------------------------------
Preference                              |   Constraint| 
Actual|Levels
------------------------------------------------------------------------
                                        |             |           |
FREQUENCY PORT "RXC" 25.000000 MHz ;    |   25.000 MHz| 72.098 MHz|   2
                                        |             |           |
------------------------------------------------------------------------


mich irritiert es etwas da ich dachte das case-anweisungen doch 
"schneller" sind. also hier gibt es keine priorisierung.

im Pathtracer habe ich nun nachgesehn und dort ist mir aufgefallen, dass 
der längste pfad im if-then-else prozess steckt.
beim design mit den states ist der längste pfad in einem anderen 
prozess.
sprich: laut pathtracer ist das design mit den states schneller.

das ist alles aber irgendwie wiedersprüchlich...

weiss jemand was da passiert? die max. freq wird ja aus dem längsten 
kombi. pfad berechnet.

ich verwende den lattice machXO 2280 und den ispLever7.2.

mfg

Andi

von max (Gast)


Lesenswert?

ich schätze mal:
nachdem dein timing-constraint so easy zu erfüllen ist und dein baustein 
vielleicht so gut wie leer ist(?) schmeißt der einfach alle teile 
irgendwo zufallsmässig in den baustein und spart sich die optimierung, 
weil die eh nur zeit braucht und nicht benötigt wird ;)

wenn du das gleiche nochmal durchlaufen lässt werden wohl andere werte 
rauskommen. kannst du das mal ausprobieren? würd mich interessieren ;)

von Andi Z. (duderino65)


Lesenswert?

hi,

nein da ändert sich nichts.
du hast da schon recht. ich habe mehrere module die jedoch getrennt sind 
und ich diese auch getrennt teste. also noch ist nichts auf dem chip. 
den hab ich noch nicht :-). später kommen dann noch mehr module parallel 
zusammen. sowohl von diesem design als auch von einem anderen. vom platz 
her wirds schon reichen. dann werden sich die werte aber doch stark 
ändern. das hab ich aber noch nicht ausprobiert. bekomme in den nächsten 
tagen meine platinen mit den MachXOs drauf und dann muss ich erstmal 
jedes modul testen. vllt wird sich dann das case-design doch rechnen?!?!

mfg

Andi

von Andi Z. (duderino65)


Lesenswert?

...

also der platzbedarf des designs liegt gerade bei ca 6-7%. inklusive des 
distributed ram der auf den pfu's (?) liegt.

kann ich dem eigentlich sagen das er nur für den dist. ram die pfu's 
verwenden soll. also das die restliche logik auf den normalen LUTs 
liegen soll??

von max (Gast)


Lesenswert?

du könntest den optimierer mal ärgern und das timing constraint so weit 
hochschrauben bis es nicht mehr erfüllbar ist.

was bei beiden implementierungen rauskommt müsste man ja im RTL 
schematic sehen..

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> was bei beiden implementierungen rauskommt müsste man ja im RTL
> schematic sehen..
Das RTL wird unabhängig von den Timing-Constraints gleich bleiben...
Bestenfalls kann der Placer und der Router noch was gutmachen.

von Andi Z. (duderino65)



Lesenswert?

hallo,

habe die constrains mal hochgeschraubt. im case fall sieht es denke ich 
doch besser aus. bei 100mhz entsteht z.b. ein fehler der jedoch in einem 
anderen process steckt und diese nur aus if-else-abfragen besteht.

habe mal die reports angehängt.
beide designs jeweils mit 80 und 100 mhz constraints


mfg

Andi

von Andi Z. (duderino65)


Lesenswert?

ups die html dateien gehen nicht...
doofe sache...

von Andi Z. (duderino65)



Lesenswert?

so nochmal...

naja die fehlerhaften pfade sind da doch alle in anderen prozessen.
mal sehn wie es dann aussieht wenn alles zusammen läuuft. irgendwann...

mfg

Andi

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.