From 70291f0e4954a81dfae5a236ecafda9abc43e5f7 Mon Sep 17 00:00:00 2001 From: George Rennie Date: Fri, 30 May 2025 14:25:35 +0100 Subject: [PATCH 1/2] read_verilog: fix -1 constant used to correct post increment/decrement --- frontends/verilog/verilog_parser.y | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontends/verilog/verilog_parser.y b/frontends/verilog/verilog_parser.y index 9d0956c8e..fa624d471 100644 --- a/frontends/verilog/verilog_parser.y +++ b/frontends/verilog/verilog_parser.y @@ -336,7 +336,8 @@ static AstNode *addIncOrDecExpr(AstNode *lhs, dict *attr, AS log_assert(stmt->type == AST_ASSIGN_EQ); AstNode *expr = stmt->children[0]->clone(); if (undo) { - AstNode *minus_one = AstNode::mkconst_int(-1, true, 1); + AstNode *one = AstNode::mkconst_int(1, false, 1); + AstNode *minus_one = new AstNode(AST_NEG, one); expr = new AstNode(op, expr, minus_one); } SET_AST_NODE_LOC(expr, begin, end); From 3790be114f770b336b9aa815236504f8173870bd Mon Sep 17 00:00:00 2001 From: George Rennie Date: Fri, 30 May 2025 14:36:05 +0100 Subject: [PATCH 2/2] tests: add tests for verilog pre/post increment/decrement in expressions --- tests/verilog/incdec.ys | 68 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 tests/verilog/incdec.ys diff --git a/tests/verilog/incdec.ys b/tests/verilog/incdec.ys new file mode 100644 index 000000000..9133061a5 --- /dev/null +++ b/tests/verilog/incdec.ys @@ -0,0 +1,68 @@ +# From https://github.com/YosysHQ/yosys/issues/5151 +read_verilog -sv <