Forum: FPGA, VHDL & Co. Simulation -> Synthese = geht nicht


von Philip K. (plip)


Lesenswert?

Servus,

so langsam geht meine Diplomarbeit gen Ende und leider funzt die 
Synthese meines Systems noch nicht. Die Simulation geht einwandfrei.
Was kann ich abgesehen von einer Timing-Simulation tun, um rauszukriegen 
warum das so ist?
Und gibt es typische Designfehler, die in der Simulation keine Rolle 
spielen, in der Synthese aber nicht funktionieren, ohne dass man dafür 
eine Warnung oder Fehler bekommt?

von foo (Gast)


Lesenswert?

Sowas kann schmerzhaft werden... hab schon von Diplomarbeiten
gehört die "am Ende mal alles synthetisieren" wollten...
jo.... Pustekuchen wars.... da war nix zu retten....

Dein Tool gibt normalerweise Fehlermeldungen....
es gibt einen Haufen Sachen die man zwar in VHDL schreiben kann,
die aber nicht synthetisierbar sind...
"after" zb...

Was sagt dein Tool denn?

von Mathi (Gast)


Lesenswert?

Ein typischer Designfehler können Domänenübergänge sein. Wenn Du mehrere 
Taktdomänen hast, musst Du Daten die von einer Domäne in eine andere 
gehen mit mindestens 2 Registerstufen rüber synchronisieren. Sonst kann 
ein metastbiler Zustand entstehen und nix geht.

von Philip K. (plip)


Lesenswert?

Abgesehen von Meldungen für offene Signale oder welche, die konstant 0 
sind bekomme ich eigentlich nichts.
Ich habe einen Domänenübergang, ein Audiosignal wird per SPDIF 
übertragen und der Wishbone-Bus des Empfängers hat einen anderen Takt 
als mein System. Dazwischen habe ich ein asynchrones FIFO mit zwei 
Takteingängen.
In der Simulation funktioniert der Übergang einwandfrei.

von Falk B. (falk)


Lesenswert?

@ Philip Kirchhoff (plip)

>Abgesehen von Meldungen für offene Signale oder welche, die konstant 0
>sind bekomme ich eigentlich nichts.

Was meinst du mit "Synthese geht nicht"? kann das Design nciht 
synthetisiert werden (Abbruch mit Fehlermeldung) oder läuft dein System 
auf dem realen FPGA fehlerhaft?

>In der Simulation funktioniert der Übergang einwandfrei.

Das ist meistens so ;-)

MFG
Falk

von Philip K. (plip)


Lesenswert?

Geht nicht heißt in diesem Fall, dass das System bei identischem 
Eingangssignal nicht dieselben Ausgangsdaten liefert, wie in der 
Simulation.

von Falk B. (falk)


Lesenswert?

@  Philip Kirchhoff (plip)

>Geht nicht heißt in diesem Fall, dass das System bei identischem
>Eingangssignal nicht dieselben Ausgangsdaten liefert, wie in der
>Simulation.

Dann sollte das ein Diplomand auch so fomulieren können.
Naja, da wirst du wohl debuggen müssen. Schrittweise vom Eingang die 
Daten anschauen, entweder per Oszi oder in einem BRAM aufzeichen lassen. 
Wenn du hast per Logic Analyzer.

MfG
Falk

von FPGA Spezialist (Gast)


Lesenswert?

>Ein typischer Designfehler können Domänenübergänge sein. Wenn Du
>mehrere Taktdomänen hast, musst Du Daten die von einer Domäne in
>eine andere gehen mit mindestens 2 Registerstufen rüber synchronisieren.
>Sonst kann ein metastbiler Zustand entstehen und nix geht.

Solche Aussagen sind z.B. solche tyischen Fehler!

Die Synchronisation behebt lediglich das Problem des wechselnden Taktes 
zur Zeit der Auswertung. Metastabilität hat damit (noch) nichts zu tun. 
Auch ohne metastabile FFs bekommt man zum Flankenwechsel undefinierte 
Daten, die bei Bussen Probleme machen.

Einsynchronsieren alleine liefet zwar logisch stabile Signale, reicht 
aber allein auch noch nicht. Es muss auf logische Konsistenz getestet 
werden. Dies erfordert den internen Datenvergleich oder einen externen 
Trigger.

von Rick Dangerus (Gast)


Lesenswert?

Zum Debuggen kann ich diesen Logic-Analyzer wärmstens empfehlen:
http://www.sump.org/projects/analyzer/

Vorausgesetzt, man hat eine serielle Schnittstelle und etwas Ressourcen 
über.

Rick

von Philip K. (plip)


Lesenswert?

Leider hab ich noch nie mit nem Logikanalyzer gearbeitet und wüsste 
jetzt auf die Schnelle auch nicht, woher ich einen organisieren könnte. 
Wie gesagt, die Zeit rennt...Ende Februar ist Abgabe und die 
Synthesergebnisse müssen auch noch in die Ausarbeitung einfliessen.
Ich verwende ohnehin ein UART, um die Ausgangsdaten wieder an den PC zu 
schicken und mit Matlab zu verarbeiten. Ich hab da jetzt mal noch ein 
großes FIFO zwischengeschaltet, dessen Eingang ich halt da hin biege, wo 
ich die Daten sehen will. Ist halt ein bisschen Gebastel und die 
Datenmenge ist etwas begrenzt, aber was besseres fällt mir grad nicht 
ein.

Ich denke nicht, dass die Arbeit als nicht bestanden gewertet wird, 
wenns am Ende nicht läuft, aber es dürfte schon arg auf die Note gehen 
:-(

von Falk B. (falk)


Lesenswert?

@ Philip Kirchhoff (plip)

>Datenmenge ist etwas begrenzt, aber was besseres fällt mir grad nicht
>ein.

Besser als nichts.

>Ich denke nicht, dass die Arbeit als nicht bestanden gewertet wird,
>wenns am Ende nicht läuft, aber es dürfte schon arg auf die Note gehen
>:-(

Muss man nur mit blumig-akademischen Worten verhüllen, dann spielt das 
keine nennenswerte Rolle. AKA Marketing.

MFG
Falk

von Philip K. (plip)


Lesenswert?

@Falk

Irgendwie benutzt Du aufallend häufig das Wort akademisch in 
herablassendem "Ton". Sollte da etwa eine Aversion vorhanden sein? :-)

Marketing ist eher nicht mein Ding, ich bin ein erklärter Freund von 
Ehrlichkeit und offenen Worten! Kommt bei Vorstellungsgesprächen leider 
nicht so gut...:-)

von Falk B. (falk)


Lesenswert?

@ Philip Kirchhoff (plip)

>Irgendwie benutzt Du aufallend häufig das Wort akademisch in
>herablassendem "Ton". Sollte da etwa eine Aversion vorhanden sein? :-)

Ihhhh woo!! ;-)

>Marketing ist eher nicht mein Ding, ich bin ein erklärter Freund von
>Ehrlichkeit und offenen Worten! Kommt bei Vorstellungsgesprächen leider
>nicht so gut...:-)

Ehrlichkeit ist ein Zier, doch weiter kommt man ohne ihr.

MfG
Falk

P.S. Zum Thema akademische Aversion. Wir hatten mal ein Praktikum, zum 
Thema Abtastung und FFT und so. Da wurde doch tatsächlich RAUSCHEN 
abgetastet, auch "zu langsam". Und dort sollte man dann "klar sehen", 
dass das Abtasttheorem verletzt wurde. Ich habs bis heute nicht gesehen. 
:-0

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gibt es irgendwelche "Sauereien" im Design (Latches, rückgekoppelte 
Mealy-Automaten, sonstige asynchrone Schaltungen)? Sind für Ein- und 
Ausgänge passende Timing-Constraints gesetzt und werden die eingehalten?

Warum versuchst du nicht mal eine Post-Place & Route-Simulation?

von Philip K. (plip)


Lesenswert?

Falk Brunner wrote:
>
> P.S. Zum Thema akademische Aversion. Wir hatten mal ein Praktikum, zum
> Thema Abtastung und FFT und so. Da wurde doch tatsächlich RAUSCHEN
> abgetastet, auch "zu langsam". Und dort sollte man dann "klar sehen",
> dass das Abtasttheorem verletzt wurde. Ich habs bis heute nicht gesehen.
> :-0

Das ist allerdings ein Knaller...

@Andreas

Latches gibt es nicht. Ich verwende ein paar asynchrone ROM-Speicher.
Automatentheorie ist bei mir schon ne Weile her, was ist mit 
rückgekoppelten Mealy-Automaten gemeint und warum sind die ein Problem? 
Ich habe keine Timing-Constraints selbst gesetzt und weiß auch gar nicht 
wie das geht.
Ich bekomme aber irgendwann die Meldung "all constraints were met", oder 
so...

von J. S. (engineer) Benutzerseite


Lesenswert?

Wieso ist das ein Knaller? Wenn das Rauschen nicht deterministisch 
eingespeist wurde, dürfte es schwer fallen, einen Soll-Ist-Vergleich zu 
machen. Das Abtasttheorem ist schon gültig, keine Sorge.

von Philip K. (plip)


Lesenswert?

Der Knaller ist die Aufgabenstellung.

von Mathi (Gast)


Lesenswert?

Schau Dir die Coverage von Deinen Constraints an. Die gibt an wieviel 
Prozent Deines Designs von den Constraints abgedeckt werden. Wenn der 
Wert sehr klein ist, musst Du constraints für die nicht abgedeckten 
Teile hinzufügen.

von Philip K. (plip)


Lesenswert?

Es funktioniert!!!

Gab zwei Fehler, die aber beide nicht im eigentlichen System, sondern in 
der Peripherie lagen:

1. 12 kHz-File abspielen bedeutet nicht, dass das S/P-Dif Signal eines 
mit 12 khz ist, es wird auf 48 kHz hochgesampled. Das war mir nicht 
bewusst. Erst als ich einen Sinus reingeschickt habe, hab ich 
festgestellt, dass der mit viel mehr Punkten pro Periode ankommt. Da 
mein System nur mit 12 kHz was anfangen kann, hat das nicht gefunzt. 
Gelöst hab ichs jetzt durch eine Unterabtastung.

2. Auch wenn man die Daten per UART entsprechend der Baudrate versendet, 
heißt das noch nicht, daß Matlab auch in dieser Geschwindgkeit einliest. 
Und wenn der Buffer überläuft gibts Datenmüll (zumindest so wie ichs 
gemacht habe).

Mann, bin ich froh dass es geht.

Ich möchte mich ganz herzlich bei allen bedanken, die mir bei diesem 
ganzen Zeug geholfen haben!

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.