Forum: FPGA, VHDL & Co. Fehler in Bitbreite von ModelSIM nicht erkannt


von Gast (Gast)


Lesenswert?

Hallo, ich habe gerade folgenden Fehler gefunden, den Modelsim SE 6.3c 
beim Compilieren bedenkenlos schluckt!!!

Bei der Änderung der Bitbreite einer Abfrage habe ich ein Bit mehr 
hinzugefügt, aber den Vektor vergessen, aufzubohren:
1
if (pattern(3 downto 0) = "10000") then
2
  signal <= '1';
3
....

Richtig wäre natürlich, "4 downto 0". Das Ding wird natürlich so nie 
ausgeführt. Warum findet ModelSim das nicht? Die Synthese scheint auch 
darüber hinweg zu lesen. ???

von FPGA-Frickler (Gast)


Lesenswert?

Nun es ist wohl kein Syntaxfehler, der Ausdruck ist halt immer false und 
dementsprechend wird es generiert.

Nach meiner Erfahrung meckert modelsim und viele synthesis tools das 
auch an, allerdings eben als warning oder info, nicht als error. Ist 
halt wie in c das prob mit "=" und "==". Ist syntaktische gesehen 
korrekt, aber der Entwickler hat nicht das geschrieben, was er wollte.

von Ratzeputz (Gast)


Lesenswert?

Tja, ich hatte letztens auch so was ärgerliches, wäre aber in der Sim 
aufgefallen:

signal counter: std_logic_vector (8 downto 0):= (others => '0');

.
.
.

counter <= counter +1;
if (counter <= counter_max) then
..
.
end if;

Durch das "<=" wird der Inhalt des if-Zweiges immer ausgeführt, ist kein 
Fehler, und es kam bei der Synthese nichtmal die Meldung, dass der 
counter removed wurde. Irgendwann hab ich den Tippfehler dann gefunden. 
:)

von Thomas R. (Firma: abaxor engineering) (abaxor)


Lesenswert?

Hallo,

ich wette du verwendest nicht das Package ieee.numeric_std. Dort wird 
auf die Übereinstimmung von Vektorlängen geachtet.


Tom

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.