でサブシーケンスが発生します。 "シーケンスA
が発生した場合、そのシーケンス内でシーケンスB
が発生します"。これどうやってするの?シーケンスが発生した場合、System-Verilogアサーション
私が主張使うことができると思っているだろう:
assert property (@(posedge clk) (A |-> (B within A));
をが、これは私の例のために動作するようには思えません。
私がいることを読んだ:リニアシーケンスは、連続するクロックの有限区間に沿って一致すると言われている
が最初にブール式が最初のクロック・ティックでtrueと評価されてダニ、第二ブール式が評価され2番目のクロックティックで真になり、最後のブール式を含めて最後のクロックティックで真と評価されます。
しかし、私はそれが最初になるようにしたいときにクロックチックが|->
最後のクロックティックの反対側に渡されたと思う。
私の特定の例は、私は私が十分に正の数を追加する場合はオーバーフローすることを期待アキュムレータであるので、私はA = (input == 1)[*MAX_SIZE]
とB = (output == 0)
をしたいので、ここB
は、長さ1の配列であることが問題を起こした場合、私は知りません。
私はシステムVerilogの新機能ですので、私のコードの他の部分が間違っているかもしれませんが、この例はどこにも見られませんでした。
'A内のB 'が完了してから' A'が完了するとどうなりますか?つまり、BがAからBまではAの中にあるはずであるから、BがAからAまで遷移するとすぐに完了することになります。 –
あなたは 'within A'部分を満足しておらず、シーケンスはまだマッチしません。 –
LRMの 'B within A 'は'(1 [* 0:$] ## 1 B ## 1 1 [* 0:$])がA'を意味するので、そうです。 –