Skip to content

Commit e31efbf

Browse files
authored
Merge pull request #1356 from diffblue/verilog2-fix
netlist: fix off-by-one bug
2 parents 1ea861b + 26ef9a0 commit e31efbf

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
KNOWNBUG
1+
CORE
22
verilog2.sv
33
--smv-netlist
44
^EXIT=0$
55
^SIGNAL=0$
66
--
77
--
8-
This throws an error.

src/trans-netlist/trans_to_netlist.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -722,7 +722,7 @@ void convert_trans_to_netlistt::add_equality_rec(
722722

723723
bv_varidt bv_varid;
724724
bv_varid.id=lhs.get(ID_identifier);
725-
725+
726726
for(bv_varid.bit_nr=lhs_from;
727727
bv_varid.bit_nr!=(lhs_to+1);
728728
bv_varid.bit_nr++)
@@ -770,9 +770,12 @@ void convert_trans_to_netlistt::add_equality_rec(
770770

771771
boolbv_widtht boolbv_width(ns);
772772

773+
const auto width = boolbv_width(lhs.type());
774+
775+
DATA_INVARIANT(width != 0, "add_equality_rec got zero-width bit-vector");
776+
773777
std::size_t new_lhs_from = lhs_from + index.to_ulong();
774-
std::size_t new_lhs_to =
775-
lhs_from + index.to_ulong() + boolbv_width(lhs.type());
778+
std::size_t new_lhs_to = lhs_from + index.to_ulong() + width - 1;
776779

777780
add_equality_rec(
778781
src, to_extractbits_expr(lhs).src(), new_lhs_from, new_lhs_to, rhs_entry);

0 commit comments

Comments
 (0)