問題タブ [system-verilog-assertions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
properties - ループ内で多数の SystemVerilog プロパティを生成できますか?
信号の 2 つのパック配列があり、特定の条件下で 2 つの配列が同一であることを証明するプロパティとそのプロパティに関連付けられたアサーションを作成する必要があります。私は正式に検証していますが、ツールは 1 つのプロパティで両方の完全な配列を証明できないため、個々の要素に分割する必要があります。ループを使用して配列の各要素のプロパティを生成する方法はありますか? 現時点では、私のコードは非常に冗長でナビゲートが困難です。
私のコードは現在次のようになっています。
これは、コードを次のようにしたい場合の一種です。
system-verilog - 最後のアサーションを回避する方法 (適切に理解していれば)
http://verificationguild.com/modules.php?name=Forums&file=viewtopic&p=5019に従って、特定のシグナルの期間を確認しています。この方法は完全に機能しますが、シミュレーションの最後にポーズエッジ (アクティブ エッジ) によってアサーションがキックされると、基本的に失敗します。これは、次のエッジがないためです。
次の例を検討してください: テストベンチ クロックは 2MHz で実行され、更新クロック (私がアサーションを書いたもの) は特定のテストで 5Hz (周期 200ms) で実行されています。シミュレーションが 500 ミリ秒実行されているとします。時間 400 ミリ秒で開始されたアサーションは失敗します。
この状況を回避するにはどうすればよいですか?
verilog - SVA (SystemVerilog アサーション): $assertoff と $assertkill の違い?
$assertoff;
SystemVerilog アサーションでは、との違いは何$assertkill;
ですか?
どちらもアサーションの実行を停止しているようです。
system-verilog - SVA: 含意 (|=>) とシーケンスの使用?
|=>
SystemVerilog アサーション プロパティは、含意演算子とシーケンスを使用して構築できます##1
例えば :
上記ではA ##1 B
、有効化シーケンス (前件) および実現シーケンス (後件) として使用しましたC ##1 D
。
次のように書き換えられなかった理由がわかりません。
|=>
シーケンスよりも含意を選択するのはいつ、そしてなぜ##1
ですか?
testing - System-Verilog によるシリアル テストベンチングとアサーション
system-verilog を使用してテストベンチしたい verilog モジュールのシリアル出力があります。
「SO」と呼ばれる出力は、たとえば 8'h9A の値を持つ正しいシリアル入力「SI」が与えられると、8'hC6 のようなものを出力します。
各信号を明示的に記述せずにシリアル I/O をエンコード/デコードする簡単な方法はありますか?
例えば:
ごちゃ混ぜのように見え、ほとんど読めません。私はただ書きたいだけです
しかし、明らかにこれは機能しません。アドバイスや例は大歓迎です。前もって感謝します。
verilog - 再帰プロパティでのキューの使用
1ビットのシリアルポートからのデータがあり、可変長のバイトの倍数で次のようになります。
各正のクロック エッジで、1 ビットが送信されます。何百ものシーケンスをテストベンチする必要があるため (将来的には数千になる可能性があります)、システム Verilog でアサーションを使用してプロセスを自動化したいと考えています。新しい 2012 標準では、キューをプロパティに渡すことができますが、再帰プロパティを介してキューを送信できますか? 階層参照に関するエラーを受け取りました。
これは私がこれまでに持っているものです(@Greg hereの助けを借りて):
テストベンチでアサーションを呼び出すのは、次のように簡単です。
エラーメッセージは次のとおりです。
長い可変長シリアル シーケンスをアサートするための他のアイデアを受け入れます。
system-verilog - 握手のためのSVA
ハンドシェイク手順の SVA アサーションを作成しようとしています。
私の検索では、次のことがわかりました。
ただし、「完了」信号は、有効なサイクルが高くなった後に何サイクルも来ることが許可されています。このステートメントで、valid がアサートされた後、valid がアサート解除されることなく、任意の時点で "done" がアサートされるようにするにはどうすればよいでしょうか?
system-verilog - Verilog アサーション: 含意の前提条件が満たされない
モジュールが無効になっている場合、次のメッセージが表示されます。
満たされない含意の前例
上記のメッセージをオフにするフラグ (またはその他の方法) はありますか?
system-verilog - 生成ブロック内でバインドを使用できますか
私は簡単な主張をしています:
私は通常、別のバインディング モジュールを使用してデザイン シグナルに接続します。
私は状況を持っています:dutには45ビットのバスがあり、各ビットは個別に生成/駆動されますが、それらはすべて同じアサーションに従います。
generate ブロック内で bind ステートメントを使用できますか? (0 から 44 の範囲) の代わりに .* を使用します。.a (in_bus[i]), .b (out_bus[i])