RTL 仿真中 SystemVerilog 赋值语句的评估

Evaluation of SystemVerilog assign statements in RTL simulation

我试图理解为什么当两个语句的条件表达式相同时,两个 SystemVerilog 赋值语句的语句覆盖率可能彼此不同。

考虑以下几点:

如图所示,这两个语句的条件表达式相同,即_T_6.

但是,语句的命中数(即语句覆盖率)不同(注意最左边的数字)。

我原以为只要 _T_6 的值发生变化,RTL 模拟器就应该对这两个语句求值的次数相等。 RTL模拟器在模拟过程中如何处理这些语句?

只要 right-hand-side 上的信号发生变化,就会对连续赋值语句进行求值。因此,即使 _T_6 没有变化,条件表达式的非活动分支上的变化仍然会导致计算。

如果 _T_6 是参数而不是信号,则有一些优化可能会减少条件表达式并消除一些评估。