From 65874d3cc1aaa1d8a05ea925bb15bd85fb7fcc60 Mon Sep 17 00:00:00 2001 From: Mateusz Gancarz Date: Mon, 17 Feb 2025 11:24:37 +0100 Subject: [PATCH] [#72179] fix indexing of bits in emitting words to SAIF trace --- include/verilated_saif_c.cpp | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/include/verilated_saif_c.cpp b/include/verilated_saif_c.cpp index eccac5375..cd747f3ee 100644 --- a/include/verilated_saif_c.cpp +++ b/include/verilated_saif_c.cpp @@ -719,21 +719,10 @@ void VerilatedSaifBuffer::emitWData(uint32_t code, const WData* newvalp, int bit fprintf(stdout, "Trying to emit more bits than activity width\n"); } - const int bitsInMSW = VL_BITBIT_E(bits) ? VL_BITBIT_E(bits) : VL_EDATASIZE; - int numOfWords = VL_WORDS_I(bits); - - fprintf(stdout, "Number of bits in most significant word: %d\n", bitsInMSW); - fprintf(stdout, "Number of bits in a word: %d\n", VL_EDATASIZE); - fprintf(stdout, "Number of words: %d\n", numOfWords); - auto dt = m_owner.m_time - activity.lastTime; - for (std::size_t i = 0; i < bitsInMSW; ++i) { - activity.bits[i].aggregateVal(dt, (newvalp[0] >> VL_BITBIT_E(i)) & 1); - } - - for (std::size_t i = bitsInMSW; i < activity.width; ++i) { - size_t wordIndex = VL_WORDS_I(i); + for (std::size_t i = 0; i < activity.width; ++i) { + size_t wordIndex = i / VL_EDATASIZE; activity.bits[i].aggregateVal(dt, (newvalp[wordIndex] >> VL_BITBIT_E(i)) & 1); }