非同期リセットを使用した広告フリップフロップの簡単な例を見てみましょう。
q は、クロックの次のエッジで d で更新する必要があります。これは、単純な含意演算子アサーションで記述できます。
ただし、アサーションでリセット動作をキャプチャする方法。私はいくつかをフォローしようとしました
assert @(posedge rst) (1'b1 |-> !Q);
assert @(posedge rst) (1'b1 ##0 !Q);
これらのアサーションは両方とも失敗します。最初の次のポーズエッジがないためだと思いますか?
assert @(posedge clk) ($rose(rst) |-> !Q);
パスしますが、フリー ランニング クロックが必要で、クロックの 2 つのエッジ間でアサートされます (最初の意図した動作ではありません)。
assert #0 (not (rst & Q));
私の理解では、これは正しい即時アサーションですが、波形ビューアーでこれが成功または失敗することはわかりません。さらに、最後のタイプのアサーションについてはカバーを書くことができないと思います。