Gibt es eine Möglichkeit in VHDL einen generics Wert auf bestimmte Eigenschaften zu testen und die Synthese abbrechen ohne dabei zusätzliche Hardware zu erzeugen ?. In meinem speziellen Falle müsste der generics wert durch 2 teilbar sein. Irgendwo habe ich gelesen das X mod 2 wenn teilbar synthetisiert und sonst nicht. Kann ich das irgendwie für meinen Zweck ausnutzen ?.
Ich habe da einen anderen Gedanken: Eine Funktion schreiben, die den Wert qualifiziert.
Dummschulz schrieb: > Ich habe da einen anderen Gedanken: Eine Funktion schreiben, die den > Wert qualifiziert. Habe gerade eine Möglichkeit gefunden
1 | modtest : process (clk) begin |
2 | if (DIVIDER mod 2 = 0) then |
3 | clk_out <= clk; |
4 | end if; |
5 | end process; |
Im Fehlerfall wird clk_out <= clk nicht synthetisiert und ergibt Abbruch mit Warnung : Output <clk_out> is never assigned. clk_out <= clk when (DIVIDER mod 2 = 0); geht auch aber die Fehlermeldung ist kryptischer.
:
Bearbeitet durch User
Ja gut. Aber das ist halt getrickst und nicht der kanonische Weg. Kann man mit alten Sythesizern machen, wenn man "muss".:-) Aber mittlerweile gibts "report" und ein "assert" gibts auch noch. Keine Trickserei nötig.
Dummschulz schrieb: > Ja gut. Aber das ist halt getrickst und nicht der kanonische Weg. Kann > man mit alten Sythesizern machen, wenn man "muss".:-) > > Aber mittlerweile gibts "report" und ein "assert" gibts auch noch. Keine > Trickserei nötig. assert (DIVIDER mod 2 = 0) report "Generic: DIVIDER must be divisible by 2"; ist natürlich viel eleganter und man kann eine sinnvolle Fehlermeldung ausgeben. Gefällt mir und mit ISE 14.7 funktioniert es. Danke dir. VHDL ist nicht mein täglich Brot, das mache ich alle Schaltjahre mal wieder ;-).
Dummschulz schrieb: > Ja gut. Aber das ist halt getrickst und nicht der kanonische Weg. Kann > man mit alten Sythesizern machen, wenn man "muss".:-) > > Aber mittlerweile gibts "report" und ein "assert" gibts auch noch. Keine > Trickserei nötig. Hängt halt immer vom Synthesizer ab. Im Asic-Bereich (keine Ahnung wie das bei FPGAs ist) ist das aber häufig nicht möglich. Ich arbeite gegenwärtig an einem digital Design, welches in einer halbwegs neuen Technologie bei TSMC gefertigt wird. Also keine gravierende Altlast und die Tool-Version ist auch "recent" (Release 2021). Und was soll ich sagen: Dem Synthesizer sind asserts vollkommen egal. Da muss man immer aufpassen. Gerade im Asic-Bereich + VHDL ist meine Erfahrung, dass die Tool-Hersteller dir einfach die rote Karte zeigen, wenn was nicht geht und sagen: "Mimimi... Der VHDL Standard sagt nichts von Synthese. Wir machen das so, wie wir wollen" Hatte da schon die besten Effekte: 1) ALIAS nicht synthetisierbar 2) State-machines mit enumerable types nicht als one-hot statemachine synthetisierbar. Eigentlich dachte ich immer, dass das eben eine Einstellung des Synthesizers wäre. Aber falsch gedacht. Das hat der Tool-Hersteller erfolgreich abgewälzt und gesagt: Wenn du one-hot FSMs möchtest, musst du es mit einem std_logic_vector selber bauen. 3) Teile eines std_logic_vector nicht aus verschiedenen Prozessen schreibbar. Da habe ich mich auch massivst aufgeregt. Vorallem, weil der VHDL standard definiert, dass jeder slice des Vektors einen eigenen Driver hat und somit vector(1) und vector(0) aus verschiedenen Prozessen schreibbar sind (solange man nicht in zwei Prozessen dasselbe bit schreibt). Antwort des Tool-Herstellers: "Juckt uns nicht. Steht im manual. Wer verwendet schon VHDL. Nimm Verilog. Good Luck; Have fun." 4) Default werte von variablen: Der Defaultwert von Variablen in procedures etc wird bsw. von unserem Synthesizer komplett ignoriert. Die muss man immer am Anfang der Procedure definiert zuweisen. Ansonsten synthetisiert der da kompletten Müll zusammen. Natürlich ohne Warnung. Toolhersteller sagt: "VHDL definiert nicht, dass das synthesisierbar ist. Lies das Handbuch. Ist uns egal. Mit Verilog wäre das nicht passiert." Da kann man wirklich froh sein, wenn die rudimentärsten Teile von VHDL93 halbwegs funktionieren. Ich bin da mittlerweile extremst übervorsichtig, wenn einer sagt: "Das geht in VHDL so und so + Synthese".
M. H. schrieb: > Antwort des Tool-Herstellers: "Juckt uns nicht. Steht im > manual. Wer verwendet schon VHDL. Nimm Verilog. Good Luck; Have fun." Da zeigt sich leider dass die Toolhersteller alle in den USA sitzen denn da (und in Asien) wird Verilog verwendet und wahrscheinlich auch die meisten ASIC-Designs gemacht. Interessant wäre jetzt um welchen es hier konkret geht? Synopsis Cadence Mentor?
M. H. schrieb: > Und was soll ich > sagen: Dem Synthesizer sind asserts vollkommen egal. > > Da muss man immer aufpassen. Danke für deine Erfahrungen. Habe selber noch nie mit Tools aus diesem Bereich gearbeitet und finde es gerade spannend, dass die viel teureren Tools "dümmer" sind als die FPGA Tools die ich verwendet habe bisher. Hans-Georg L. schrieb: > ist natürlich viel eleganter und man kann eine sinnvolle Fehlermeldung > ausgeben. Gefällt mir und mit ISE 14.7 funktioniert es. Danke dir. Ich kann bestätigen, dass asserts mit Synplify auch problemlos gehen und ich das gerade für diesen Zweck auch eingesetzt hatte. Da man sein Design ja nicht nur durch den Synthesizer sondern auch durch einen Simulator jagt (hoffentlich mit den selben Generics) wird dort der Generic ja auch per assert geprüft.
Christoph Z. schrieb: > Danke für deine Erfahrungen. Habe selber noch nie mit Tools aus diesem > Bereich gearbeitet und finde es gerade spannend, dass die viel teureren > Tools "dümmer" sind als die FPGA Tools die ich verwendet habe bisher. Die Tools sind nicht dümmer. Nur die Politik. VHDL ist einfach immer naja... 20 Jahre hinter der Zeit. Ich kann den neuen VHDL Standards 2008/2019 wirklich einige tolle Features abgewinnen. Aber sind wir leider an '93 gebunden. Ich finde es auch irgendwie beeindruckend, dass beispielsweise Synplify beim FPGA privat viele Dinge 1a synthetisiert, während der Sysnopsys Design Compiler manche Sachen einfach eiskalt ignoriert. Beides aus demselben Hause. So richtig verstehen tut das keiner... Trotzdem ist mir VHDL immernoch deutlich lieber als Verilog ;)
M. H. schrieb: > Ich finde es auch irgendwie beeindruckend, dass beispielsweise Synplify > beim FPGA privat viele Dinge 1a synthetisiert, während der Sysnopsys > Design Compiler manche Sachen einfach eiskalt ignoriert. Beides aus > demselben Hause. So richtig verstehen tut das keiner... Der Grund ist einfach, Synplify ist durch einen Firmenaufkauf im Jahre 2008 zu Synopsis gekommen. Du erwartest doch etwa nicht das innerhalb von 14 Jahren der Code gemerkt wird. Wahrscheinlich reden die Teams für ASIC-Designtools und FPGA-Tools nichtmal miteinander.
M. H. schrieb: > VHDL ist einfach immer > naja... 20 Jahre hinter der Zeit. Das ist doch nicht das Problem von VHDL sondern den Herstellern die es nicht gebacken bekommen den Standard umzusetzen? :-/
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.