mirror of https://github.com/YosysHQ/yosys.git
cxxrtl: add a "bare minimum" debug information level.
Useful to reduce overhead when no debug capabilities are necessary except for access to design state.
This commit is contained in:
parent
ece25a45d4
commit
dd6a761db0
|
@ -539,6 +539,7 @@ struct CxxrtlWorker {
|
||||||
bool inline_public = false;
|
bool inline_public = false;
|
||||||
|
|
||||||
bool debug_info = false;
|
bool debug_info = false;
|
||||||
|
bool debug_alias = false;
|
||||||
bool debug_eval = false;
|
bool debug_eval = false;
|
||||||
|
|
||||||
std::ostringstream f;
|
std::ostringstream f;
|
||||||
|
@ -2425,7 +2426,7 @@ struct CxxrtlWorker {
|
||||||
for (auto item : flow.bit_has_state)
|
for (auto item : flow.bit_has_state)
|
||||||
bit_has_state.insert(item);
|
bit_has_state.insert(item);
|
||||||
|
|
||||||
if (debug_info) {
|
if (debug_info && debug_alias) {
|
||||||
// Find wires that alias other wires or are tied to a constant; debug information can be enriched with these
|
// Find wires that alias other wires or are tied to a constant; debug information can be enriched with these
|
||||||
// at essentially zero additional cost.
|
// at essentially zero additional cost.
|
||||||
//
|
//
|
||||||
|
@ -2575,7 +2576,7 @@ struct CxxrtlWorker {
|
||||||
|
|
||||||
struct CxxrtlBackend : public Backend {
|
struct CxxrtlBackend : public Backend {
|
||||||
static const int DEFAULT_OPT_LEVEL = 6;
|
static const int DEFAULT_OPT_LEVEL = 6;
|
||||||
static const int DEFAULT_DEBUG_LEVEL = 2;
|
static const int DEFAULT_DEBUG_LEVEL = 3;
|
||||||
|
|
||||||
CxxrtlBackend() : Backend("cxxrtl", "convert design to C++ RTL simulation") { }
|
CxxrtlBackend() : Backend("cxxrtl", "convert design to C++ RTL simulation") { }
|
||||||
void help() override
|
void help() override
|
||||||
|
@ -2793,14 +2794,18 @@ struct CxxrtlBackend : public Backend {
|
||||||
log(" more visibility and generate more code, but do not pessimize evaluation.\n");
|
log(" more visibility and generate more code, but do not pessimize evaluation.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -g0\n");
|
log(" -g0\n");
|
||||||
log(" no debug information.\n");
|
log(" no debug information. the C API is unavailable.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -g1\n");
|
log(" -g1\n");
|
||||||
log(" debug information for non-optimized public wires. this also makes it\n");
|
log(" debug information for member public wires only. this is the bare minimum\n");
|
||||||
log(" possible to use the C API.\n");
|
log(" necessary to access all design state. enables the C API.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
log(" -g2\n");
|
log(" -g2\n");
|
||||||
log(" like -g1, and compute debug information on demand for all public wires\n");
|
log(" like -g1, and include debug information for public wires that are tied\n");
|
||||||
|
log(" to a constant or another public wire.\n");
|
||||||
|
log("\n");
|
||||||
|
log(" -g3\n");
|
||||||
|
log(" like -g2, and compute debug information on demand for all public wires\n");
|
||||||
log(" that were optimized out.\n");
|
log(" that were optimized out.\n");
|
||||||
log("\n");
|
log("\n");
|
||||||
}
|
}
|
||||||
|
@ -2832,13 +2837,13 @@ struct CxxrtlBackend : public Backend {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-Og") {
|
if (args[argidx] == "-Og") {
|
||||||
log_warning("The `-Og` option has been removed. Use `-g2` instead for complete "
|
log_warning("The `-Og` option has been removed. Use `-g3` instead for complete "
|
||||||
"design coverage regardless of optimization level.\n");
|
"design coverage regardless of optimization level.\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (args[argidx] == "-O" && argidx+1 < args.size() && args[argidx+1] == "g") {
|
if (args[argidx] == "-O" && argidx+1 < args.size() && args[argidx+1] == "g") {
|
||||||
argidx++;
|
argidx++;
|
||||||
log_warning("The `-Og` option has been removed. Use `-g2` instead for complete "
|
log_warning("The `-Og` option has been removed. Use `-g3` instead for complete "
|
||||||
"design coverage regardless of optimization level.\n");
|
"design coverage regardless of optimization level.\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -2900,9 +2905,12 @@ struct CxxrtlBackend : public Backend {
|
||||||
}
|
}
|
||||||
switch (debug_level) {
|
switch (debug_level) {
|
||||||
// the highest level here must match DEFAULT_DEBUG_LEVEL
|
// the highest level here must match DEFAULT_DEBUG_LEVEL
|
||||||
case 2:
|
case 3:
|
||||||
worker.debug_eval = true;
|
worker.debug_eval = true;
|
||||||
YS_FALLTHROUGH
|
YS_FALLTHROUGH
|
||||||
|
case 2:
|
||||||
|
worker.debug_alias = true;
|
||||||
|
YS_FALLTHROUGH
|
||||||
case 1:
|
case 1:
|
||||||
worker.debug_info = true;
|
worker.debug_info = true;
|
||||||
YS_FALLTHROUGH
|
YS_FALLTHROUGH
|
||||||
|
|
Loading…
Reference in New Issue