verilator/docs/guide
Geza Lore 80b08b71aa
Support NBAs to arrays inside loops (#5092)
For NBAs that might execute a dynamic number of times in a single
evaluation (specifically: those that assign to array elements inside
loops), we introduce a new run-time VlNBACommitQueue data-structure
(currently a vector), which stores all pending updates and the necessary
info to reconstruct the LHS reference of the AstAssignDly at run-time.

All variables needing a commit queue has their corresponding unique
commit queue.

All NBAs to a variable that requires a commit queue go through the
commit queue. This is necessary to preserve update order in sequential
code, e.g.:
 a[7] <= 10
 for (int i = 1 ; i < 10; ++i) a[i] <= i;
 a[2] <= 10
needs to end with array elements 1..9 being 1, 10, 3, 4, 5, 6, 7, 8, 9.

This enables supporting common forms of NBAs to arrays on the left hand
side of <= in non-suspendable/non-fork code. (Suspendable/fork
implementation is unclear to me so I left it unchanged, see #5084).

Any NBA that does not need a commit queue (i.e.: those that were
supported before), use the same scheme as before, and this patch should
have no effect on the generated code for those NBAs.
2024-05-03 07:45:49 -04:00
..
figures Verilator_gantt now shows the predicted mtask times, eval times, and additional statistics. 2021-09-23 22:59:36 -04:00
changes.rst Copyright year update 2024-01-01 03:19:59 -05:00
conf.py Commentary 2024-01-17 19:47:07 -05:00
connecting.rst Support vpiInertialDelay (#5087) 2024-05-01 18:56:50 -04:00
contributing.rst Copyright year update 2024-01-01 03:19:59 -05:00
contributors.rst Copyright year update 2024-01-01 03:19:59 -05:00
copyright.rst Copyright year update 2024-01-01 03:19:59 -05:00
deprecations.rst Add --json-only and related JSON dumping (#4715) (#4831). 2024-02-09 17:50:09 -05:00
environment.rst Add --valgrind switch (#4828) 2024-01-29 07:50:05 -05:00
example_binary.rst Copyright year update 2024-01-01 03:19:59 -05:00
example_cc.rst Copyright year update 2024-01-01 03:19:59 -05:00
example_common_install.rst Copyright year update 2024-01-01 03:19:59 -05:00
example_dist.rst Copyright year update 2024-01-01 03:19:59 -05:00
example_sc.rst Copyright year update 2024-01-01 03:19:59 -05:00
examples.rst Commentary: Add a link to Create-Binary Execution to the list of examples (#4802) 2024-01-04 10:47:22 -05:00
exe_sim.rst Add printing summary reports (#4909) (#5018) 2024-03-25 07:03:17 -04:00
exe_verilator_coverage.rst Copyright year update 2024-01-01 03:19:59 -05:00
exe_verilator_gantt.rst Copyright year update 2024-01-01 03:19:59 -05:00
exe_verilator_profcfunc.rst Copyright year update 2024-01-01 03:19:59 -05:00
exe_verilator.rst Add --localize-max-size option and optimization (#5072). 2024-04-30 19:46:54 -04:00
executables.rst Copyright year update 2024-01-01 03:19:59 -05:00
extensions.rst Fix tracing replicated hierarchical models (#5027) (#5029) 2024-03-30 16:00:52 -04:00
faq.rst Commentary (#4930) 2024-03-04 08:04:39 -05:00
files.rst Add --json-only and related JSON dumping (#4715) (#4831). 2024-02-09 17:50:09 -05:00
index.rst Copyright year update 2024-01-01 03:19:59 -05:00
install-cmake.rst Copyright year update 2024-01-01 03:19:59 -05:00
install.rst Add JSON AST dumps (#5020) 2024-03-28 07:32:18 -04:00
languages.rst Support 1800-2023 preprocessor ifdef expressions; add PREPROC zero warning. 2024-03-02 10:15:19 -05:00
overview.rst Support 1800-2023 keywords. 2024-03-02 10:15:19 -05:00
simulating.rst Add printing summary reports (#4909) (#5018) 2024-03-25 07:03:17 -04:00
verilating.rst Add printing summary reports (#4909) (#5018) 2024-03-25 07:03:17 -04:00
warnings.rst Support NBAs to arrays inside loops (#5092) 2024-05-03 07:45:49 -04:00