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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.