www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Testbenches/ucf


Autor: erschlagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich bin nach einer kleinen Pause dabei, systematisch weiter zu üben. Als 
nächstes steht die Verifikation von meinem Mist auf dem Stundenplan, 
sprich verwendung von Testbenches.
Dazu lassen sich sicher Fragen wieder nicht vermeiden, die kommen dann 
wohl im Laufe der Tage.

Meine erste Frage dreht sich aber um das ucf. In ise kann man das ja als 
Textfile bearbeiten oder auf die grafischen Tools zurückgreifen. Geht 
auch gemischt? bzw wie macht ihr das.
Gehäuse Pins über  NET "xyz"   LOC = ""; funktioniert, da braucht man 
das Assign Package Pin sicher nicht. Zumal wenn man einen Rohling für 
ein Gehäuse erstellt hat.
ABER die Frage zu den timing constraints: WAS sollte/müsste/könnte da 
sinnvoll angegeben werden? Im 'Create Timing constraints' werde ich mit 
unzähligen Angaben zugeworfen da weiß ich gar nicht was relevant ist. 
Per ucf texteingabe habe ich NET clk PERIOD = 1 ns ; astronomisch 
eingestellt und zum Glück geht die Implementierung dann auch den Bach 
runter.
Ein realistischer, aber schneller Takt würde die Synthese entsprechend 
veranlassen, anders zu routen oder wie muss man sich das vorstellen? Und 
wie sieht es mit Pad to pad delay Angaben aus? Sieht man die im 
datenblatt nach (anders ist ja auch nichts in Erfahrung zu bringen denke 
ich) oder können diese ignoriert werden?

Wie immer -erschlagen-.

danke euch

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Geht auch gemischt?
Ja, aber der Wizzard sortiert dir u.U. alle deine liebevoll von Hand 
eingefügten Constraints um... :-/

> bzw wie macht ihr das.
Anlegen mit der grafischen Oberfläche und danach bearbeiten per 
Texteditor.

> WAS sollte/müsste/könnte da sinnvoll angegeben werden?
Mach ein synchrones Design und gib für den Anfang nur mal deine 
Taktfrequenz vor.

> Ein realistischer, aber schneller Takt würde die Synthese entsprechend
> veranlassen, anders zu routen oder wie muss man sich das vorstellen?
Ja, auf Kosten der Rechenzeit...
Evtl. mußt du dann in P&R entsprechende Optimierungsvorgaben anpassen. 
Das sollte aber für einen Anfänger (noch) nicht nötig sein.
Wenn du 50 MHz erreichen willst, dann gib 50 MHz ein. Wenn du das dann 
nicht erreichst, dann nimmst du die Statische Timinganalyse und siehst 
nach, in welchem Kombinatorikpfad es klemmt.

> wie sieht es mit Pad to pad delay Angaben aus?
Die sind sowieso nur für kombinatorisches Routing zwischen 2 Pins nötig. 
Und da wirst du kaum einen Pfad haben, der sowas braucht. Sobald ein FF 
dazwischen ist, gelten andere Constraints.

Autor: erschlagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke dir.
ja, ich will es nicht übertreiben und alles über Anfängerlevel hinaus 
soweit möglich ignorieren :-)
Während des rumprobierens schon eine konkrete testbench Frage:
habe erfolgreich eine Simulation gemacht. (dabei kommt es mir noch 
bischen wie Lotto vor, ob die Sourcen an der richtigen Stelle stehen)

Testvektoren so definiert:
bin_s <= x"00", x"01" after 50 ns, x"80" after 100 ns, x"ff" after 120 ns;

soweit so gut für t==0 gibts es noch eine Warning aber es klappt. Da ich 
aber 255 Werte testen möchte ist das etwas lästig. Also Versuch mit for 
Schleife. Das hakt aber gewaltig:
bin_s <= x"00";

for t in 0 to 20 loop
   bin_s <= bin_s + 1;
   wait for 50 ns;
end loop;

Wie macht man so was?



Außerdem zur Simulation: die behavioral Simulation klappt. (rudimentär, 
ok. Aber das wird schon) Wenn ich aber irgenwo Schaltzeiten oder interne 
delays sichtbar machen will wie manchmal schon gesehen, hätte ich an den 
Reiter "post route simulation" gedacht. Da geht gar nichts. Muss ich 
dafür eine irgendwie anders geartete tb machen?

Autor: Klaus Falser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, die Schleife stimmt soweit, das Gane muß natürlich noch in einen 
Prozess.

Nur das Rechnen mit bin_s ist möglicherweise so nicht empfehlenswert, je 
nachdem von welchem Type bin_s ist.

Ich vermute, bin_s ist als std_logic_vector definiert.
Damit kann man zwar, aber man sollte keine Berechnungen machen.
Ein std_logic_vektor ist an und fürsich eben noch keine Zahl, sondern 
nur eine Reihefolge von bit. Wie diese als Zahl interpretiert wird 
(unsigned, signed oder gar als float) ist anwendungs-spezifisch.

Man sollte zum Rechnen das Paket numeric_std verwenden.
Dieses stellt unsigned und signed Typen einer bestimmten Länge zur 
Verfügung, die dann einfach in einen std_logic_vector gecasted werden 
können.

Oder Du rechnest mit integer typen, und wandelst diese mit 
entsprechenden Funktionen in std_logic_vector um.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Oder Du rechnest mit integer typen, und wandelst diese mit
> entsprechenden Funktionen in std_logic_vector um.
Zähler und alles, womit gerechnet werden soll, mache ich auch mit 
Integern und wandle sie für die Übergabe um (weil der Port idR. 
std_logiv_vector ist). Du könntest auch mit Vektoren rechnen, aber ich 
empfehle statt der alten Synopsis-Libs wie Klaus die aktuelle 
numeric_std. In der gibt es dann passende Casts und Konvertierungen: 
http://www.lothar-miller.de/s9y/archives/14-Numeric_Std.html

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@erschlagen:
> "post route simulation" gedacht. Da geht gar nichts.

Die Xilinx-Bibliotheken verwenden intern einen eigenen Reset. Da musst 
Du erstmal sowas wie 100 ns warten, ehe Dein Design losrennt.

Duke

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.