in Quartus: "`endif // foo" wirkt als `endif

OP #5178319
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?
1
module test1 ;
2
reg [10*8:1] s ;
3

4
`ifdef POSEDGE
5
  s = "`endif // foo";
6

7
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.)
OP #5178347
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?
Gast #5178389
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.
OP #5178402
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)
Persönliche Seite #5195796
«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)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.