verilator/bin
Geza Lore d1eda66668
Deprecate clocker attribute and --clk option (#6463)
The only use for the clocker attribute and the AstVar::isUsedClock that
is actually necessary today for correctness is to mark top level inputs
of --lib-create blocks as being (or driving) a clock signal. Correctness
of --lib-create (and hence hierarchical blocks) actually used to depend
on having the right optimizations eliminate intermediate clocks (e.g.:
V3Gate), when the top level port was not used directly in a sensitivity
list, or marking top level signals manually via --clk or the clocker
attribute. However V3Sched::partition already needs to trace through the
logic to figure out what signals might drive a sensitivity list, so it
can very easily mark all top level inputs as such.

In this patch we remove the AstVar::attrClocker and AstVar::isUsedClock
attributes, and replace them with AstVar::isPrimaryClock, automatically
set by V3Sched::partition. This eliminates all need for manual
annotation so we are deprecating the --clk/--no-clk options and the
clocker/no_clocker attributes.

This also eliminates the opportunity for any further mis-optimization
similar to #6453.

Regarding the other uses of the removed AstVar attributes:
- As of 5.000, initial edges are triggered via a separate mechanism
  applied in V3Sched, so the use in V3EmitCFunc.cpp is redundant
- Also as of 5.000, we can handle arbitrary sensitivity expressions, so
  the restriction on eliminating clock signals in V3Gate is unnecessary
- Since the recent change when Dfg is applied after V3Scope, it does
  perform the equivalent of GateClkDecomp, so we can delete that pass.
2025-09-20 15:50:22 +01:00
..
redirect Copyright year update. 2025-01-01 08:30:25 -05:00
verilator Deprecate clocker attribute and --clk option (#6463) 2025-09-20 15:50:22 +01:00
verilator_ccache_report Copyright year update. 2025-01-01 08:30:25 -05:00
verilator_coverage Commentary: Changes update 2025-05-22 06:45:39 -04:00
verilator_difftree Copyright year update. 2025-01-01 08:30:25 -05:00
verilator_gantt Internals: Fix missing variable initializations (#6327) 2025-08-23 10:59:12 -04:00
verilator_includer Copyright year update. 2025-01-01 08:30:25 -05:00
verilator_profcfunc Commentary 2025-01-03 10:00:56 -05:00