The Syms class can contain a very large number of VeriltedScope instances if `--vpi` is used, all of which need a call to the default constructor in the constructor of the Syms class. This can lead to very long compilation times, even without optimization on some compilers. To avoid the constructor calls, hold VeriltedScope via pointers in the Syms class, and explicitly new and delete them in the Syms constructor/destructor. These explicit new/delte can then be automatically split up into sub functions when the Syms constructor/destructor become large. Regarding run-time performance, this should have no significant effect, most interactions are either during construction/destruction of the Syms object, or are via pointers already. The one place where we used to refer to VerilatedScope instances is when emitting an AstScopeName for things like $display %m. For those there will be an extra load instruction at run-time, which should not make a big difference. Patch 3 of 3 to fix long compile times of the Syms module in some scenarios. |
||
|---|---|---|
| .. | ||
| t | ||
| .gdbinit | ||
| .gitignore | ||
| CMakeLists.txt | ||
| Makefile | ||
| Makefile_obj | ||
| driver.py | ||
| input.vc | ||
| input.xsim.vc | ||