在RTL仿真中评估SystemVerilog分配语句

问题描述

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

请考虑以下内容

enter image description here

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

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

我期望RTL仿真器应该在_T_6的值更改时对两个语句进行相等次数的评估。 RTL仿真器在仿真过程中如何处理这些语句?

解决方法

只要右侧的信号发生变化,连续赋值语句就会得到评估。因此,即使for-loop不变,条件表达式的非活动分支上的更改仍会导致求值。

如果_T_6是一个参数而不是一个信号,那么有些优化可能会减少条件表达式并消除一些求值。