From b870693393db0842ed5b00623809397fbad3fc7c Mon Sep 17 00:00:00 2001 From: Robert O'Callahan Date: Mon, 17 Nov 2025 09:11:15 +0000 Subject: [PATCH] Fix reset_auto_counter_id to correctly detect _NNN_ patterns This fixes a regression caused by commit c4c389fdd71f9dfc653d64789437084fd091f21e. --- backends/verilog/verilog_backend.cc | 10 +++++----- tests/verilog/reset_auto_counter.ys | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 tests/verilog/reset_auto_counter.ys diff --git a/backends/verilog/verilog_backend.cc b/backends/verilog/verilog_backend.cc index 67ff1f808..8d77160fd 100644 --- a/backends/verilog/verilog_backend.cc +++ b/backends/verilog/verilog_backend.cc @@ -116,21 +116,21 @@ void reset_auto_counter_id(RTLIL::IdString id, bool may_rename) if (*it == '$' && may_rename && !norename) auto_name_map[id] = auto_name_counter++; - if (*it != '\\' || *it != '_' || (it + 1) == it_end) + if (*it != '\\' || (it + 1) == it_end || *(it + 1) != '_' || (it + 2) == it_end) return; + std::string s; it += 2; - auto start = it; while (it != it_end) { char ch = *it; if (ch == '_' && (it + 1) == it_end) - continue; + break; if (ch < '0' || ch > '9') return; + s.push_back(ch); + ++it; } - std::string s; - std::copy(start, it_end, std::back_inserter(s)); int num = atoi(s.c_str()); if (num >= auto_name_offset) auto_name_offset = num + 1; diff --git a/tests/verilog/reset_auto_counter.ys b/tests/verilog/reset_auto_counter.ys new file mode 100644 index 000000000..c9756cbac --- /dev/null +++ b/tests/verilog/reset_auto_counter.ys @@ -0,0 +1,17 @@ +read_verilog -sv <