www.mikrocontroller.net

Forum: FPGA, VHDL & Co. VHDL std_logic Don't Care '-' verwenden


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich implementiere gerade an einem Interface zu einem Xilinx MIG DDR2 
Design. Dabei gibt es eine Reihe von Situationen, in denen ich nur noch 
Dummy-Daten ans Interface geben muss, um die notwendige Länge für einen 
Burst zu erreichen, die Daten werden aber mit Hilfe der Data Mask 
Signale raus zum Speicherbaustein maskiert.

Ich frage mich jetzt, ob man dabei etwas gewinnt, wenn man an den 
Stellen wo diese Dummy-Daten auftreten ein Don't Care '-' zuweist, da 
dann das Synthesetool mehr Freiheitsgrade zur Optimierung hat. Wenn ich 
nichts zuweise muss das Tool die Schaltung so bauen, dass die FFs keinen 
neuen Wert zugewiesen bekommen, wenn es ein Don't Care sieht sollte da 
was möglich sein (beim Flattening sollten mehr Vereinfachungen der 
Gleichungen möglich sein).

Macht das irgendjemand von euch so oder hat jemand mit so etwas schon 
Probleme gehabt?

LG
Matthias

Autor: berndl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

kannst du versuchen, alternative waere, den letzten Wert zu halten. 
Kostet zwar einen Mux, aber eventuell brauchst du den sowieso...

Autor: John K. (juliusk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Matthias,
bei der Synthese sollte das eigentlich keinen besonderen Unterschied 
machen, da der Platz für die Daten ja ohnehin reserviert werden muss. 
Aber du könntest das natürlich so machen wie du sagst.
Allerdings überlege ich gerade, ob es in dieser Situation nicht 
sinnvoller ist, den Puffer zunächst mit "others => '0' aufzufüllen und 
anschließend an den betroffenen Stellen mit den Daten zu überschreiben. 
Das würde könntest du dann auch mit '0' machen, das '-' hat dann keine 
bessere Wirkung mehr.

Viele Grüße,
Julius

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Xilinx empgiehlt es zumindest Signale die don'T care sind auch als 
solche zusetzen, Nachteile hat man auf jedenfall nicht dadurch, bringt 
manchmal ein paar weniger benötigte Recourcen, da die Synthese sosnt auf 
Zwang versucht den alten Zustand beizubehalten.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Läubi: Wenn Xilinx es empfiehlt und ich verwende ihr Synthesetool dann 
gibt das schon ein besseres Gefühl.

@berndl: Das Halten des letzten Werts ist es ja eigentlich, was ich vom 
Synthesetool fordere, wenn ich in einem getakteten Prozess keine 
Zuweisung mache. Die Frage ist, ob Don't Care bessere Ergebnisse bringt.

@Julius Krieg: Nach meinem Verständnis könnte das schlechtere Ergebnisse 
bringen, da ja dann die logischen Gleichungen umfangreicher werden.


Danke jedenfalls für die Antworten.

Autor: sgersten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde es schon fast befremdlich, dass Xilinx empfiehlt eine 
explizite Zuweisung von Don't care vorzunehmen. Für das Synthesetool ist 
das zwar kein Problem, aber eine formale Verifikation des 
Syntheseergebnisses wird schwieriger. Der Flächengewinn ist 
typischerweise minimal, deswegen sieht man ja auch oft die Variante, die 
Julius beschreibt. Ein weiterer Punkt hat mich jetzt stutzig gemacht: 
Dummydaten zum Bautein, die maskiert werden. Schon allein aus Gründen 
der Stromaufnahme sollten doch die Leitungen auf konstantem Pegel 
bleiben? Vielleicht kann das Ausgangsflop einfach für diese Takte kein 
Enable bekommen?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich muss zugeben, dass der Stromverbrauch mir egal wäre (das Design wird 
auf maximal einem halben dutzend Boards eingesetzt), eher würden mir 
Dinge wie höhere EMI Belastung wg mehr Schaltvorgängen Sorgen machen.

Auch gibt es ein anderes Problem, die Ausgangsregister sind DDR im 
SAME_EDGE Modus, es kann nun sein, dass die Daten für die steigende 
Flanke noch gültig sind, die für die fallenden aber nicht mehr, das 
Clock Enable gilt aber für beide Eingänge. Abgesehen davon will ich 
nicht unbedingt in den vom MIG erzeugten Code hineingreifen, wenn es 
nicht unbedingt notwendig ist.

Mir geht es auch weniger um den Flächengewinn sondern eher um besseres 
Timing-Verhalten, Don't Care Ausgangszustände sollten nach meinem Gefühl 
dafür Sorgen, dass die logischen Verknüpfungen weniger Variablen 
enthalten (man denke an KV-Diagramme) und die LUT-Strukturen zwischen 
den FFs weniger Ebenen haben müssen, was Routingaufwand und 
Durchlaufzeit verringert und dann vielleicht den Unterschied darstellt, 
ob man ein Design im Grenzbereich noch durch die Timinganalyse bringt 
oder nicht.

LG
Matthias

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

also wenn Du mich fragst, ob eine Don't Care oder irgendeine Zuweisung 
(z.B. Nullen) an der Stelle hinsichtlich des Timings vorteilhafter ist: 
Das ist Lesen im Kaffeesatz. Wenn das Timing im Grenzbereich liegt, dann 
liegt der Hase woanders im Pfeffer begraben. Solltest Dir mal
die statische Timing-Analyse genau anschauen, um die wirklich kritischen 
Pfade zu identifizieren.
Kannst du denn schon sagen, ob du dich im (von dir definierten) 
Grenzbereich befindest ?


Gruß,
SuperWilly

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo SuperWilly,

an der DDR2 Ecke denke/hoffe ich, dass ich keine Probleme bekommen 
sollte. Es geht mir eher um allgemeine Überlegungen, sozusagen zur 
Entwicklung meines "Coding Styles".

LG
Matthias

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.