mikrocontroller.net

Forum: FPGA, VHDL & Co. in Quartus: "`endif // foo" wirkt als `endif


Autor: Martin O. (ossi-2)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Das folgende Modul (Verilog) wird bei mir fehlerfrei synthetisiert.
Anscheinend wird das `endif im String tatsächlich als `endif gewertet.
Der Modelsim Simulator beschwert sich, dass kein endif im File vorkommt.

Weiss jemand ob ` in Quartus Verilog Strings verboten sind?
module test1 ;
reg [10*8:1] s ;

`ifdef POSEDGE
  s = "`endif // foo";

endmodule

Vielleicht könnt Ihr das auch mal  unter Quartus ausprobieren.

(Ich weiss, dass das Modul sinnlos ist, es ist durch Eindampfen meines 
eigentlichen Programms entstanden, so dass der "Fehler" gerade noch 
auftrat.)

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> Weiss jemand ob ` in Quartus Verilog Strings verboten sind?
Laut dem hier Seite 16-17 eigentlich nicht:
https://www.altera.com/en_US/pdfs/literature/hb/qt...

Bringst du den Parser mit dem ' durcheinander?
Welche Zeichen dürfen in einem Verilog-String auftauchen?

: Bearbeitet durch Moderator
Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Anscheinend bringt mein Code den Parser durcheinander. Der Fehler ist 
tatsächlich bei mir in einer realen Anwendung aufgetreten, hat 2 Stunden 
gedauert, bis ich ihn einigermassen eingegrenzt hatte.

Wäre nett wenn jemand von euch das mal nachvollziehen könnte.

Martin

@L Miller
kann in Deiner Referenz nichts über Verilog Strings auf Seite 16-17 
(Kapitel 16 Seite 17) finden. Was mache ich falsch?

: Bearbeitet durch User
Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Was passiert denn, wenn Du in den Text einfach kein Code-wort 
reintippst, sondern einfach nur ENDE schreibst? Belegte Namen nimmt man 
ohnehin nicht in Kommentaren und auch nicht in Erklärtexten.

Autor: Martin O. (ossi-2)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Wenn ich das endif aus dem Kommentar weglasse, wird das Fehlen des endif 
in irgendeiner Form angemeckert, das ist also ok.

"Belegte Namen nimmt man ohnehin nicht in Kommentaren und auch nicht in
Erklärtexten."

Aber in Kommentaren möchte ich möglichst fast alles schreiben dürfen.
Ich möchte z.B. auch Code auskommentieren dürfen. In Strings soll auch 
möglichst alles erlaubt sein (ausser ", dem Quote-Symbol)

: Bearbeitet durch User
Autor: Weltbester FPGA-Strubi (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Die Ansicht kann man vertreten. Offenbar kommt aber Dein Compiler 
irgendwie nicht damit klar.

Autor: Marcus Harnisch (mharnisch) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
«Macro substitution and argument substitution shall not occur within 
string literals.» IEEE1800-2012 (22.5.1)

"`" ist ein normales Zeichen in einem String Literal.

Vielleicht hat auch jemand das hier zu wörtlich genommen :)
«[`endif] directives may appear anywhere in the source description.» 
IEEE1800-2012 (22.6)

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.