mikrocontroller.net

Forum: FPGA, VHDL & Co. folgende HDL ADVISOR Anweisung ?


Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, beim systhetisieren bekommen ich folgende Meldung ...


INFO:Xst:2117 - HDL ADVISOR - Mux Selector <arbiter> of Case statement
line 0 was re-encoded using one-hot encoding. The case statement will
be optimized (default statement optimization), but this optimization
may lead to design initialization problems. To ensure the design works
safely, you can:
     - add an 'init' attribute on signal <arbiter> (optimization is
then done without any risk)
     - use the attribute 'signal_encoding user' to avoid onehot
optimization
     - use the attribute 'safe_implementation yes' to force XST to
perform a safe (but less efficient) optimization


Kann mir jemand sagen was hier genau optimiert wird ?

 danke
   Chris

Autor: Tobias O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die einzelnen Zustände müssen vom Synthesewerkzeug irgendwie auf
Gatterebene umgesetzt werden. Dies geschieht durch Interpretieren der
Zustände der Zustandsmaschine als Bitvektor. One Hot bedeutet, dass in
dem Bitvector alle Bits auf Null gesetzt werden außer das Bit, welches
dem aktuellen Zustand entspricht.

Beispielsweise deine Zustandsmaschine hat 3 Zustände. Die drei
Bitvectoren, die das Synthesewerkzeug den Zuständen zuordnet (one hot)
sind dann:
Zustand 1 = "001"
Zustand 2 = "010"
Zustand 1 = "100"

Falls keine Vorinitialisierung vorgenommen wird befindet sich der vom
Synthesewerkzeug erzeugte Bitvector in einem undefinierten Zustand. Es
könnte passieren, dass mehr als ein Bit des Bitvectors gesetzt ist was
ein undefiniertes Verhalten deiner Zustandsmaschine zur Folge hätte.

Das Synthesetool will dich nur darauf hinweisen das du
durch eine Vorinitialisierung dafür sorgen sollst, dass sich der
Zustandsspeichers deines Automaten in einem definierten Ausgangszustand
befindet. Andernfalls gibt es "Constraints" die vom Synthesetool
vorgeschlagen werden.

Falls du ein Reset für deinen Implementierung verwendest kannst du die
Warnung getrost ignorieren. Dann hast du ja schon einen definierten
Anfangszustand nach dem setzen des "Reset".

Autor: chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke sehr.
 Chris

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.