在 SystemVerilog 断言(SVA)中,问号表达式(condition ? expr1 : expr2
)的语法和逻辑与 C 语言的三元条件运算符完全一致。它根据条件选择执行 expr1
或 expr2
,常用于动态选择信号、序列或属性。
1. 基本语法
// 格式:
condition ? true_expression : false_expression
-
condition
:布尔表达式,决定选择的分支。 -
true_expression
:若condition
为真,则选择此表达式。 -
false_expression
:若condition
为假,则选择此表达式。
2. 断言中的常见用途
(1) 动态选择信号值
根据条件选择要检查的信号:
property check_data_valid;
@(posedge clk)
mode_enable ? (data == expected_high) : (data == expected_low);
endproperty
逻辑解释:
如果 mode_enable 为真,检查 data 是否等于 expect