mikrocontroller.net

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


Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: foo (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philip Kirchhoff (plip)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: FPGA Spezialist (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rick Dangerus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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 
:-(

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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...:-)

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Knaller ist die Aufgabenstellung.

Autor: Mathi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philip Kirchhoff (plip)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.