2017-03-08 3 views
0

私は「入力が無制限であれば結局は出力を得る」と言いたいのですが、どうすればいいですか?アサートでSystemVerilogシーケンスプロパティを使用するにはどうすればよいですか?

スクリプトの他の部分では、入力の量が限られていると仮定して、「入力が無制限である」と書いて、それをグローバルに保持することはできません。

これまでのところ、私が書いたのプロパティ:

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を。

|->のどちらかの側を非シーケンスプロパティに置き換えると、まだエラーが発生します。両側が非シーケンスプロパティである場合にのみ機能します。

これを回避する良い方法はありますか?

property_expr ::=
    ...
    sequence_expr |-> property_expr
    sequence_expr |=> property_expr

左側がなければなりません:

答えて

1

IEEE Std 1800-2012性質、より具体的に§ 16.12.6 含意を宣言§ 16.12 を参照してください、あなたは|->構文ussageは次のように説明されて表示されます配列または配列の発現。そのプロパティーにシーケンス式のみが含まれていても、プロパティーにすることはできません。あなたの代わりにpropertysequenceとしてalways_another_valid_inputを宣言すると

、あなたのコードがコンパイルされます

sequence always_another_valid_input; 
    @(posedge clock) ##[1:$] valid_input; 
endsequence
関連する問題