Systemverilog UVM TPRGEDが出た uvm_warning 現象 同じAgentを継承して別々なEnvを作成して そのEnvをテストベンチに組み込むとTPRGEDのWarningが出ます top.sv package pkg1; `include "... 2022.08.12 SystemverilogUVM
Systemverilog distの重みづけの動作確認 SystemVerilog distでrand変数に重みづけする distでrand変数に重みづけができます。 動作確認してみます。 「:=」の動作確認 0:10%, 1:30%, 2:30%, 4:30% の出現確率で10,000回実... 2022.08.10 Systemverilog
Systemverilog SystemVerilog constraintでrand変数に制約をつける はじめに SytemVerilogのclassの変数はrandを付けることで乱数にすることができます。 rand変数はrandomizeメソッドで乱数が生成されます。 このとき、constraintで生成される乱数に制約... 2022.07.14 Systemverilog
Systemverilog ノンブロッキングとブロッキングでFFの動作が変わる話 SystemVerilog はじめに FFを作るとき、ノンブロッキング代入とブロッキング代入で多段FFの動作が変わります。 入力を2段のFFで受けて出力する回路でその動作を見ていきます。 ノンブロッキング nonblocking.sv ... 2022.07.07 Systemverilog
Systemverilog SystemVerilog Interfaceで回路を作成する 内部回路 はじめに Interfaceブロックの中に回路を作成してみます。 サンプルコード dut_if.sv Interfaceです。validがHighのときのdinが有効データになります。 interfa... 2022.07.04 Systemverilog
Systemverilog SystemVerilog Event変数を使ってみる -> はじめに あるシーケンシャルブロックから別なメソッド・シーケンシャルブロックを起動したいときにevent変数が便利です。 宣言する方法は以下です。 event <変数名>; 下記のように使用します。 ... 2022.07.02 Systemverilog
Systemverilog SystemVerilog Interfaceを使用して回路を作成する modport はじめに Interfaceのmodportの機能を使用して回路を作成してみます。 バスのプロトコルは、validがHighのとき、スレーブに設定したアドレスとaddrが等しいときのdataが有効になります。 サンプルコ... 2022.06.17 Systemverilog
Systemverilog SystemVerilog randとrandcの違い クラスのランダム変数 rand/randcの違い rand 変数の範囲すべてを網羅する前に同じ値が返ることもある。(一様分布) randc 変数の範囲すべてを網羅するまで同じ値は返らない。(ランダム循環) サンプルコード m... 2022.06.09 Systemverilog
Systemverilog SystemVerilog $left/$right/$low/$high/$size/$dimensions システムタスク はじめに SystemVerilogのLRMを読んでいると配列に関する面白い?システムタスクがあったので紹介します。 $left 配列の左側 bit a; int b; initial begin b = $l... 2022.06.02 Systemverilog
Systemverilog SystemVerilog defineマクロについて考える はじめに defineマクロが思ったよりいろんな使い方ができたので、試してみました。 サンプル1 値を置換 `define DEF_INIT 2 always_ff @(posedge clk, negedge rst... 2022.05.29 Systemverilog