Forum: FPGA, VHDL & Co. Xilinx und seine Frequenz-Constaints


von JBB (Gast)


Lesenswert?

Kann es sein, dass die ISE ihre eigenen Berechungen nicht kapiert?

Solange ich mein Testdesign auf ganzzahlige 50 MHz = 20ns laufen lasse 
und die IOs mit <20ns fast input deklariere, frisst sie es.

Wehe aber ich will 60MHz nutzen, dann geht es rund: Er ermittelt intern 
eine Periode von 16,666 ns die natürlich mit den Inputs Constraints von 
16,6667 nicht passen wollen.

Ist das nur ein "feature" der aktuellen ISE?

Wie umgeht man das? Ich könnte auf 16ns gehen und damit virtuelle 60,x 
MHz im Design fahren, aber dann passt es mit der Testbench nicht.

Warum sind Xilinx-tools nur so sch....e?

von D. I. (Gast)


Lesenswert?

Also ich sehe das Problem nicht bei 16ns?

Du kannst doch die constraints auf 16ns belassen und trotzdem nur 60mhz 
anlegen und deine Testbench lässt du wie sie ist?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

JBB schrieb:
> eine Periode von 16,666 ns die natürlich mit den Inputs Constraints von
> 16,6667 nicht passen wollen.
Ich habe das Problem nicht ganz verstanden.
Wie kommst du auf irgendwelche Input-Contraints von 20 oder 16,666 ns?
DU SELBER mußt doch Constraints angeben. Und der Takt hat mit dem 
Eingangsrouting erst mal nichts zu tun.
Evtl. sagst du mal mehr zu deiner Aufgabe. Du könntest auch mal dien 
UCF-File und die passenden Fehlermeldungen posten, oder so...

von JBB (Gast)


Lesenswert?

es geht darum, dass er im editor 16,6667 als ns vorschlägt, was zu den 
60MHz passt. Anschließend frisst er es aber nicht. ich habe nun alles 
händisch auf 16,666 gestellt und es geht

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

JBB schrieb:
> es geht darum, dass er im editor 16,6667 als ns vorschlägt
Ja, warum und wo in welchem Editor wann denn?

> händisch auf 16,666 gestellt und es geht
Was denn?

> es geht
Ist doch gut...

von JBB (Gast)


Lesenswert?

Es ist der Constraint Editor. Er ermittelt aus der gegebenen Clock 
Frequenz einen Vorschlag für die IO path delays. Man sollte annehmen, 
dass das vorgeschlagene Ergebnis vom Tool verstanden wird :-)

von Alex (Gast)


Lesenswert?

Man kann doch im Constraint Editor auch die Periodenzeit in ns 
vorgeben..

von JBB (Gast)


Lesenswert?

Das ist das Problem: Man muss exakt die Zeit vorgeben, die die Synthese 
haben will. Die aber ist nicht die, die im Editor vprgeschlagen wird - 
jedenfalls gibt es Abweichungen:

NgdBuild:1212 - User specified non-default attribute value (16.667) was 
detected for the CLKIN_PERIOD attribute on DCM "mymcm_b/dcm_sp_inst". 
This does not match the PERIOD constraint value (16.666 ns.).  The 
uncertainty calculation will use the non-default attribute value.  This 
could result in incorrect uncertainty calculated for DCM output clocks.

Wie gesgt kommen die 16,666 aus dem Vorschlag, wenn man die IOs 
festelgen möchte und er dazu die CLK heranzieht.

von Fpgakuechle K. (Gast)


Lesenswert?

JBB schrieb:
> Das ist das Problem: Man muss exakt die Zeit vorgeben, die die Synthese
> haben will. Die aber ist nicht die, die im Editor vprgeschlagen wird -
> jedenfalls gibt es Abweichungen:
>
> NgdBuild:1212 - User specified non-default attribute value (16.667) was
> detected for the CLKIN_PERIOD attribute on DCM "mymcm_b/dcm_sp_inst".
> This does not match the PERIOD constraint value (16.666 ns.).  The
> uncertainty calculation will use the non-default attribute value.  This
> could result in incorrect uncertainty calculated for DCM output clocks.
>
> Wie gesgt kommen die 16,666 aus dem Vorschlag, wenn man die IOs
> festelgen möchte und er dazu die CLK heranzieht.

Sorry aber ich kann dir nicht folgen.
Constraint heisst Vorgabe und nicht "Empfehlung vom Tool". Du gibts vor
wie schnell die FF schalten (PERIOD Constraint) sollen. Ferner teilst du 
den Tool zwecks Kontrolle vor welchen Takt die DCM bekommen. 
(CLKIN_PERIOD). Sind keine Teiler etc in der DCM aktiv, sollten beide 
gleich. Das Tool teilt dir nur mit, das es sich für den langsameren als 
Vorgabe entschieden hat, weil das wohl der ist der den FPGA-taktet. Ich 
sehe hier grad keine Notwendigkeit den takt zweimal , dazu mit 
unterschiedlichen Werten vorzugeben und würde aus Gewohnheit nur PERIOD 
verwenden. Oder beiden in banchtbarten Zeilen den gleichen Wert 
zuweisen.

MfG,

von Hans (Gast)


Lesenswert?

Man sollte in der Tat die ns selber vorgeben. Wenn man Frequenzen 
benutzt, die krumm sind, hat die Synthese Poobleme, die entstehenen ns 
mit denen aus dem UVF in Einklang zu bekommen.

Ich mache es so, dass ich auf die nächstgelegene ns abrunde.

von JBB (Gast)


Lesenswert?

Die Frage ist ja, WIE!!

Ich setze z.B. die Frequenz in den DCMs auf 90MHz. Welches constraint 
setze ich dann an?  "11.1111ns" werden vom constraint editor 
vorgeschlagen, aber wenn ich die übernehme, gefallen sie der Synthese 
nicht. Sie möchte 11.111 - also eine 1 weniger. Das musste ich aber 
ausprobieren.

Derselbe Mist bei der Benuzung von plan ahead: Die angeblichen 11.765ns, 
die ijn ISE zur 85MHz Taktung prima passen, werden im p.a. als falsch 
angemahnt.

Plan Ahead und die ISE.Synthese sind an vielen Punkten nicht konsitent: 
Arbeitet man z.B. die location constraints mit p.a. ein, dann baut es 
sie mit eckigen Klammern, die von der ISE aber nicht erkannt werden und 
im Editor als unconstraint vorgeschlagen werden. Somit bekommt man dann 
in einem UCF redundante Informationen:

NET "output_v<0>" OFFSET = OUT 11.111 ns AFTER "sys_clk";
NET "output_v[0]" OFFSET = OUT 11.111 ns AFTER "sys_clk";

Aus der Vergangenheit errinere ich soetwas auch hinsichtlich der Gross- 
und Kleinschreibung. Warum kriegt es die Firma Xilinx nicht hin, sich 
intern auf eine Schreibweise zu einigen?

Ein weiterer Fehler, den ich beim Import eines ISe inplean ahead gesehen 
habe: Die time spec wird i.d.R. mit 50% d.c. angegeben, plean ahead 
liest hier aber nicht 50%, sondern 50 ns.

Wie schlampig wird dort bei Xilinx gearbeitet?

Die tools werden immer komplexer und integrierter und es wird immer 
schwerer, noch rein text-basiert zu arbeiten, die tool chain hat aber 
immer mehr bugs!

Inzwischen gehen teilweis mehr als 50% meiner Zeit in die Umgehung von 
xilinx bugs!

von Christian R. (supachris)


Lesenswert?

Kannst ja auf Rodin warten, da wird dann wieder alles anders. Vielleicht 
besser, aber eher nur anders. Auf jeden Fall wieder mehr text-basierter 
Design Flow. Bei mir hatte ich solche argen Probleme nicht. Und wenn da 
mal eine Info aus der DCM bezüglich der nicht 100% passenden Timing 
Contraints kommt, wen interessiert das? Dann gib halt lieber 11ns statt 
11.1111...ns an.

von JBB (Gast)


Lesenswert?

Ja, Warnung und Nichtfunktion sind schon zwei Paar Schuhe, jedoch sind 
für warnings eben nur dann sinnvoll nutzbar, wenn ein tool kritisch mit 
meinen Eingaben umghet und sie hinterfragt und nicht tonnenweise 
Scheinfehler ausspuckt, weil es mit sich selber nicht klar kommt.

Für mich ist das immer ein Hinweis auf saubere logische Arbeit und 
Fokussetzung in der Entwicklung. Viele Firmen täten gut daran, mehr in 
die Funktion zu stecken, statt ins Design. Ich habe absolut nichts 
davon, wenn sich während der Synthese viele bunte Kreise drehen. Lieber 
wäre es mir, man würde solche Inkonsistenzen rausschmeissen. Aber dazu 
haben die Programmierer dort offenbar keine Lust.

Ich habe auch immer noch ein grossen Problem, mir vorzustellen, dass 
eine Firma Logidesign beherrscht und komplexe Design bauen können will, 
wenn sie selbst nach vielen Jahren nicht mal einfachste 
Syntax-Geschichten in den Griff bekommt.

>Rodin
??

von Christian R. (supachris)


Lesenswert?

Wenn man Plan Ahead anfangs sagt, die Constraints Files in ISE Sytax 
anzulegen klappt das doch auch und alles ist kompatibel. Welche Version 
hast du denn.

Achja, Rodin:

"Rodin,  basierend  auf  PlanAhead,  löst  die  XILINX  Ent-
wicklungsumgebung ISE als solche ab. Damit hat der Ent-
wickler ein mächtiges Werkzeug mit zahlreichen Analyse-
sowie  interessanten  Constraining-Möglichkeiten  an  der
Hand."

"Mit  Einführung  der  XILINX  Release  Rodin  2012  wird
TCL  zur  bedeutenden  Skript-Tool  Flow  Unterstützung.
Nahezu  alle  XILINX  Tools  wie  PlanAhead,  ISE,  iSim,
EDK  oder  Chipscope  sind  bereits  TCL  unterstützt  und
bieten dem Anwender nicht nur eindeutige Implementie-
rungsabläufe  sondern auch benutzerspezifi sche Flow Steu-
erung. Derart erstellte Skripte können leichter gepfl egt wer-
den als GUI spezifi sche Menüführung und mit veränderten
Anforderungen fl exibler neu angepasst werden. "

Quelle: PLC2 Trainingsprogramm 2012: 
http://www.plc2.de/deutsch/education/pdfs/2012/PLC2-Programm-2012.pdf

von Georg A. (georga)


Lesenswert?

"TCL  zur  bedeutenden  Skript-Tool Flow  Unterstützung."

Na super. Ist ja schön, dass sie sich damit an die "grossen" 
ASIC-Synthesetools angleichen, aber die haben das grattelige TCL ja auch 
nur, weil's vor >15 Jahren kaum was anderes als Skriptsprache gab. Aber 
programmiertechnisch ist TCL ja so ziemlich die grässlichste unter den 
Skriptsprachen, war ja selbst C64-BASIC noch schöner... Manchmal könnte 
man glauben, dass FPGA/ASIC-Designer Masochisten sein müssen, bei dem, 
was sie alles so unter dem Deckmantel der Professionalität tolerieren 
müssen ;)

von Horst (Gast)


Lesenswert?

Ich hatte auch schon ASIC-Design zu tun und kann nur bestätigen, dass es 
ein Grauss ist, umherzuscripten. Die Sache ist einfach die, dass die 
Hengste, die sowas mögen, beim ASIC Design kleben bleiben, die anderen 
suchen sich was anderes. Und ja, das Scripten wird glorifiziert. 
Vollkommen zu Unrecht, wie ich finde. Es ist eine Notlösung weil es 
nicht besseres gibt.

Freilich liesse sich mit einer guten GUI vieles toppen, aber 
ausgerechnet die ISE ist Lichtjahre davon entfernt, eine guten GUI zu 
sein. Ausserdem glaube ich nicht, dass sich an den vom OP beschriebenen 
Problemen irgendwas ändert - im Gegenteil.

von Christian R. (supachris)


Lesenswert?

Ja, TCL ist grausam, das muss man zugeben. Wir bauen unsere Projekte mit 
den Command Line Tools ohne ISE GUI auf einem TeamCity Server. Das ist 
zwar erst mal etwas nervig aufzusetzen, weil bei der Hälfte der 
Programme die Optionen als Command Line Option angehängt werden, bei der 
anderen Hälfte als Steuerdatei vorliegen. Naja. Aber wenn es einmal 
eingestellt ist, läufts prima. Man ist auf die GUI nicht angewiesen und 
auf TCL auch nicht.
Aber stimmt schon, wir sind da vielleicht Masochisten. Man sehe sich nur 
die Bedienoberfläche von ModelSim an. Schauderlich.

von JBB (Gast)


Lesenswert?

Ich kann mir beim besten willen nicht vorstellen, dass es mit einer 
neuen GUI einfacher werden kann oder wird. Das Problem bei Xilinx ist 
einfach, dass sie ein Riesenchaos haben und es nicht gebacken bekommen, 
konzentriert Fehler rauszuräumen. Stattdesssen bauen sie lieber was 
Neues, was dann sofort neue Fehler hat.

von D. I. (Gast)


Lesenswert?

Naja oder sie nutzen die Chance sich von altem Ballast zu befreien und 
die Erfahrungen der letzten Jahre in die Entwicklung miteinfleßen zu 
lassen.

Ich möchte nicht wissen wieviel Frickleware sich in der ISE angesammelt 
hat.

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.