verilator/docs/guide
Geza Lore 5ab2bf1ec4
Optimize input combinational logic by change detection (#7784)
When a lot of combinational logic is driven from top level inputs,
work can be wasted evaluating that logic if the top level inputs don't
change.

This change adds an optimization by performing a change detect on the
top level inputs, and evaluate 'ico' logic only if the top level input
actually changed. This especially helps with --hierarchical/--lib-create
which runs the 'ico' of each sub-model in the eval settle loop.

This was observed to yield 40%+ run-time speedup on some partitioned
designs.

The added change detection is cheap, so it is emitted even if the 'ico'
region is small, and is on by default.

The optimization is only sound if the model itself does not write to the
top level inputs (otherwise the 'previous value' variables would be out
of sync, which are not updated by internal writes.). If we can detect a
top level input is written within the design, then for that input, we
fall back on always running the relevant logic. With --vpi we cannot
prove safety statically, so --vpi will disable this optimisation unless
explicitly enabled. (In which case it's the user's responsibility to not
write to top level inputs via the VPI.)
2026-06-15 05:42:00 +01: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 Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
conf.py Commentary: Changes update 2026-04-23 00:44:50 -04:00
connecting.rst Commentary (#7532) (#7533) 2026-05-04 18:01:55 -04:00
contributing.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
contributors.rst Commentary 2026-02-04 18:09:51 +00:00
control.rst Deprecate isolate_assignments attribute (#7774) 2026-06-13 19:40:29 +01:00
copyright.rst Commentary 2026-04-25 11:41:30 -04:00
deprecations.rst Deprecate `--structs-packed` (#7222). 2026-03-21 10:59:27 -04:00
environment.rst Commentary: Changes update 2026-06-05 18:36:55 -04:00
example_binary.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
example_cc.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
example_common_install.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
example_dist.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
example_sc.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
examples.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
exe_sim.rst Add `+verilator+log+file` (#4505) (#7645) 2026-05-27 14:33:19 -04:00
exe_verilator.rst Optimize input combinational logic by change detection (#7784) 2026-06-15 05:42:00 +01:00
exe_verilator_coverage.rst Commentary: Changes update 2026-06-05 18:36:55 -04:00
exe_verilator_gantt.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
exe_verilator_profcfunc.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
executables.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
extensions.rst Deprecate isolate_assignments attribute (#7774) 2026-06-13 19:40:29 +01:00
faq.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
files.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
index.rst Docs: Split control.rst from exe_verilator.rst. 2026-02-24 21:11:39 -05:00
install-cmake.rst Commentary (#7428) (#7432) 2026-04-15 17:45:48 -04:00
install.rst Commentary: Changes update 2026-05-30 15:16:41 -04:00
languages.rst Commentary: Changes update 2026-06-05 18:36:55 -04:00
overview.rst Add SPDX copyright identifiers, and get 'reuse' clean. No functional change. 2026-01-26 20:24:34 -05:00
simulating.rst Support covergroups, coverpoints, and bins (#784) (#7117) 2026-06-05 09:35:01 -04:00
verilating.rst Commentary 2026-04-25 11:41:30 -04:00
warnings.rst Deprecate isolate_assignments attribute (#7774) 2026-06-13 19:40:29 +01:00