aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2020-02-13 13:06:13 -0800
committerEddie Hung <eddie@fpgeh.com>2020-02-13 13:06:13 -0800
commit2e51dc1856aae456e15cafd484997bfbd102175e (patch)
treee446b57a8d99be177068c96e15e4f9753ec8b402
parentb523ecf2f45f80488412781ba9a3455a71d64d62 (diff)
downloadyosys-2e51dc1856aae456e15cafd484997bfbd102175e.tar.gz
yosys-2e51dc1856aae456e15cafd484997bfbd102175e.tar.bz2
yosys-2e51dc1856aae456e15cafd484997bfbd102175e.zip
verilog: ignore '&&&' when not in -specify mode
-rw-r--r--frontends/verilog/verilog_lexer.l2
-rw-r--r--frontends/verilog/verilog_parser.y9
-rw-r--r--tests/various/specify.v6
3 files changed, 12 insertions, 5 deletions
diff --git a/frontends/verilog/verilog_lexer.l b/frontends/verilog/verilog_lexer.l
index 9b43c250e..18fa2966b 100644
--- a/frontends/verilog/verilog_lexer.l
+++ b/frontends/verilog/verilog_lexer.l
@@ -440,7 +440,7 @@ import[ \t\r\n]+\"(DPI|DPI-C)\"[ \t\r\n]+function[ \t\r\n]+ {
}
"&&&" {
- if (!specify_mode) REJECT;
+ if (!specify_mode) return TOK_IGNORED_SPECIFY_AND;
return TOK_SPECIFY_AND;
}
diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y
index 9b1b07f86..f37c6d99b 100644
--- a/frontends/verilog/verilog_parser.y
+++ b/frontends/verilog/verilog_parser.y
@@ -146,7 +146,7 @@ struct specify_rise_fall {
%token TOK_DPI_FUNCTION TOK_POSEDGE TOK_NEGEDGE TOK_OR TOK_AUTOMATIC
%token TOK_CASE TOK_CASEX TOK_CASEZ TOK_ENDCASE TOK_DEFAULT
%token TOK_FUNCTION TOK_ENDFUNCTION TOK_TASK TOK_ENDTASK TOK_SPECIFY
-%token TOK_IGNORED_SPECIFY TOK_ENDSPECIFY TOK_SPECPARAM TOK_SPECIFY_AND
+%token TOK_IGNORED_SPECIFY TOK_ENDSPECIFY TOK_SPECPARAM TOK_SPECIFY_AND TOK_IGNORED_SPECIFY_AND
%token TOK_GENERATE TOK_ENDGENERATE TOK_GENVAR TOK_REAL
%token TOK_SYNOPSYS_FULL_CASE TOK_SYNOPSYS_PARALLEL_CASE
%token TOK_SUPPLY0 TOK_SUPPLY1 TOK_TO_SIGNED TOK_TO_UNSIGNED
@@ -1117,6 +1117,7 @@ system_timing_arg :
system_timing_args :
system_timing_arg |
+ system_timing_args TOK_IGNORED_SPECIFY_AND system_timing_arg |
system_timing_args ',' system_timing_arg ;
path_delay_expression :
@@ -1137,9 +1138,9 @@ ignspec_constant_expression:
ignspec_expr:
expr { delete $1; } |
expr ':' expr ':' expr {
- delete $1;
- delete $3;
- delete $5;
+ delete $1;
+ delete $3;
+ delete $5;
};
ignspec_id:
diff --git a/tests/various/specify.v b/tests/various/specify.v
index 5006e4c38..aa8aca4bc 100644
--- a/tests/various/specify.v
+++ b/tests/various/specify.v
@@ -51,3 +51,9 @@ specify
$setuphold(d, posedge clk, 1:2:3, 4:5:6);
endspecify
endmodule
+
+module test5(input clk, d, e, output q);
+specify
+ $setup(d, posedge clk &&& e, 1:2:3);
+endspecify
+endmodule