case langsamer als verschachtelte if-abfragen?

OP #1504745
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
Angehängte Dateien:
Gast #1504759
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 ;)
OP #1504773
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
Gast #1504801
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..
OP #1504831
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren