Systemverilog Priority/Unique/Unique0の動作確認 SystemVerilog はじめに Priority, Unique, Unique0というものがあると聞いて、動作確認してみました。 使い方 if/caseの前に付けることが可能です。 priority if (<条件1>) <式1> else if (<条件2>... 2022.08.31 Systemverilog
Systemverilog 単純な条件式はif文より3項演算子を使った方がよいという話 Verilog はじめに RTLで、単純な条件式はif文ではなく3項演算子を使用した方がよいという話をどこかで聞いたがなぜだかわからなかったため、調べてみました。 3項演算子の方が実機での動作に近いから、ということかなと思いました。 ifの条件式と3項演算... 2022.08.20 Systemverilog
Systemverilog Pullup/Pulldown 実機とシミュレーションの違い はじめに FPGA開発では基板上で信号がPullup/Pulldownされている信号があります。 基板上でPullup/Pulldownされているということは、DUTには表現されません。 シミュレーションでは注意が必要で、テストベンチ側でP... 2022.08.19 Systemverilog
Systemverilog UVM print_topology()でuvm_componentの階層を表示する 使い方 uvm_top.print_topology(); でuvm_componentの階層をログに出力します。 サンプルコード top.sv module top; `include "uvm_macros.svh" import uv... 2022.08.13 SystemverilogUVM
Systemverilog UVM uvm_config_dbでsetした値をログに表示する uvm_config_db#()::dump(); 完結に、uvm_config_db#(<type>)::set()で登録した値は uvm_config_db#()::dump(); でログに表示されます。<type>は指定してもしなくて... 2022.08.12 SystemverilogUVM
Systemverilog UVM TPRGEDが出た uvm_warning 現象 同じAgentを継承して別々なEnvを作成して そのEnvをテストベンチに組み込むとTPRGEDのWarningが出ます top.sv package pkg1; `include "uvm_macros.svh" import uv... 2022.08.12 SystemverilogUVM
Systemverilog distの重みづけの動作確認 SystemVerilog distでrand変数に重みづけする distでrand変数に重みづけができます。 動作確認してみます。 「:=」の動作確認 0:10%, 1:30%, 2:30%, 4:30% の出現確率で10,000回実行します。 module top... 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 module dut( inpu... 2022.07.07 Systemverilog
Systemverilog SystemVerilog Interfaceで回路を作成する 内部回路 はじめに Interfaceブロックの中に回路を作成してみます。 サンプルコード dut_if.sv Interfaceです。validがHighのときのdinが有効データになります。 interface dut_if#( paramete... 2022.07.04 Systemverilog