From a31d14e8e659f893bbbc8201fa59f53a810b0e29 Mon Sep 17 00:00:00 2001 From: Bryan Murdock Date: Fri, 3 Apr 2026 09:10:14 -0600 Subject: [PATCH] fix slice method, reuse other slice test stuff for [1:0] case --- include/verilated_types.h | 8 +++++++- test_regress/t/t_queue_slice.v | 8 +++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/verilated_types.h b/include/verilated_types.h index 8a3360016..da82102fe 100644 --- a/include/verilated_types.h +++ b/include/verilated_types.h @@ -650,8 +650,14 @@ public: // Return slice q[lsb:msb] VlQueue slice(int32_t lsb, int32_t msb) const { VlQueue out; + if (VL_UNLIKELY(lsb > msb)) return out; + if (VL_UNLIKELY(lsb == msb)) { + if (lsb > 0 && lsb < m_deque.size()) { + out.push_back(m_deque[lsb]); + } + return out; + } if (VL_UNLIKELY(lsb < 0)) lsb = 0; - if (VL_UNLIKELY(lsb >= m_deque.size())) lsb = m_deque.size() - 1; if (VL_UNLIKELY(msb >= m_deque.size())) msb = m_deque.size() - 1; for (int32_t i = lsb; i <= msb; ++i) out.push_back(m_deque[i]); return out; diff --git a/test_regress/t/t_queue_slice.v b/test_regress/t/t_queue_slice.v index 6c8b7e5fe..32a7ae9dc 100644 --- a/test_regress/t/t_queue_slice.v +++ b/test_regress/t/t_queue_slice.v @@ -68,6 +68,9 @@ module t; `checkp(q, "'{\"d\", \"e\", \"f\"}"); q = q[$:$]; `checkp(q, "'{\"f\"}"); + q = q[1:$]; + `checkp("'{}"); + // Similar using implied notation q = '{"f"}; @@ -84,11 +87,6 @@ module t; q = {q, q}; `checkp(q, "'{\"a\", \"b\", \"a\", \"b\"}"); - q = {"a"}; - q = q[1:$]; - i = q.size(); - `checkh(i, 0); - begin static string ai[$] = '{"Foo", "Bar"}; q = ai; // Copy