1.25 “first_match”构造 任何时候使用了逻辑运算符(如“and”和“or”)的序列中指定了时间窗,就有可能出现同一检验具有多个匹配的情况。“first_match”构造可以确保只用第一次序列匹配,而丢弃其他的匹配。当多个序列被组合在一起,其中只需时间窗的第一次匹配来检验属性剩余的部分时,“first_match”构造非常有用。
开始比较难理解的是first_match构造,这个在语言手册上也有一个例子,例子如下: 我试着仿了一下,然后发现,加没加first_match的结果是一样一样的...代码如下: 在代码中添加了first_match和没添加做比较: 仿真结果一模一样... 不是说first_match没用。只能说指导手册LRM提供的案例是不适合这种情况的... 前面特意...
1.25 “first_match”构造 任何时候使用了逻辑运算符(如“and”和“or”)的序列中指定了时间窗,就有可能出现同一检验具有多个匹配的情况。“first_match”构造可以确保只用第一次序列匹配,而丢弃其他的匹配。当多个序列被组合在一起,其中只需时间窗的第一次匹配来检验属性剩余的部分时,“first_match”构造非常有用。
@(posedge clk) first_match(s30a or s30b); endporperty a32:assert property(p30); 对于p30来讲,对于每个起始点都有5中可能匹配的序列,first_match在得到一个成功匹配的点后,其他情况将不会再考虑匹配。 15throughout操作符 throughout操作符用于保证某些条件在整个序列的验证过程中一直为真。 (expression)thr...
first_match 构造 开始比较难理解的是first_match构造,这个在语言手册上也有一个例子,例子如下: 我试着仿了一下,然后发现,加没加first_match的结果是一样一样的... 代码如下: 在代码中添加了first_match和没添加做比较: 仿真结果一模一样... 不是说first_match没用。只能说指导手册LRM提供的案例是不适合这种...
这样写,first_match也是起作用的。 总结 当前者为某个区间取值,例如[1:5],如果没有|->或者|=>时,则匹配一次即可进入下一阶段或者断言成功,但是如果有|->或者|=>时,则必须保证所有情况都满足才能进入下一阶段,否则卡死。而first_match的作用就是在此时,使得只要出现一种满足情况即可进入下一阶段。
针对case2的问题,我们使用first_match强制line_en的序列使用第一次match,这样他的长度就和line_en一样长了,并且可以用intersect控制s1的长度了。 至此,intersect使用成功 0: 3.2使用throughout 3.2.1 case1 这里是使用非连续重复和使用无限时序窗同样的问题,何时算finish?实际上非连续重复和跟随重复都是用无限时序窗...
17.7.7 first_match操作17.7.8 序列上的条件17.7.9 包含在另外一个序列中的序列17.7.10 一个序列结束点的检测和使用17.8 处理一个序列中的数据17.9 在一个序列匹配时调用子程序17.10 系统函数17.11 声明特性17.11.1 蕴含17.11.2 特性的例子17.11.3 递归特性17.11.4 有限长度与无限长度行为17.11.5 Non-degeneracy...
e throughout s • First match: first_match(r) • Sequence methods • r.triggered • r.matched 46 November 4, 2013 HVC2013 47 Sequential Property • Strong sequential property • strong(s) is true in clock tick i iff sequence s with initial point i has a match • Sequence ...
first_match(s1 ##[1:2] s2); endsequence whichever of the(s1 ##1 s2)and(s1 ##2 s2)matches first becomes the result of sequencefms. Thethroughoutconstruct is an abbreviation for writing: (Expression) [*0:$] intersect SequenceExpr ...