多数情况下二者的执行结果是一致的。但要注意,避免让条件判断结果出现X值,否则条件赋值符的结果会让你吃惊的(也会让你为此而调试查找问题)。原因在于,如果?:赋值中的条件结果为X值,那么变量被赋值时很可能有X值出现,具体原因可参考IEEE-1800 SystemVerilog-2017标准11.4.11节的内容。
关键词:
?:,if-else
避坑指南:
无论上述哪种条件执行方式,尽量使用case equality operators'==='、'!==',而不使用logical equality operators'=='、'!=',避免条件本身得出X结果。
参考代码: sv_condition_diff_if.sv
仿真结果:
阅读手记: