3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-06-02 15:18:07 +00:00

Don't repeat VCD warnings + fixups.

This commit is contained in:
nella 2026-05-19 12:16:29 +02:00
parent 366f98ae25
commit 44a1abdade

View file

@ -429,7 +429,7 @@ struct SimInstance
Const value = builder.build(); Const value = builder.build();
if (shared->debug) if (shared->debug)
log("[%s] get %s: %s\n", hiername(), log_signal(sig, true), log_signal(value, true)); log("[%s] get %s: %s\n", hiername(), log_signal(sig), log_signal(value, true));
return value; return value;
} }
@ -448,7 +448,7 @@ struct SimInstance
} }
if (shared->debug) if (shared->debug)
log("[%s] set %s: %s\n", hiername(), log_signal(sig, true), log_signal(value, true)); log("[%s] set %s: %s\n", hiername(), log_signal(sig), log_signal(value, true));
return did_something; return did_something;
} }
@ -1201,7 +1201,7 @@ struct SimInstance
// 3) module has no processes (sim enforces proc-lowered input before this point). // 3) module has no processes (sim enforces proc-lowered input before this point).
// 4) sigmap is valid for per-bit queries on this instance. // 4) sigmap is valid for per-bit queries on this instance.
// 5) shared->fst is active, i.e. this is called from FST/VCD replay flow. // 5) shared->fst is active, i.e. this is called from FST/VCD replay flow.
int checkUndrivenReplaySignals() int checkUndrivenReplaySignals(bool &any_undriven_found)
{ {
int issue_count = 0; int issue_count = 0;
bool has_replay_candidates = false; bool has_replay_candidates = false;
@ -1231,14 +1231,14 @@ struct SimInstance
continue; continue;
issue_count++; issue_count++;
any_undriven_found = true;
std::string wire_name = scope + "." + RTLIL::unescape_id(wire->name); std::string wire_name = scope + "." + RTLIL::unescape_id(wire->name);
log_warning("Input trace contains undriven signal `%s` (%s); values for this signal are not replayed from FST/VCD input.\n", log_warning("Input trace contains undriven signal `%s` (%s).\n", wire_name.c_str(), log_signal(undriven));
wire_name.c_str(), log_signal(undriven, true));
} }
} }
for (auto child : children) for (auto child : children)
issue_count += child.second->checkUndrivenReplaySignals(); issue_count += child.second->checkUndrivenReplaySignals(any_undriven_found);
return issue_count; return issue_count;
} }
@ -1550,7 +1550,10 @@ struct SimWorker : SimShared
top->addAdditionalInputs(); top->addAdditionalInputs();
if (undriven_check) { if (undriven_check) {
int issue_count = top->checkUndrivenReplaySignals(); bool any_undriven_found = false;
int issue_count = top->checkUndrivenReplaySignals(any_undriven_found);
if (any_undriven_found)
log_warning("Values for the undriven signal(s) listed above are not replayed from FST/VCD input.\n");
if (issue_count > 0 && !undriven_warning) if (issue_count > 0 && !undriven_warning)
log_cmd_error("Found %d undriven signal%s in the replay trace. Use -undriven-warn to continue or -no-undriven-check to disable this check.\n", log_cmd_error("Found %d undriven signal%s in the replay trace. Use -undriven-warn to continue or -no-undriven-check to disable this check.\n",
issue_count, issue_count == 1 ? "" : "s"); issue_count, issue_count == 1 ? "" : "s");