diff --git a/Changes b/Changes index f8804f1cc..45fe14e86 100644 --- a/Changes +++ b/Changes @@ -14,6 +14,8 @@ The contributors that suggested a given feature are shown in []. Thanks! **** Fix config_rev revision detection on old versions. +**** Fix false warning on backward indexing, bug1507. [Hao Shi] + * Verilator 4.018 2019-08-29 diff --git a/src/V3Width.cpp b/src/V3Width.cpp index f28bca861..d2f32a657 100644 --- a/src/V3Width.cpp +++ b/src/V3Width.cpp @@ -755,7 +755,8 @@ private: <<" outside data type's '"<< adtypep->declRange() << "'"); } else if ((nodep->declRange().littleEndian() - != adtypep->declRange().littleEndian())) { + != adtypep->declRange().littleEndian()) + && nodep->declRange().hi() != nodep->declRange().lo()) { nodep->v3error("Slice selection '"<< nodep->declRange() << "'" <<" has backward indexing versus data type's '" <declRange() << "'"); diff --git a/test_regress/t/t_array_backw_index_bad.v b/test_regress/t/t_array_backw_index_bad.v index 8b6f9dd2c..626830448 100644 --- a/test_regress/t/t_array_backw_index_bad.v +++ b/test_regress/t/t_array_backw_index_bad.v @@ -15,6 +15,8 @@ module t (/*AUTOARG*/); array_assign[4:3] = '{32'd4, 32'd3}; array_assign[1:-1] = '{32'd4, 32'd3}; + array_assign[1:1] = '{32'd4}; // Ok + larray_assign[1:1] = '{32'd4}; // Ok $write("*-* All Finished *-*\n"); $finish;