[#73220] add signals duplicates in child scopes

This commit is contained in:
Mateusz Gancarz 2025-02-20 11:59:30 +01:00
parent 05fdfca5b1
commit a45f521ca2
2 changed files with 7 additions and 7 deletions

View File

@ -257,8 +257,8 @@ void VerilatedSaif::recursivelyPrintScopes(uint32_t scopeIndex) {
bool anyNetValid{true};
//NOTE: for now only care about NET, also PORT will be added
for (auto& childSignalCode : saifScope.childSignalCodes) {
ActivityVar& activity = m_activity.at(childSignalCode);
for (auto& [code, signalName] : saifScope.childSignals) {
ActivityVar& activity = m_activity.at(code);
for (size_t i = 0; i < activity.width; i++) {
auto& bit = activity.bits[i];
if (bit.lastVal && activity.lastTime < m_time) {
@ -280,7 +280,7 @@ void VerilatedSaif::recursivelyPrintScopes(uint32_t scopeIndex) {
printIndent();
printStr("(");
printStr(activity.name.c_str());
printStr(signalName);
if (activity.width > 1) {
printStr("[");
printStr(std::to_string(activity.lsb + i).c_str());
@ -451,6 +451,9 @@ void VerilatedSaif::popPrefix() {
void VerilatedSaif::declare(uint32_t code, const char* name, const char* wirep, bool array,
int arraynum, bool bussed, int msb, int lsb) {
assert(m_currentScope >= 0);
m_scopes.at(m_currentScope).childSignals.emplace_back(code, name);
// check if already declared to avoid duplicates
if (m_activity.count(code)) {
return;
@ -478,9 +481,6 @@ void VerilatedSaif::declare(uint32_t code, const char* name, const char* wirep,
finalName += ']';
}
assert(m_currentScope >= 0);
m_scopes.at(m_currentScope).childSignalCodes.emplace_back(code);
m_activity.emplace(code, ActivityVar{
finalName,
static_cast<uint32_t>(lsb),

View File

@ -55,7 +55,7 @@ struct ActivityVar {
struct SaifScope {
std::string scopeName{};
std::vector<int32_t> childScopesIndices{};
std::vector<uint32_t> childSignalCodes{};
std::vector<std::pair<uint32_t, const char*>> childSignals{};
int32_t parentScopeIndex{-1};
};