Test von generics Werten

OP #7038134
Lesenswert?

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 ?.
OP #7038146
Lesenswert?

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.
Gast #7038151
Lesenswert?

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.
OP #7038369
Lesenswert?

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 ;-).
Gast #7038940
Lesenswert?

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".
Gast #7039929
Lesenswert?

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?
#7041066
Lesenswert?

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.
Gast #7047636
Lesenswert?

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 ;)
Gast #7047936
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren