SystemVerilog属性内a -> b运算符含义咨询
SystemVerilog中
a -> b运算符的含义说明 你已经了解[-> m]是非连续GoTo运算符,现在遇到的a -> b和断言里的蕴含运算符不是一回事,具体说明如下:
本质:逻辑条件运算符
a -> b等价于布尔表达式(!a) || b,直白来说就是:如果a为真,那么b必须为真;如果a为假,整个表达式直接判定为真,不会去检查b的状态。和重叠蕴含运算符
|->的区别
重叠蕴含运算符是|->,属于断言层面的控制运算符,用来关联前提条件和待检查的属性:前提 |-> 待检查属性,只有前提为真时,才会触发后续属性的检查;前提为假时,整个断言直接空过(vacuous pass)。
而->是纯逻辑运算符号,属于布尔表达式的组成部分,和&&、||是同一层级的运算符,用来构建复杂的判断条件。结合你的示例代码分析
在属性count_event的定义中,两处->都是逻辑条件判断:!capture_dly -> event_count == PerfCtr:当capture_dly为低电平时,强制要求event_count与PerfCtr相等;如果capture_dly为高电平,这个子表达式直接成立,不做相等校验。capture_dly -> event_count == PerfCtr:当capture_dly为高电平时,强制要求event_count与PerfCtr相等;如果capture_dly为低电平,这个子表达式直接成立。
内容的提问来源于stack exchange,提问作者CCRCCR
相关产品推荐
相关产品推荐

