我想说"如果有无限数量的输入,最终我得到输出",我该怎么做?
在剧本的其他部分,我想假设一个有限的输入供应,所以我不能写#34;假设有无限数量的输入"并在全球范围内持有。
到目前为止,我已写过属性:
property always_another_valid_input;
@(posedge clock) ##[1:$] valid_input;
endproperty
property foo;
@(posedge clock) always_another_valid_input |-> ##[0:$] bar == 1;
endproperty
assert property (foo);
但是当我运行此操作时出现错误:property instance always_another_valid_input is not allowed in sequence expression
。
如果我用非序列属性替换|->
的任一侧,那么我仍然会收到错误。它仅在双方都是非序列属性时才有效。
有解决这个问题的好方法吗?
答案 0 :(得分:1)
请参阅IEEE Std 1800-2012§16.12声明属性,更具体地说是§16.12.6 Implication ,您将看到|->
语法ussage是描述为:
property_expr :: =
...
sequence_expr|->
property_expr
sequence_expr|=>
property_expr
左侧必须是序列或序列表达式。即使该属性仅包含序列表达式,它也不能是属性。
如果您将always_another_valid_input
声明为sequence
而不是property
,则代码将编译
sequence always_another_valid_input;
@(posedge clock) ##[1:$] valid_input;
endsequence