aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/verilog/verilog_lexer.l
diff options
context:
space:
mode:
authorEddie Hung <eddieh@ece.ubc.ca>2019-03-14 08:59:19 -0700
committerEddie Hung <eddieh@ece.ubc.ca>2019-03-14 08:59:19 -0700
commitf1a8e8a480a7a88835b02abafd27c03e90de7041 (patch)
tree49679db03662de0b029d814354f01f972179e453 /frontends/verilog/verilog_lexer.l
parent26ecbc1aee1dca1c186ab2b51835d74f67bc3e75 (diff)
parentf0b2d8e467998876ad2cc14232d30ff7892982a3 (diff)
downloadyosys-f1a8e8a480a7a88835b02abafd27c03e90de7041.tar.gz
yosys-f1a8e8a480a7a88835b02abafd27c03e90de7041.tar.bz2
yosys-f1a8e8a480a7a88835b02abafd27c03e90de7041.zip
Merge remote-tracking branch 'origin/master' into xc7srl
Diffstat (limited to 'frontends/verilog/verilog_lexer.l')
-rw-r--r--frontends/verilog/verilog_lexer.l10
1 files changed, 9 insertions, 1 deletions
diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l
index 1b1873e24..6ef38252a 100644
--- a/frontends/verilog/verilog_lexer.l
+++ b/frontends/verilog/verilog_lexer.l
@@ -189,6 +189,14 @@ YOSYS_NAMESPACE_END
"always_ff" { SV_KEYWORD(TOK_ALWAYS); }
"always_latch" { SV_KEYWORD(TOK_ALWAYS); }
+ /* use special token for labels on assert, assume, cover, and restrict because it's insanley complex
+ to fix parsing of cells otherwise. (the current cell parser forces a reduce very early to update some
+ global state.. its a mess) */
+[a-zA-Z_$][a-zA-Z0-9_$]*/[ \t\r\n]*:[ \t\r\n]*(assert|assume|cover|restrict)[^a-zA-Z0-9_$\.] {
+ frontend_verilog_yylval.string = new std::string(std::string("\\") + yytext);
+ return TOK_SVA_LABEL;
+}
+
"assert" { if (formal_mode) return TOK_ASSERT; SV_KEYWORD(TOK_ASSERT); }
"assume" { if (formal_mode) return TOK_ASSUME; SV_KEYWORD(TOK_ASSUME); }
"cover" { if (formal_mode) return TOK_COVER; SV_KEYWORD(TOK_COVER); }
@@ -303,7 +311,7 @@ supply1 { return TOK_SUPPLY1; }
[a-zA-Z_$][a-zA-Z0-9_$\.]* {
frontend_verilog_yylval.string = new std::string(std::string("\\") + yytext);
- return TOK_ID;
+ return TOK_ID;
}
"/*"[ \t]*(synopsys|synthesis)[ \t]*translate_off[ \t]*"*/" {