推荐答案
测试一下
题目
在时钟上升沿时采样到start有效开始,两个时钟周期后,信号“a”连续或者间断地出现3次为高电平,紧接着信号"stop"在下一个时钟周期为高电平,转换成断言描述,以下哪个是正确的
A. property p0: @(posedge clk) $rose(start) 1->##2 (a[->3])##1 stop: endproperty
B. property p0:
C. property p0:
D. property p0:
参考答案与知识点
参考答案
正确答案为A。
解析:题目要求描述一个序列:在时钟上升沿采样到start有效($rose(start))后,经过两个时钟周期(##2),信号“a”连续或间断地出现3次高电平,紧接着下一个时钟周期信号“stop”为高电平。在SVA中,重复操作符有多种:
- a[*3]表示a连续3个时钟周期为高(不允许间断),不符合“连续或者间断”的要求,故C错误。
- a[->3]称为goto repetition,表示a出现3次(允许间断),且最后一次出现后的下一个时钟周期必须开始后续序列,正好匹配题目中“紧接着信号stop在下一个时钟周期为高”的要求,故A正确。
- a[=3]称为non-consecutive repetition,也表示a出现3次(允许间断),但后续序列可以出现在最后一次后的任意多个时钟周期之后,不一定立即在下个周期,不符合“紧接着”,故D错误。
- B中的[=>3]不是有效的SVA操作符(标准中只有|=>表示重叠蕴涵,但无[=>3]用法),故B错误。
另外,所有选项均包含“1->”,可能为“|->”(非重叠蕴涵)的笔误,但影响一致,不影响本题对重复操作符的判断。因此A正确。
涉及知识点
- SVA序列重复操作符含义
- goto repetition ([->n])与non-consecutive repetition ([=n])的区别
- 连续重复[*n]的适用场景
- 蕴涵操作符与延迟时序控制