yosys/backends
whitequark ece25a45d4 cxxrtl: implement debug information outlining.
Aggressive wire localization and inlining is necessary for CXXRTL to
achieve high performance. However, that comes with a cost: reduced
debug information coverage. Previously, as a workaround, the `-Og`
option could have been used to guarantee complete coverage, at a cost
of a significant performance penalty.

This commit introduces debug information outlining. The main eval()
function is compiled with the user-specified optimization settings.
In tandem, an auxiliary debug_eval() function, compiled from the same
netlist, can be used to reconstruct the values of localized/inlined
signals on demand. To the extent that it is possible, debug_eval()
reuses the results of computations performed by eval(), only filling
in the missing values.

Benchmarking a representative design (Minerva SoC SRAM) shows that:
  * Switching from `-O4`/`-Og` to `-O6` reduces runtime by ~40%.
  * Switching from `-g1` to `-g2`, both used with `-O6`, increases
    compile time by ~25%.
  * Although `-g2` increases the resident size of generated modules,
    this has no effect on runtime.

Because the impact of `-g2` is minimal and the benefits of having
unconditional 100% debug information coverage (and the performance
improvement as well) are major, this commit removes `-Og` and changes
the defaults to `-O6 -g2`.

We'll have our cake and eat it too!
2020-12-14 01:27:27 +00:00
..
aiger use the new isPublic() in a few places 2020-09-14 12:43:18 +02:00
blif backends/blif: Remove unused vector of strings (#2420) 2020-11-16 09:31:48 +01:00
btor btor: Use Mem helper. 2020-10-21 17:51:20 +02:00
cxxrtl cxxrtl: implement debug information outlining. 2020-12-14 01:27:27 +00:00
edif use the new isPublic() in a few places 2020-09-14 12:43:18 +02:00
firrtl Formatting fixes 2020-11-23 10:55:09 +01:00
intersynth Replace "ILANG" with "RTLIL" everywhere. 2020-08-26 17:29:32 +00:00
json Use C++11 final/override keywords. 2020-06-18 23:34:52 +00:00
protobuf Use C++11 final/override keywords. 2020-06-18 23:34:52 +00:00
rtlil Replace "ILANG" with "RTLIL" everywhere. 2020-08-26 17:29:32 +00:00
simplec Use C++11 final/override keywords. 2020-06-18 23:34:52 +00:00
smt2 smt2: Use Mem helper. 2020-10-21 17:51:20 +02:00
smv Add missing gitignores for test artifacts 2020-08-31 19:43:51 +02:00
spice Use C++11 final/override keywords. 2020-06-18 23:34:52 +00:00
table Use C++11 final/override keywords. 2020-06-18 23:34:52 +00:00
verilog Add verilog backend option for simple_lhs 2020-11-25 18:21:41 +01:00