問題タブ [uvm]

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.

0 投票する
1 に答える
1760 参照

verilog - SVA: 結果側から SV プロパティ チェックを無効にすることは可能ですか?

私は以下のようなSVプロパティを持っています:

以下のような主張があります。

上記のプロパティには、チェック全体でアサートされるべきではない信号s_ofがあります。しかし、ここでのシナリオは、この信号s_ofが含意演算子の結果の間にアサートされているということです。したがって、結果ステートメント中にシグナルs_ofがアサートされた場合でも、チェックを無効にする必要があります。これを達成する方法はありますか?

ありがとう。

0 投票する
1 に答える
2152 参照

system-verilog - UVM RAL では、reg はリセット値なしとして定義されていますが、「0」データを設定/更新してもバス トランザクションはトリガーされません。

ファイルにはral、次のようなものがあります。

実際の RTL では にR2Y設定されていることがわかりますが、これはデフォルトの値ですが、設定/更新メカニズムを使用してこの reg を書き込むと、R2Y のリセット値に等しい の場合 (でも)、RAL が処理するように見えるので、勝ったようです。この reg アクセスのバス トランザクションにはなりません。has_reset = 0'X'write data is 0has_reset = 0m_mirror == m_desired

それは理にかなっていますか?これらの種類のレジスタにどの値を設定しても、常にバス トランザクションが発生するはずだと思いました。

PS: ミラーリングされた値と目的の値は 2 状態ベクトルであり、reg フィールドでさえ「リセットなし」の値として設定され、reg フィールドの m_mirrored 初期値は 0 のままです。たとえば、RTL リセット値が「x」の場合、設計では 10 個のレジスタがあり、任意の数をランダムに選択してランダムな値で書き込みたい (もちろん、0 も有効な値です)。私は今のところ回避策を使用しています。「書き込み」ral メソッドですべての reg を 0 の値にフラッシュします。

0 投票する
1 に答える
2750 参照

system-verilog - uvm_mem をどのように初期化しますか?

someinputdata.txt次のように宣言され、レジスタ ブロック ( を拡張するクラス) のどこかでインスタンス化される uvm ベースのメモリに読み込まれる入力ファイル ( ) があるとしますuvm_reg_block

に入力ファイルをロードする組み込み関数があるかどうかはわかりませんuvm_mem

someinputdata.txtこのメモリにどのように効率的にロードしますか?

0 投票する
2 に答える
956 参照

verification - クロッキング ブロック使用時の出力スキュー

信号のエイリアシングのためにインターフェイスでクロッキング ブロックを使用しています。いくつかのビットを連結してバスを形成し、このバスをドライバーから駆動したいと考えています。たとえば、次のようになります。

これに関する問題は、私の主張の 1 つで、bus_intf.driver_bus.x_busを読み取る必要があることです。SV マニュアルに記載されているように、クロッキング ブロックからの出力変数をテストベンチで読み取るべきではありません。読み取った場合、シミュレータはエラー (または私の場合は警告) を吐き出します。

だから私はインターフェースを変更しました:

問題は、波形でx_busx_bus__oの 2 つの信号が作成されていることです。Questasim がこれを行った理由は理解できます。inout 宣言を分離して、両方のバージョンを表示できるようにするためです。しかし、現在の問題は、すべてのクロッキング ドライブが 1 クロック サイクル遅れていることです。そのため、DUT に接続されているx_bus__oはx_busより 1 クロック サイクル遅れています。これは、出力スキューが #0 であると明示的に述べているにもかかわらずです。

なぜこれが起こるのか分かりますか?私は何か間違ったことをしていますか、それとも誤解していますか?