parent
1096740113
commit
dbd4823323
1
Changes
1
Changes
|
|
@ -112,6 +112,7 @@ Verilator 5.047 devel
|
||||||
* Fix `disable iff` imply-delay statement linking (#7337). [Nick Brereton]
|
* Fix `disable iff` imply-delay statement linking (#7337). [Nick Brereton]
|
||||||
* Fix lost `$stop` on implied assertion `$error` failures.
|
* Fix lost `$stop` on implied assertion `$error` failures.
|
||||||
* Fix wait() hang when interface uses process calls and VIF function (#7342). [Yilou Wang]
|
* Fix wait() hang when interface uses process calls and VIF function (#7342). [Yilou Wang]
|
||||||
|
* Fix error on illegal nand/nor binary operators (#7353).
|
||||||
|
|
||||||
|
|
||||||
Verilator 5.046 2026-02-28
|
Verilator 5.046 2026-02-28
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,7 @@
|
||||||
#define YYERROR_VERBOSE 1 // For prior to Bison 3.6
|
#define YYERROR_VERBOSE 1 // For prior to Bison 3.6
|
||||||
#define YYINITDEPTH 10000 // Older bisons ignore YYMAXDEPTH
|
#define YYINITDEPTH 10000 // Older bisons ignore YYMAXDEPTH
|
||||||
#define YYMAXDEPTH 10000
|
#define YYMAXDEPTH 10000
|
||||||
|
#define YYNEWLINE "\n"
|
||||||
|
|
||||||
// Pick up new lexer
|
// Pick up new lexer
|
||||||
#define yylex PARSEP->tokenToBison
|
#define yylex PARSEP->tokenToBison
|
||||||
|
|
@ -5059,8 +5060,14 @@ expr<nodeExprp>: // IEEE: part of expression/constant_expression/
|
||||||
| ~l~expr '|' ~r~expr { $$ = new AstOr{$2, $1, $3}; }
|
| ~l~expr '|' ~r~expr { $$ = new AstOr{$2, $1, $3}; }
|
||||||
| ~l~expr '^' ~r~expr { $$ = new AstXor{$2, $1, $3}; }
|
| ~l~expr '^' ~r~expr { $$ = new AstXor{$2, $1, $3}; }
|
||||||
| ~l~expr yP_XNOR ~r~expr { $$ = new AstNot{$2, new AstXor{$2, $1, $3}}; }
|
| ~l~expr yP_XNOR ~r~expr { $$ = new AstNot{$2, new AstXor{$2, $1, $3}}; }
|
||||||
| ~l~expr yP_NOR ~r~expr { $$ = new AstNot{$2, new AstOr{$2, $1, $3}}; }
|
| ~l~expr yP_NOR ~r~expr
|
||||||
| ~l~expr yP_NAND ~r~expr { $$ = new AstNot{$2, new AstAnd{$2, $1, $3}}; }
|
{ $$ = new AstNot{$2, new AstOr{$2, $1, $3}};
|
||||||
|
$2->v3error("Syntax error: '~|' is not a 'nor' binary operator, but a unary '~ |'"
|
||||||
|
<< YYNEWLINE << $<fl>1->warnMore() << "... Suggest '~ (... | ...)'"); }
|
||||||
|
| ~l~expr yP_NAND ~r~expr
|
||||||
|
{ $$ = new AstNot{$2, new AstAnd{$2, $1, $3}};
|
||||||
|
$2->v3error("Syntax error: '~&' is not a 'nand' binary operator, but a unary '~ &'"
|
||||||
|
<< YYNEWLINE << $<fl>1->warnMore() << "... Suggest '~ (... & ...)'"); }
|
||||||
| ~l~expr yP_SLEFT ~r~expr { $$ = new AstShiftL{$2, $1, $3}; }
|
| ~l~expr yP_SLEFT ~r~expr { $$ = new AstShiftL{$2, $1, $3}; }
|
||||||
| ~l~expr yP_SRIGHT ~r~expr { $$ = new AstShiftR{$2, $1, $3}; }
|
| ~l~expr yP_SRIGHT ~r~expr { $$ = new AstShiftR{$2, $1, $3}; }
|
||||||
| ~l~expr yP_SSRIGHT ~r~expr { $$ = new AstShiftRS{$2, $1, $3}; }
|
| ~l~expr yP_SSRIGHT ~r~expr { $$ = new AstShiftRS{$2, $1, $3}; }
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
%Error: t/t_fuzz_nor_bad.v:14:21: Syntax error: '~|' is not a 'nor' binary operator, but a unary '~ |'
|
||||||
|
: ... Suggest '~ (... | ...)'
|
||||||
|
14 | assign out1 = var1~|var2;
|
||||||
|
| ^~
|
||||||
|
... See the manual at https://verilator.org/verilator_doc.html?v=latest for more assistance.
|
||||||
|
%Error: t/t_fuzz_nor_bad.v:16:21: Syntax error: '~&' is not a 'nand' binary operator, but a unary '~ &'
|
||||||
|
: ... Suggest '~ (... & ...)'
|
||||||
|
16 | assign out2 = var1~&var2;
|
||||||
|
| ^~
|
||||||
|
%Error: Exiting due to
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
# DESCRIPTION: Verilator: Verilog Test driver/expect definition
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify it
|
||||||
|
# under the terms of either the GNU Lesser General Public License Version 3
|
||||||
|
# or the Perl Artistic License Version 2.0.
|
||||||
|
# SPDX-FileCopyrightText: 2024 Wilson Snyder
|
||||||
|
# SPDX-License-Identifier: LGPL-3.0-only OR Artistic-2.0
|
||||||
|
|
||||||
|
import vltest_bootstrap
|
||||||
|
|
||||||
|
test.scenarios('linter')
|
||||||
|
|
||||||
|
test.lint(fails=True, expect_filename=test.golden_filename)
|
||||||
|
|
||||||
|
test.passes()
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// DESCRIPTION: Verilator: Verilog Test module
|
||||||
|
//
|
||||||
|
// This file ONLY is placed under the Creative Commons Public Domain.
|
||||||
|
// SPDX-FileCopyrightText: 2026 Wilson Snyder
|
||||||
|
// SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
module bug_reduction_nor_binary (
|
||||||
|
input logic [3:0] var1,
|
||||||
|
input logic [3:0] var2,
|
||||||
|
output logic [3:0] out1,
|
||||||
|
output logic [3:0] out2
|
||||||
|
);
|
||||||
|
|
||||||
|
assign out1 = var1~|var2; //< ~| is a unary reduction operator, not a binary infix operator
|
||||||
|
|
||||||
|
assign out2 = var1~&var2; //< ~& is a unary reduction operator, not a binary infix operator
|
||||||
|
|
||||||
|
// ~^ is legal
|
||||||
|
|
||||||
|
endmodule
|
||||||
Loading…
Reference in New Issue