Fehler in Bitbreite von ModelSIM nicht erkannt

Gast #1068158
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. ???
Gast #1068194
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.
Gast #1068234
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. 
:)

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